Детекція Аномалій: Автоенкодери, Isolation Forest, PyOD
Моніторинг сервера показує CPU 85%, пам'ять 91% — це норма у час пік. Або початок атаки? Класифікатор не допоможе: аномалії за означенням редкі, різноманітні та без міток. Supervised learning потребує прикладів аномалій у навчанні — не працює для невідомих невідомих.
Чому Детекція Аномалій Складна
Головна проблема — відсутність міток та екстремальний дисбаланс. Fraudulent-транзакції складають 0.01–0.1% від загального обсягу. Виробничі дефекти — 0.5–3%. Навіть наївний класифікатор "все нормально" дає accuracy 99.9% і жахливі метрики для аномального класу.
Друга проблема — визначення "нормальності". Нормально ли логіниться о 3 годині ночі? Залежит від історії користувача та часової зони. Нормально ли вібрація підшипника 2.3 мм/с? Залежить від режиму роботи та возрасту устаткування. Контекст критичний.
Третя — оцінка без ground truth. Нет стандартного test set, AUC-ROC рахується тільки якщо є хоча б трошки розміченого. На повністю неразмічених даних — тільки domain expert validation та непрямі метрики.
Методи та Інструменти
Isolation Forest — стандартний baseline для табличних даних. Ідея: аномалії ізолюються швидче при випадковому розділенні простору features. Добре працює при contamination 0.01–0.1, стійкий до масштабу, не потребує нормалізації. scikit-learn: IsolationForest.
Типова помилка: поставити contamination='auto' (дефолт scikit-learn) без розуміння даних. Auto-режим передбачає поріг -0.5, що не завжди відповідає реальній доліі аномалій. Краще: оцінити очікуваний відсоток аномалій через domain knowledge та задати явно.
PyOD (Python Outlier Detection) — бібліотека з 40+ алгоритмів під єдиним API. Включає: OCSVM, LOF, COPOD, ECOD, DeepSVDD, AutoEncoder. Зручно для швидкого порівняння методів на одних даних.
Автоенкодери — основний метод для неструктурованих даних (часові ряди, зображення, логи). Ідея: учимо сіть відновлювати нормальні дані, аномалії дають високу reconstruction error. Поріг аномальності — 95-й або 99-й перцентиль помилки на чистому валідаційному наборі.
Практична проблема: автоенкодери переучуються на "нормальних" паттернах, які все рівно трапляються рідко. Якщо у train set есть аномалії, модель може добре їх відновлювати. Рішення: ретельне очищення training data або VAE для кращої генералізації.
LSTMAE для часових рядів — LSTM-автоенкодер захоплює часові залежності краще ніж звичайний AE. Особливо ефективен для мультивариантних рядів (10+ сенсорів). PyTorch, обучение з MSELoss на скользящих вікнах.
Детально: Детекція Аномалій в Промислових Часових Рядах
Задача: вібраційні датчики на 12 насосах хімічного підприємства, 6 датчиків на насос, частота 100 Гц. Потрібно передбачити відмову за 4–24 години.
Архітектура:
Сирові дані → видобування features (RMS, куртозис, peak factor, FFT-амплітуди на резонансних частотах) → нормалізація по скользящому вікну 24ч → LSTMAE → reconstruction error → пороговая логіка + alerting.
Розмір вікна LSTM: 60 секунд (6000 точок при 100 Гц). Занадто мало — не захоплює повільні паттерни. Занадто більше — теряет чутливість до швидких змін.
Поріг аномальності: не фіксований, а адаптивний. threshold = mean(errors_last_7d) + 3 * std(errors_last_7d). При дрейфі нормального стану (плановий износ) поріг адаптується, уникаючи false positives.
Результат на 6-місячному пілоті: обнаружено 4 з 5 реальних предотказних станів (recall 0.8), 2 ложні тривоги за 6 місяців (precision 0.67). До впровадження: 3 незапланованих зупинки по $40k кожна.
Fraud Detection: Специфіка Фінансових Даних
Фінансові транзакції мають особливості, що ускладнюють детекцію:
- Concept drift: паттерни fraud змінюються швидше нормальної поведінки. Модель від півроку тому застаріла.
- Adversarial adaptation: продвинуті шахрайки адаптуються до обнаруження — роблять транзакції нормальноподібними.
- Часова залежність: серія нормальних транзакцій, потім один необичний переводу — це аномалія послідовності, не однієї точки.
Практичний стек: LightGBM з SMOTE-oversampling для supervised частини (по відомим fraud-кейсам) + Isolation Forest для unsupervised (нові паттерни). Об'єднуємо сигнали в ансамбль, фіналь — через пороги, налаштовані на приймальний FPR (0.1–1% транзакцій на ручну перевірку).
Оцінка Без Ground Truth
Коли немає ground truth, використовуємо:
- Synthetic anomaly injection: додаємо штучні аномалії (spike, level shift, point outlier) та дивимося, обнаруживает ли їх модель
- Expert validation: випадкова вибірка топ-K аномалій від моделі → review експертом → precision
- Business metric: зменшилось ли кількість пропущених інцидентів / ложних тривог після деплою
Процес Роботи
Починаємо з розуміння "нормальності" для конкретного бізнес-контексту — це розмова з domain experts, а не робота з даними. EDA, baseline Isolation Forest, швидка валідація на known incidents, при необхідности — більш складні методи.
Особлива увага — моніторинг самої моделі: distribution shift у features, дрейф anomaly scores, реакція на зміни в системі.
Терміни: baseline-система з одним методом — 2–4 тижні. Production-система з адаптивними порогами, alerting та моніторингом — 2–5 місяців.







