Как мы развиваем библиотеку для анализа данных с помощью байесовских сетей

Наши коллеги из Центра «Сильный искусственный интеллект в промышленности» и Лаборатории композитного ИИ ИТМО разрабатывают открытый фреймворк для разностороннего анализа данных при помощи байесовских сетей. Он пригодится прикладным специалистам, которые сталкиваются с задачами анализа и нуждаются в интерпретируемости используемых моделей. В этой статье рассказываем об идее и о том, кто занимается ее реализацией.

Концептуальная схема предлагаемого решения

Концептуальная схема предлагаемого решения

Всем привет! Я Ира, кандидат физико-математических наук, старший научный сотрудник ИТМО. 

В этой статье расскажу о нашем проекте ― прикладном инструменте для наглядного анализа данных на основе байесовских сетей и каузальных моделей. В 2024 году с этой идеей мы выиграли «Код ИИ» ― конкурс Фонда содействия инновациям. Сейчас в рамках этого гранта мы создаем открытый фреймворк, который поможет решать популярные задачи анализа данных ― искать и детектировать аномалии в данных, отбирать и генерировать признаки для предиктивных задач, создавать синтетические данные, объяснять результаты работы ML-моделей. 

Простейший пример применения ― решение задач, когда у вас не хватает данных. Предположим, у нас есть данные, но их немного и в них присутствует дисбаланс классов. В таком случае нам неплохо бы иметь генеративную модель, которая сможет обучиться на небольшом количестве исходных данных и размножить их, устранив также дисбаланс классов, чтобы в итоге получить качественный датасет, на котором потом можно решить задачи предиктивной аналитики. Наш фреймворк поможет решить такую задачу, поскольку байесовские сети не требовательны к объему исходных данных и могут эффективно генерировать синтетику. 

Возможно, мы будем одними из первых, кто объединит все преимущества байесовских сетей и каузальных моделей для анализа данных в один «многорукий» инструмент для целого спектра задач, так что прикладным специалистам не придется тратить время на выбор и стыковку разных библиотек.

Но обо всём по порядку. Началось всё с научных исследований. 

Мы (а помимо меня в нашей команде еще три человека ― инженеры и аспиранты факультета цифровых трансформаций ИТМО Юрий Каминский и Илья Купцов, а также инженер и магистрант этого же факультета Роман Нетроголов) уже некоторое время работаем в NSS Lab в исследовательском центре «Сильный ИИ в промышленности» и занимаемся вероятностными методами в искусственном интеллекте. 

Долгое время мы были сосредоточены на байесовских сетях. Это инструмент, который позволяет представить данные в виде графа ― эдакого многомерного распределения, с помощью которого можно решать различные прикладные задачи, например:

  • заполнять пропуски в данных,  

  • генерировать синтетические данные,  

  • искать аномальные значения,  

  • отбирать признаки для предиктивных задач и так далее. 

Кроме того, в отличие от других моделей, используемых в глубоком обучении, байесовская сеть интерпретируемая. Например, байесовская сеть позволяет отобрать признаки на основе понятных принципов условной независимости, тогда как модели глубокого обучения, такие как нейронные сети, часто рассматриваются как «черные ящики», поскольку они используют сложные нелинейные преобразования на нескольких слоях. Это приводит к тому, что отношения между признаками и целевой переменной неявны и нелегко интерпретируются. В отличие от подобных моделей, графическое представление байесовских сетей хорошо понятно прикладным специалистам, работающим с данными практически в любых областях, ― оно позволяет понять, какие признаки и значения данных оказали наибольшее влияние на ошибку модели машинного обучения.

Преимущество БС и каузальных моделей по сравнение с классическими ML-подходами и как это влияет на конечную эффективность любой системы поддержки принятия решений

Преимущество БС и каузальных моделей по сравнение с классическими ML-подходами и как это влияет на конечную эффективность любой системы поддержки принятия решений

Для решения своих задач каждый из нас строил и обучал байесовские сети. И мы собрали этот опыт в библиотеке BAMT (Bayesian Analytical and Modelling Toolkit). Она лежит в открытом доступе. BAMT уже успели применить при решении нескольких интересных задач, например, искали аномалии в данных уровня льда в Арктике. 

Сравнение двух подходов для поиска аномалий в данных уровня льда в Арктике. Подход с применением байесовских сетей (BN) дает более точный результат.

Сравнение двух подходов для поиска аномалий в данных уровня льда в Арктике. Подход с применением байесовских сетей (BN) дает более точный результат.

Данные мониторинга ледовой обстановки ― изображения со спутника ― могут содержать ошибочные пиксели. Такие аномальные значения плохо сказываются на качестве предсказаний, построенных на этих данных. И в этом случае, так как в данных присутствует неопределенность, как раз хорошо может себя показать именно вероятностный подход на байесовских сетях. С его помощью можно отфильтровать аномальные значения уровня льда перед использованием данных в последующих предиктивных задачах. 

BAMT помогает в решении задач на этапе построения и обучения байесовских сетей. Но код, касающийся непосредственно анализа данных, каждый раз приходилось писать с нуля. Поэтому у нас давно назревала идея создать более функциональный программный продукт именно прикладного уровня.

Прикладной инструмент как расширение библиотеки обучения

Итак, мы взялись создать фреймворк applyBN, который на основе нашей же библиотеки BAMT позволит решать конкретные задачи анализа данных ― те, для которых чаще всего используются байесовские сети. Библиотеку можно было использовать в своем проекте, но требовался большой объем дополнительной разработки. Здесь же мы хотели сделать инструмент, который можно применить как есть. Так прикладным специалистам можно будет меньше времени тратить на подготовку средства анализа.

