Сквозное обнаружение неконтролируемых выбросов

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



Библиотека pyfbad — это комплексный неконтролируемый пакет обнаружения аномалий. Этот пакет предоставляет исходные коды для всех упомянутых ранее шагов мл-потока. Например, данные можно считать из файла, MongoDB или MySQL с помощью специальных фильтров с помощью pyfbad. Эти считанные данные могут быть подготовлены для модели с помощью методов предварительной обработки. Модель можно обучать с использованием различных моделей машинного обучения, таких как Prophet или Isolation Forest. О результатах обнаружения аномалий можно сообщить по электронной почте или через slack. Другими словами, весь цикл проекта можно выполнить с помощью исходных кодов, предоставляемых в рамках pyfbad, без использования какой-либо другой библиотеки.

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

Как видно на рисунке 1, у pyfbad есть 4 основных модуля: база данных, функция, модель и уведомление. Эта структура почти стандартизирована в проектах по науке о данных с помощью Drivendata от Cookiecutter. Организацию проекта можно увидеть на рисунке 2.

База данных:

Этот модуль имеет сценарии для чтения данных из различных баз данных или файлов. На данный момент добавлена ​​поддержка баз данных MySQL и MongoDB. Особенно в MongoDB использование шагов фильтрации через Pyfbad становится более удобным для пользователя. Следующий фрагмент может дать представление о том, как использовать pyfbad для операций с базой данных.

Функция:

Концепция обнаружения аномалий переменных временных рядов требует двух типов данных. Один из них — это данные непрерывного времени, а другой — основные данные, которые мы хотим обнаружить аномалии. Эти два данных должны быть извлечены из необработанных данных в качестве данных модели. Pyfbad обеспечивает извлечение данных модели из необработанного фрейма данных с дополнительной фильтрацией. В следующем фрагменте показано, как использовать pyfbad для этой операции.

Модель:

Этот модуль имеет возможность обучать данные модели с помощью различных алгоритмов. Как можно понять, Pyfbad предназначен для обнаружения аномалий в данных временных рядов. В этом смысле это дает возможность использовать модели, которые можно применять быстро и надежно. На данный момент добавлена ​​поддержка моделей Facebook Prophet и Isolation Forrest. В качестве примера того, как Prophet реализован с помощью pyfbad, можно увидеть из приведенного ниже фрагмента кода.

Уведомление:

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

Реализация!

Давайте сделаем быструю реализацию, чтобы лучше понять, как можно использовать Pyfbad. Полный блокнот можно найти на Kaggle здесь. Здесь давайте просто посмотрим на результаты каждого шага.

После импорта модуля набора данных в библиотеку pyfbad необработанные данные можно прочитать из файла в формате CSV. Необработанные данные выглядят так, как показано на рисунке 3.

В этом наборе данных фактически нет необходимости в этапах предварительной обработки для извлечения готового к обучению набора данных из необработанного набора данных. Однако на рисунке 4 видны различия между начальным и конечным фреймом данных.

Алгоритм Prophet использовался для обучения модели в этой реализации. После этапа обучения обнаруженные аномалии можно показать на рисунке 5.

Заключение

Pyfbad хорошо работает с большинством популярных баз данных, таких как MongoDB и MySQL, но все же может быть добавлена ​​поддержка различных типов баз данных. В настоящее время он использует самые известные модели, такие как FB Prophet и Isolation Forrest, но все еще нуждается в большем количестве алгоритмов машинного обучения. Команда, стоящая за проектом, стремится учиться, увлечена исследованиями и разработками и очень амбициозна в изучении новых технологий. Поэтому можно смело сказать, что это первая версия Pyfbad. Продолжаются исследования как для устранения упомянутых недостатков, так и для того, чтобы сделать Pyfbad очень всеобъемлющей неконтролируемой библиотекой обнаружения аномалий.

Создатели пакетов

Рекомендации