5.4 Time Series Anomaly Detection
時間序列異常偵測常見於設備監控、流量監控、感測器資料與系統指標。本篇使用 LSTM autoencoder 學習正常序列的形狀,再用重建誤差判斷新序列是否異常。
1. 學習目標
本篇聚焦「正常資料很多、異常資料少」的情境。模型先只看正常序列,學會如何重建正常 pattern。當遇到尖峰、位移、形狀突變等異常序列時,重建誤差通常會變大,因此可以用 threshold 做異常判斷。
2. 範例資料
Notebook 會產生正常的週期序列,以及兩種異常:
- spike:序列中出現短暫尖峰。
- shift:後半段基準值突然上移。
訓練時只使用正常序列;測試時混合正常與異常序列,檢查 autoencoder 是否能用 reconstruction error 分辨。
3. Autoencoder 的直覺
Autoencoder 由 encoder 與 decoder 組成。Encoder 把序列壓成低維表示,decoder 再把它還原回原始序列。如果模型只學過正常資料,對正常資料會重建得比較好;對異常資料則容易重建失敗。
4. 實作流程
Notebook 會先產生正常訓練資料與混合測試資料,接著標準化序列、建立 LSTM autoencoder、計算每筆序列的 MAE reconstruction error,並用訓練集誤差的高分位數作為 threshold。
5. 如何套用自己的資料?
套用到自己的資料時,先定義什麼是一段序列。例如每 60 秒、每 144 筆或每一天是一個 window。若有多個感測器欄位,輸入 shape 會是 (samples, timesteps, features)。Threshold 可以先用正常訓練資料的 95 或 99 百分位數,再依照實務可接受的誤報率調整。
6. 小結
時間序列異常偵測的重點是先定義正常 pattern,再用重建誤差或預測誤差量化偏離程度。Autoencoder 不是唯一方法,但很適合建立第一個可視覺化、可調整的異常偵測 baseline。