Декомпозиція часових рядів для виявлення викидів

Виявлення аномалій у Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Сезонність

  • Повторювані шаблони в часовому ряді
  • Мають фіксовану частоту:
    • погодинно
    • щоденно
    • щотижнево
    • щомісяця тощо
  • Приклади:
    • Щоденні температури
    • Продажі морозива
Виявлення аномалій у Python

Сезонність

Лінійний графік цін відкриття акцій Google.

Виявлення аномалій у Python

seasonal_decompose

from statsmodels.tsa.seasonal import seasonal_decompose

results = seasonal_decompose(google['Open'], period=365)

print(results)
<statsmodels.tsa.seasonal.DecomposeResult object at 0x7f0a67fac820>
Виявлення аномалій у Python

Візуалізація сезонності

results.seasonal.plot(color="red", figsize=(12, 4))

Графік сезонності цін відкриття акцій Google

Виявлення аномалій у Python

Приклади сезонності

Приклади сезонності часових рядів.

Виявлення аномалій у Python

Початковий графік акцій

Початковий графік цін відкриття акцій Google

Виявлення аномалій у Python

Тренд

results.trend.plot(color="red", figsize=(12, 4))

Виявлення аномалій у Python

Приклади трендів

Приклади трендів у часових рядах.

Виявлення аномалій у Python

Залишки

results.resid.plot(color="red", figsize=(12, 4))

Графік залишків цін відкриття акцій Google.

Виявлення аномалій у Python

Декомпозиція

figure = results.plot()

figure.set_figwidth(12)
figure.set_figheight(8)

Усі три компоненти часових рядів візуалізовано.

Виявлення аномалій у Python

Навчання класифікатора

# Extract and reshape residuals
results = seasonal_decompose(google['Volume'], period=365)
residuals = results.resid
residuals = residuals.values.reshape(-1, 1)


# Fit MAD mad = MAD().fit(residuals)
# Find the outliers is_outlier = mad.labels_ == 1 outliers = google[is_outlier] print(len(outliers))
81
Виявлення аномалій у Python

Давайте потренуємось!

Виявлення аномалій у Python

Preparing Video For Download...