Точечные vs коллективные аномалии: возможные задачи и пути их решения

Партнерский пост к циклу Reliable ML про необычные значения в данных от Юрия Кацера, автора тг-канала @DataKatser



Часто термины аномалии и выбросы используют взаимозаменяемо (Aggarwal, 2016). Иногда аномалии используется как собирательный термин, означающий разного рода необычное поведение данных. Наглядно “собирательность” термина показана в этой статье, где аномалии делят по типу обработки и данных, количеству точек, разметкие и др. В данном посте мы сфокусируемся на классификации аномалий по количеству точек.



Типы аномалий

Во временных рядах бывает важно искать не отдельные выбросы, а группы последовательных аномальных точек. По количеству точек аномалии классифицируют на точечные и коллективные (Chandola, 2009):



- Точечная аномалия - отдельная точка, считающейся аномальной по отношению к остальной части данных.

- Коллективная аномалия - последовательность точек во времени, когда между началом и концом аномалии не существует нормальных данных.



В такой формулировке выбросы (outliers) - это именно точечные аномалии, отличающиеся от остальных данных (Aggarwal, 2016).



Если аномальность данных заметна только в контексте соседних точек, говорят о контекстуальных (contextual) аномалиях. Это могут быть и точечные, и коллективные аномалии.



Формулировки задач

В зависимости от типов аномалий можно сформулировать следующие математические задачи:



- Для точечных аномалий мы будем решать задачу бинарной классификации: отнесения каждой точки к нормальному или аномальному классу. Unsupervised-версия - поиск выбросов или кластеризация, или одноклассовая классификация.

- Для коллективных аномалий - задачу обнаружения точки изменения состояния (сhangepoint detection). Подробный разбор есть в этом докладе на pycon'е.



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



Онлайн vs офлайн changepoint detection

- Офлайн - важно детектировать точки изменения состояния оптимальным образом:



⁃ Доступна полная реализация временного ряда

⁃ По-другому называется задачей сегментации

⁃ Находится оптимальное (или близкое к оптимальному) решение



- Онлайн - важно детектировать точки изменения состояния как можно раньше:



⁃ Может быть Batch и Real-time

⁃ Приходит по 1 точке (или 1 batch) в каждый момент времени

⁃ Точка изменения должна быть детектирована с минимальным запаздыванием



Библиотеки для поиска аномалий во временных рядах



- Задача поиска выбросов. Библиотека PyOD. Помогает обнаружить в данных точечные аномалии или выбросы с помощью более 30 алгоритмов: от Isolation Forest до недавно представленных в научных статьях SOTA алгоритмов.

- Задача он-лайн поиска точек изменения состояния. Библиотека Prophet, которая прославилась решением задачи time-series прогнозов. В ней появились и инструменты для поиска аномалий..

- Задача офф-лайн поиска точек изменения состояния. Библиотека Ruptures. Реализованы основные методы, описанные в Truong, 2020.



Упоминания достойны еще несколько репозиториев:



⁃ Библиотека Kats

⁃ Библиотека Merlion

⁃ Библиотека Alibi Detect

⁃ Бенчмарк NAB



@Reliable ML & @DataKatser



#tech #data_centric_ai