Обнаружение аномалий во временных рядах нейросетями
Обнаружение аномалий в данных является важной задачей во многих областях, таких как мониторинг производственных процессов, кибербезопасность и финансовый анализ. Особенно это актуально для анализа временных рядов — последовательностей данных, собранных во времени. В этой статье мы рассмотрим, как применять нейросети для обнаружения аномалий во временных рядах.
Постановка задачи
Пусть у нас есть временной ряд данных {x1, x2, …, xn}. Наша задача — определить, являются ли некоторые значения xi аномальными, т.е. значительно отличающимися от общей закономерности данных.
Подходы к решению
Существует несколько подходов к решению этой задачи с помощью нейросетей:
- Автокодировщики. Обучаем сеть воспроизводить на входе то же самое значение. Нормальные данные будут кодироваться с малой ошибкой, аномальные — с большой.
- Рекуррентные нейросети (RNN). Моделируем зависимость последовательных значений друг от друга, что позволяет определить аномалии.
- Сети на основе GAN. Генеративно-состязательная сеть обучается моделировать нормальное поведение временного ряда.
Автокодировщики
Автокодировщик — это нейросеть, которая обучается воспроизводить на выходе то же значение, которое подано на вход. Такая сеть состоит из двух частей:
- Кодировщик — сжимает данные в низкоразмерное представление (код)
- Декодировщик — восстанавливает исходные данные из кода
Если на вход автокодировщика подать нормальное значение — ошибка реконструкции будет маленькой. А для аномальных данных — большой. Поэтому, обучив такую сеть, мы можем определять аномалии, анализируя ошибку реконструкции.
Основная формула для расчета аномальности:
anomaly_score = mean(|x - x'|)
где x — исходный временной ряд, x’ — реконструированный автокодировщиком.
Рекуррентные нейросети
Рекуррентные нейронные сети, такие как LSTM и GRU, хорошо подходят для моделирования последовательных данных. Они учитывают не только текущее значение, но и контекст — предыдущие значения.
Мы можем использовать RNN в двух режимах:
- Обучение на нормальных данных и определение аномалий по ошибке предсказания
- Обучение на аномальных данных для их распознавания
Первый подход чаще используется на практике.
Генеративно-состязательные сети
GAN состоит из двух нейросетей — генератора и дискриминатора. Генератор обучается создавать новые данные, похожие на те, что были в обучающей выборке. Дискриминатор обучается отличать настоящие данные от сгенерированных.
Мы можем использовать GAN следующим образом:
- Обучаем GAN на нормальных данных
- Подаем на вход GAN новые данные
- Если дискриминатор их отвергает как поддельные — значит, данные аномальные
Вопросы и ответы
Вопрос: Какие типы аномалий можно обнаружить с помощью нейросетей?
Ответ: Нейросети могут обнаруживать разные типы аномалий во временных рядах: выбросы, провалы, изменения тренда, сезонности и другие отклонения от нормального поведения данных.
Вопрос: Какие данные нужны для обучения нейросети?
Ответ: Для обучения обычно требуется выборка, содержащая преимущественно нормальные данные. Также полезно добавить некоторое количество подтвержденных аномалий.
Вопрос: Как оценить качество обнаружения аномалий нейросетью?
Ответ: Используются стандартные метрики: точность, полнота, F1-мера. Для этого нужны тестовые данные с подтвержденными аномалиями.