การแยกองค์ประกอบอนุกรมเวลาเพื่อตรวจจับค่าผิดปกติ

การตรวจจับความผิดปกติใน Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

ฤดูกาล (Seasonality)

  • รูปแบบที่เกิดซ้ำในอนุกรมเวลา
  • มีความถี่คงที่:
    • รายชั่วโมง
    • รายวัน
    • รายสัปดาห์
    • รายเดือน เป็นต้น
  • ตัวอย่าง:
    • อุณหภูมิรายวัน
    • ยอดขายไอศกรีม
การตรวจจับความผิดปกติใน Python

ฤดูกาล (Seasonality)

กราฟเส้นแสดงราคาเปิดของหุ้น 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

แนวโน้ม (Trend)

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

การตรวจจับความผิดปกติใน Python

ตัวอย่างแนวโน้ม

ตัวอย่างแนวโน้มในอนุกรมเวลา

การตรวจจับความผิดปกติใน Python

ค่าส่วนเหลือ (Residuals)

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

กราฟแสดงค่าส่วนเหลือของราคาเปิดหุ้น Google

การตรวจจับความผิดปกติใน Python

การแยกองค์ประกอบ

figure = results.plot()

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

ภาพแสดงองค์ประกอบทั้งสามของอนุกรมเวลา

การตรวจจับความผิดปกติใน Python

การ Fit ตัวจำแนกประเภท

# 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...