Dive into Time-Series Anomaly Detection: A Decade Review (link)
📌 Обзорная статья, которая собрала ключевые наработки в области поиска аномалий за последние 10 лет. Так как по работе пришлось плотнее заняться временными рядами, думаю написать несколько постов по этой теме.
📈 Что такое временные ряды и аномалии?
- Временные ряды 𝑋(𝑡) это данные, в которых значения зависят от времени. Пример – курс валют
- Поиск аномалий – это обнаружение отклонений, при которых временной ряд ведёт себя существенно иначе, чем ожидается. Это полезно для:
• Мониторинга и прогнозирования технического обслуживания оборудования.
• Выявления мошенничества (fraud detection).
• Обнаружения DDoS-атак через анализ сетевого трафика
🏷 Виды аномалий
- Точечные выбросы (point anomalies) – одиночные аномальные значения
- Контекстные аномалии (contextual anomalies) – выбросы, которые кажутся аномальными только в определённом окне (например, аномально высокая температура зимой)
- Sequence-based аномалии – аномальные последовательности данных
📊 Типы и особенности временных рядов
- Univariate vs Multivariate – одиночный или множественные временные ряды
- Тренды и сезонность
- Циклические флуктуации (Cyclical fluctuations)
- Шумы (Irregular variations)
🔬 Виды детекции аномалий
- Supervised – обучающая выборка содержит стандартные и аномальные кейсы
- Unsupervised – обучение без разметки
- Semi-supervised – известны только стандартные временные ряды, без аномалий
- Self-supervised – используются дополнительные сигналы для обучения без явной разметки
В целом все методы стремятся спрогнозировать ожидаемое значение в данный момент и, если оно сильно отличается от фактического, то можно говорить об аномалии.
📌 Подходы к детекции аномалий
Классические методы
Используются прогнозирующие модели для дальнейшего сравнения план/факт:
- Деревья решений и бустинг (например, LightGBM, XGBoost)
- Рекуррентные сети (RNN) с LSTM и трансформерами
- Методы SVM (вспомнили даже его 🫡)
- Скользящее среднее 😐
Нестандартные методы
🔹 Reconstruction-based методы. Используют автоэнкодеры, где временной ряд:
1. Сжимается в латентное пространство энкодером
2. Восстанавливается декодером
3. Если получившиеся временной ряд сильно отличается от ожидаемого => аномалия
Популярные методы:
- Autoencoder-based (Buzz, EncDec-AD и т. д.).
- GANs и диффузионные сети (в статье почему-то забыты, хотя, например, в статье Time Series Anomaly Detection using Diffusion-based Models утверждают, что они SOTA - верим?)
🔹 Clustering-based методы. Как можно догадаться аномалии ищутся с помощью кластеризации:
- Distance-based (по расстоянию).
- Density-based (по плотности).
В статье упоминается 10+ примеров, но суть одна:
1. Временной ряд разбивается скользящим окном.
2. Каждый кусок сравнивается с остальными.
3. Используется кластеризация (например, DAG, деревья).
Популярные методы:
- Discord Detection using Matrix Profile (DAD).
- Adjacent Mean Difference (AMD).
- KNN – за счёт малого количества гиперпараметров оказался одним из лучших. Проверил на игрушечных кейсах (см. пример ниже)
📏 Метрики
Часто используются адаптированные метрики классификации:
- ROC AUC и его вариации, есть свои адаптации под каждый тип аномалий
- Precision и Recall
- True Positive Rate (TPR) и другие
📊 Бенчмарки. Популярные датасеты:
- NAB, KDD21, TODS, TimeEval и другие.
Однако в статье не приводится, какие методы лучшие
🎯 Рекомендация. Лучше строить бейзлайны на скользящих средних и бустингах и только потом пробовать deep learning
Post #86
1.05K

- 👍 9
- 🔥 5
- ❤ 2
- 🙏 1