Сейчас мы приступили к разработке на Python с базовым набором пакетов. Предполагаем представить первую версию продукта в начале следующего года. Какого-либо GUI для инструмента не предполагается ― это будет в чистом виде программная библиотека.

В процессе разработки подобного фреймворка необходимо решать две задачи ― исследовательскую (когда отвечаем на вопрос, какой алгоритм надо использовать) и имплементационную (когда отвечаем на вопрос, как реализовать и лаконично встроить в продукт). Сейчас наша команда в основном находится на этапе решения исследовательских задач, чтобы в итоге в продукт попали действительно лучшие алгоритмы для каждого модуля. 

Аналоги

Естественно, мы анализировали востребованность идеи. В области байесовских сетей не так много хороших решений. И очень малая доля из них реализована с открытым исходным кодом, с нормальной документацией и поддерживаемым репозиторием. В основном подобные продукты разрабатывают корпорации, но такие проекты по большей части закрыты. Есть и частные, открытые инструменты, но их гораздо меньше. 

Пожалуй, единственный пример продукта от корпорации, который распространяется по принципу open source, ― Microsoft DoWhy. Мы его тестировали, это очень мощное решение, с которым работают большие команды. Как и у нашего продукта, в его основе лежат байесовские сети и каузальные модели. Однако возможностей DoWhy нам не хватило. Он работает не со всеми типами данных и умеет решать далеко не все задачи, которые нам нужны.

Небольшие частные инструменты, как правило, заточены только под одну конкретную задачу, обычно узко специализированную. Например, предназначены только для анализа временных рядов или только для табличных данных. Чаще всего такие инструменты работают по принципу черного ящика, поэтому их сложно использовать тем, кто не входил в научную группу, непосредственно разработавшую эту библиотеку. 

Прикладному специалисту сложно найти и применить подходящий инструмент в своем проекте. Условно, поиск предлагает пять библиотек с похожим описанием, но чтобы выяснить, какая из них удовлетворяет условиям проекта, нужно разобраться с API, требованиям к программным пакетам и так далее. И так для каждой найденной библиотеки. То есть еще до перехода к задаче нужно разобраться со всеми конфликтами, а только потом выяснить, удастся ли с помощью инструмента что-то решить. 

Мы хотим собрать лучшее из всех подходов, минимизировав недостатки. Делаем открытое решение под целый спектр задач с поддержкой самых разных типов данных. Все это собираем на едином алгоритмическом ядре, чтобы прикладным специалистам не пришлось разбираться в 10 разных API для разностороннего анализа своих данных.

Понятно, что наш прикладной инструмент ― это не продукт уровня корпораций. Но по некоторым решениям, как мы предполагаем, он будет выигрывать даже у них. 

Например, в продукте разрабатывается модуль объяснения результатов предсказания моделей машинного обучения на основе каузальных моделей (им занимается Юрий Каминский, так как его аспирантская НИР связана с каузальными моделями). Каузальные модели ― это родственники байесовских сетей и по сути от них произошли. Каузальные модели превосходно объясняют результаты моделей машинного обучения, поскольку выходят за рамки поверхностных корреляций, чтобы раскрыть истинные базовые механизмы, которые управляют результатами. Именно поэтому они чаще всего используются в областях, где ценится надежное понимание причинно-следственных связей (например, в медицине) и именно поэтому они используются в нашем фреймворке. Этого нет в решении от Microsoft. 

Мы стараемся глубже погружаться и в другие прикладные задачи: в нашей команде обязанности делятся по тематическому принципу в соответствии с исследовательским направлением, то есть каждую прикладную задачу курирует свой специалист, глубоко с ней знакомый и готовый добавить в продукт хорошие и проверенные алгоритмы, поскольку достаточно исследовал эту область в рамках своей НИР:

  • Илья Купцов отвечает за модуль генерации синтетики и отбора признаков с помощью байесовских сетей;

  • Роман Нетроголов разрабатывает модуль детекции аномалий на основе байесовских сетей.

«Код ИИ»

Сформулированная концепция нового прикладного инструмента по всем параметрам подошла под условия VI очереди конкурса «Код ИИ», который проводил Фонд содействия инновациям. Этот конкурс популяризует создание библиотек в области ИИ, а open source ― один из ключевых критериев при отборе заявок. 

Идея фреймворка вошла в число победителей. Мы получили грант, тем самым обеспечив финансирование работы команды разработки. 

Один из главных плюсов конкурса ― формирование сообщества энтузиастов открытого кода в области ИИ. Отчасти мы уже ощутили этот плюс на себе: общаемся с другими финалистами, можем обсуждать применяемые решения и подходы. Это помогает нам быстрее развивать свой проект.

А еще «Код ИИ» ― это опыт, который получают люди и команды, участвующие в разработке опенсорсных библиотек. За счет этого опыта их проекты потом могут трансформироваться в более серьезные решения.

Когда продукт будет готов, мы выложим его в открытый доступ в соответствии с общей ориентацией ИТМО на open source. Будем рады комментариям со стороны сообщества.

Пока планов по монетизации библиотеки нет. Но мир open source подсказывает возможные пути развития. Библиотека может быть доработана до пожеланий крупного заказчика. Но, конечно, наша группа ориентируется на науку и это надо учитывать― библиотеку есть смысл дорабатывать под исследовательские задачи, а не просто прикручивать тот или иной алгоритм анализа данных.

Следить за новостями проекта и задавать вопросы по разработке можно в телеграм-канале «Научный опенсорс». Это канал сообщества ITMO.OpenSource, посвященного созданию и использованию наукоемких open-source проектов, в том числе в области AI/ML.

© Habrahabr.ru