Какие знаешь методы обнаружения аномалий во временных рядах?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Методы обнаружения аномалий во временных рядах
Обнаружение аномалий в временных рядах — критическая задача в ML, требующая понимания как статистических методов, так и deep learning подходов.
Статистические методы
ARIMA и авторегрессионные модели — классический подход для одномерных рядов. Модель обучается на нормальных данных и вычисляет остатки (residuals). Значения, отклоняющиеся на 3 стандартных отклонения от предсказания, считаются аномалиями.
Z-Score и IQR — простые пороговые методы. Z-score =(x - μ) / σ. Если |z| > 3, точка аномальна. Межквартильный размах (IQR) определяет выбросы за границами [Q1 - 1.5IQR, Q3 + 1.5IQR].
Изолирующие леса (Isolation Forest) — неконтролируемый метод, эффективный для многомерных данных. Случайные деревья строятся для рекурсивного разбиения пространства. Аномалии требуют меньше разбиений для изоляции.
Вероятностные методы
Гауссовская смесь (GMM) — предполагает, что данные порождены несколькими нормальными распределениями. Точки с низкой вероятностью класса это аномалии.
Одноклассовый SVM (One-Class SVM) — обучается на нормальных данных и строит гиперплоскость, отделяющую нормальные точки от остатка пространства.
Deep Learning подходы
Автокодировщики (Autoencoders) — сжимают входные данные в низкоразмерное представление и восстанавливают. Высокая ошибка реконструкции указывает на аномалию.
LSTM-based методы — используют долгосрочную память для предсказания следующего значения. Отклонение реального значения от предсказанного сигнализирует об аномалии:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
model = Sequential([
LSTM(32, input_shape=(seq_len, 1)),
Dense(1)
])
model.compile(optimizer="adam", loss="mse")
prediction = model.predict(X_test)
anomaly_score = np.abs(y_test - prediction.flatten())
threshold = np.percentile(anomaly_score, 95)
anomalies = anomaly_score > threshold
Variational Autoencoders (VAE) — вероятностный подход, выучивает распределение нормальных данных. Аномалии имеют низкую вероятность в обученном распределении.
Методы, специфичные для временных рядов
Seasonal Decomposition (STL/LOESS) — разлагает ряд на тренд, сезонность и остаток. Аномалии ищут в остатке.
Prophet (Facebook) — моделирует компоненты (тренд + сезонность) и флаги доверия. Точки вне доверительных интервалов — потенциальные аномалии.
Matrix Profile — вычисляет подобие всех подпоследовательностей к их ближайшему соседу. Низкое подобие указывает на аномалию. Очень эффективен для паттернов.
Практические рекомендации
- Выбор метода зависит от контекста: статический шум vs. системные сбои vs. редкие события
- Комбинирование методов часто эффективнее: ensemble подход с голосованием
- Важность метрик: используй precision/recall, не только accuracy, так как аномалии редки
- Обработка зависимостей: сезонность и тренды нужно удалить перед применением методов
- Адаптивные пороги лучше, чем фиксированные, для рядов с дрейфом
Выбор метода должен быть обоснован анализом данных и требованиями задачи.