Dekompozice časových řad pro detekci odlehlých hodnot

Detekce anomálií v Pythonu

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Sezónnost

  • Opakující se vzory v časové řadě
  • Má pevnou frekvenci:
    • hodinovou
    • denní
    • týdenní
    • měsíční atd.
  • Příklady:
    • Denní teploty
    • Prodeje zmrzliny
Detekce anomálií v Pythonu

Sezónnost

Spojnicový graf otevíracích cen akcií Google.

Detekce anomálií v Pythonu

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>
Detekce anomálií v Pythonu

Vizualizace sezónnosti

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

Graf sezónnosti otevíracích cen akcií Google

Detekce anomálií v Pythonu

Příklady sezónnosti

Příklady sezónnosti v časových řadách.

Detekce anomálií v Pythonu

Počáteční graf akcií

Počáteční graf otevíracích cen akcií Google

Detekce anomálií v Pythonu

Trend

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

Detekce anomálií v Pythonu

Příklady trendů

Příklady trendů v časových řadách.

Detekce anomálií v Pythonu

Rezidua

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

Graf reziduí otevíracích cen akcií Google.

Detekce anomálií v Pythonu

Dekompozice

figure = results.plot()

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

Vizualizace všech tří složek časové řady.

Detekce anomálií v Pythonu

Trénování klasifikátoru

# 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
Detekce anomálií v Pythonu

Pojďme si procvičit!

Detekce anomálií v Pythonu

Preparing Video For Download...