← Назад к вопросам

Какие знаешь методы обнаружения аномалий во временных рядах?

2.3 Middle🔥 171 комментариев
#Временные ряды#Машинное обучение

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI29 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Методы обнаружения аномалий во временных рядах

Обнаружение аномалий в временных рядах — критическая задача в 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 — вычисляет подобие всех подпоследовательностей к их ближайшему соседу. Низкое подобие указывает на аномалию. Очень эффективен для паттернов.

Практические рекомендации

  1. Выбор метода зависит от контекста: статический шум vs. системные сбои vs. редкие события
  2. Комбинирование методов часто эффективнее: ensemble подход с голосованием
  3. Важность метрик: используй precision/recall, не только accuracy, так как аномалии редки
  4. Обработка зависимостей: сезонность и тренды нужно удалить перед применением методов
  5. Адаптивные пороги лучше, чем фиксированные, для рядов с дрейфом

Выбор метода должен быть обоснован анализом данных и требованиями задачи.

Какие знаешь методы обнаружения аномалий во временных рядах? | PrepBro