В одном из предыдущих материалов мы рассказали о фреймворке для AutoML и библиотеке алгоритмов выбора признаков. На этот раз продолжаем делиться разработками специалистов, магистров и аспирантов Университета ИТМО и представляем вашему вниманию парочку open source инструментов для работы с данными. Как обычно — говорим простыми словами и делимся ссылками на публичные репозитории, предоставленными авторами проектов.
BAMT
Это — библиотека для продвинутого обучения байесовских сетей и анализа данных на основе байесовских сетей, разработанная в НЦКР ИТМО. В первом случае она помогает разрешить ситуацию, когда экспертные знания, необходимые для структурирования сети [ориентированной вероятностной модели, позволяющей моделировать многомерные распределения данных] оказываются недоступны. Для устранения этой проблемы производят обучение «из данных». BAMT — работает с дискретными и непрерывными их типами. Во втором use-кейсе — инструмент позволяет восстанавливать пропуски, извлекать информацию о зависимостях, выделять аномальные значения и генерировать синтетические данные.
Обычно с решениями вроде BAMT сталкиваются специалисты, которые планируют проанализировать многомерные данные, чтобы разобраться в зависимостях, пробуют смоделировать какую-то систему или хотят сформировать синтетические данные для определенных задач. Так, байесовские применяются среди биологов для моделирования данных о генах. Еще BAMT можно использовать в учебных целях, чтобы проиллюстрировать моделирование многомерных распределений.
Как говорят разработчики, среди аналогов BAMT выделяется разнообразием того, что эта библиотека содержит «под капотом»: от стандартных алгоритмов, как в библиотеке pgmpy, до продвинутых вроде параметрического обучения сети на основе смеси гауссовых распределений и структурного обучения сети на основе функции mutual information для смешанных данных. Также для структурного обучения в BAMT есть эволюционный алгоритм, основанный на работе операторов, разработанных для фреймворка FEDOT. Еще в библиотеке есть модули подготовки данных для обучения, заполнения пропусков с помощью байесовской сети и визуализации.
Если говорить о кейсах и «боевом» тестировании, с BAMT уже успели поработать достаточно крупные заказчики вроде российских вертикально-интегрированных нефтяных компаний, где библиотеку применили для анализа и моделирования данных о месторождениях и для поиска месторождений-аналогов. Однако апробация функционала в ряде других сфер со своей спецификой все еще продолжается — авторы проекта открыто делятся кодом, документацией [репозиторий проекта], приветствуют обратную связь, вопросы и предложения по сотрудничеству.
EPDE
Это — библиотека для идентификации структуры данных в виде дифференциальных уравнений в частных производных, подготовленная в НЦКР ИТМО. Она позволяет строить модель с помощью эволюционных алгоритмов. При этом она может эволюционировать, исходя их небольшого количества первичных блоков.
Таким решением пользуются по большей части ученые в прикладных областях — те, кто хорошо знаком с различными типами дифференциальных уравнений и подходами к их анализу. Для них EPDE дает возможность изучить модель данных с помощью привычного инструмента — даже если условные веса нейронной сети ничего не скажут о какой-либо модели, то в дифференциальном уравнении есть шанс узнать что-то знакомое — например, с необычными модификациями. Последние как раз зачастую и определяют специфику данных, плюс — могут служить для дальнейшего улучшения существующих моделей в той или иной области.
Мы хотели бы использовать что-то готовое, но на деле выясняется, что проще сделать что-то с нуля. Связано это с тем, что готовые инструменты заточены на конкретную область, уравнение, тип граничных условий. Численное дифференцирование — собственная схема на основе нормализации сеток и локальной интерполяции.
Решение ДУ — собственный метод на основе методов оптимизации и нейронных сетей. Похожее есть на Julia, но на Python получилось быстрее. Эволюционная оптимизация — есть deap, но кастомизация сравнима с разработкой чего-то похожего с нуля.
— разработчики EPDE об использовании уже готовых компонентов.
Если говорить о потенциальных преимуществах по сравнению с аналогами, то команда проекта выделяет «шумоустойчивость» и разнообразие моделей. Для более детального понимания разработчики рекомендуют прочитать научные статьи, собранные в разделе EPDE framework вот тут. И, конечно же, делятся ссылкой на репозиторий библиотеки. Еще они открыты для обсуждения задач из прикладных областей и обратной связи относительно кодовой базы.
У нас в блоге на Хабре: