Dekompozycja szeregów czasowych do wykrywania wartości odstających

Wykrywanie anomalii w Pythonie

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Sezonowość

  • Powtarzające się wzorce w szeregu czasowym
  • Stała częstotliwość:
    • godzinowa
    • dzienna
    • tygodniowa
    • miesięczna itp.
  • Przykłady:
    • Dzienne temperatury
    • Sprzedaż lodów
Wykrywanie anomalii w Pythonie

Sezonowość

Wykres liniowy cen otwarcia akcji Google.

Wykrywanie anomalii w Pythonie

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>
Wykrywanie anomalii w Pythonie

Wizualizacja sezonowości

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

Wykres sezonowości cen otwarcia akcji Google

Wykrywanie anomalii w Pythonie

Przykłady sezonowości

Przykłady sezonowości w szeregach czasowych.

Wykrywanie anomalii w Pythonie

Wstępny wykres akcji

Wstępny wykres cen otwarcia akcji Google

Wykrywanie anomalii w Pythonie

Trend

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

Wykrywanie anomalii w Pythonie

Przykłady trendu

Przykłady trendów w szeregach czasowych.

Wykrywanie anomalii w Pythonie

Reszty

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

Wykres reszt cen otwarcia akcji Google.

Wykrywanie anomalii w Pythonie

Dekompozycja

figure = results.plot()

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

Wizualizacja trzech składowych szeregu czasowego.

Wykrywanie anomalii w Pythonie

Dopasowanie klasyfikatora

# 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
Wykrywanie anomalii w Pythonie

Czas na ćwiczenia!

Wykrywanie anomalii w Pythonie

Preparing Video For Download...