跳轉到

5.3 1D CNN Time Series

範例程式:Open In Colab

時間序列也可以用卷積處理。Conv1D 會沿著時間軸掃過序列,擷取局部 pattern,例如短暫尖峰、波形片段或某種固定形狀的訊號。本篇用 1D CNN 做序列分類,示範它和 RNN 類模型不同的思考方式。

1. 學習目標

本篇聚焦以局部形狀為主的時間序列分類。例如偵測某種波形片段、設備短暫異常、使用者操作手勢或局部訊號模式。若類別主要由局部 pattern 決定,1D CNN 通常會是簡潔且訓練快速的 baseline。

2. 範例資料

Notebook 會產生三類序列,每類都有不同局部形狀:

  1. bump:中間有平滑凸起。
  2. dip:中間有下凹。
  3. double_peak:出現兩個局部高峰。

這些類別不需要長期記憶才能辨識,適合用 Conv1D 示範局部 pattern 擷取。

3. Conv1D 如何看時間序列?

Conv1D 的 kernel 會在時間軸上滑動。它不像 LSTM/GRU 一步一步讀取序列,而是直接學習局部窗口中的形狀。搭配 MaxPooling1DGlobalAveragePooling1D 後,可以把局部特徵整理成分類向量。

4. 實作流程

Notebook 會產生固定長度序列,切分資料、標準化後,建立 Conv1D -> MaxPooling1D -> Conv1D -> GlobalAveragePooling1D -> Dense 的模型。最後用 confusion matrix 與 classification report 檢查各類 pattern 是否被正確辨識。

5. 如何套用自己的資料?

若你的任務重點是局部形狀,例如短暫異常、峰值、谷值或特定波形,優先嘗試 1D CNN。輸入仍是 (samples, timesteps, features)。如果有多個感測器欄位,features 就是感測器數量。

6. 小結

1D CNN 是時間序列任務中常被低估的 baseline。它不一定取代 LSTM/GRU,但在局部 pattern 明確、資料量不大或需要快速訓練時,很值得先試。