Помимо PCA: основанный на графах подход к обнаружению аномальных паттернов

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

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

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

ДАННЫЕ

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

Мы не ищем точечные одномерные аномалии. Мы ищем многомерные аномалии, которые возникают, когда базовые отношения рядов меняются со временем или принимают неожиданное поведение.

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

Наша цель — разработать решение для обнаружения аномалий, которое сможет правильно указывать на изменения в отношениях объектов. Давайте начнем применять подход, основанный на PCA.

ОБНАРУЖЕНИЕ АНОМАЛИЙ PCA

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

Выявить аномалии с помощью PCA несложно. Мы используем возможности сжатия PCA, чтобы уменьшить исходную размерность данных. Таким образом, мы сохраняем только значимые взаимодействия, уменьшая количество функций и избавляясь от шума. Операция уменьшения размерности полностью обратима. Мы можем без особых усилий вернуться к исходной форме данных, используя только изученные связи в исходном наборе данных.

Мы можем рассчитать ошибку реконструкции, чтобы увидеть и обобщить качество операции сжатия.

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

В нашем имитационном исследовании мы видим, как ошибка реконструкции увеличивается в соответствии с искусственным аномальным периодом (как по выборкам, так и по признакам).

ОБНАРУЖЕНИЕ АНОМАЛИЙ DBSCAN

Обнаружение аномалий в многомерной системе при наличии последовательной корреляции является горячей темой. Существует множество подходов к решению задачи (например, Обнаружение аномалий в многомерных временных рядах с помощью VAR). Мы также можем представить коррелированную систему, например сеть. Ряды составляют узлы, а степени корреляции между ними в заданном временном интервале устанавливают их связь.

Чтобы разработать нашу методологию на основе графов, в качестве первого шага нам просто нужно разделить данные на временные окна одинакового размера.

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

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

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

В итоге вся процедура выявляет изменение внутренней динамики системы в соответствии с аномальным периодом.

КРАТКОЕ СОДЕРЖАНИЕ

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

ПРОВЕРЬТЕ МОЙ РЕПО GITHUB

Оставайтесь на связи: Linkedin