時間序列預測 是什麼?

Time Series Forecasting:時間序列預測 的完整解釋

基於歷史時序資料的統計規律,預測未來特定時間點或時間段的數值的技術。

時間序列預測(Time Series Forecasting)是機器學習與統計學中歷史最悠久、應用最廣泛的任務之一,幾乎所有涉及時間維度的決策支援系統都離不開它。

時間序列的基本組成成分

一個典型的時間序列可以分解為以下幾個成分(加法或乘法組合):

  • 趨勢(Trend):資料在長時間尺度上的整體上升或下降走勢。
  • 季節性(Seasonality):在固定週期(日、週、月、年)內重複出現的規律性波動。
  • 週期性(Cyclicity):不固定週期的長波動,如經濟景氣循環。
  • 殘差 / 噪音(Residual / Noise):去除上述成分後的隨機波動。

理解並分解這些成分是選擇合適預測方法的基礎。

主要技術方法

一、傳統統計方法

  • ARIMA(AutoRegressive Integrated Moving Average):結合自回歸(AR,用過去值預測未來值)、差分(I,使序列平穩化)和移動平均(MA,利用過去誤差)的線性統計模型。是處理非季節性序列的基礎方法。
  • SARIMA(Seasonal ARIMA):ARIMA 的季節性擴展,加入季節性自回歸、差分和移動平均項。
  • Holt-Winters(指數平滑):處理有趨勢和季節性的序列,透過指數加權移動平均平滑資料。
  • Prophet(Facebook/Meta):基於加法模型,自動分解趨勢、季節性和節假日效應,對業務預測場景友好,能處理缺失值和異常值。

二、機器學習方法

  • 基於特徵工程的方法:將時間序列轉換為監督學習問題,以過去 N 個時步的值作為特徵,預測下 M 個時步的值。常用模型包括 XGBoost、LightGBM、Random Forest 等梯度提升方法,在 Kaggle 時序競賽中表現出色。
  • RNN / LSTM / GRU:遞迴神經網路自然適合序列資料,能捕捉長短期依賴。
  • N-BEATS / N-HiTS:純神經網路時序預測架構,透過堆疊基組件(block)和殘差連結分解時序成分。
  • Temporal Convolutional Networks(TCN):用擴張因果卷積處理時序,能平行計算,速度快於 RNN。

三、Transformer 與大型時序模型

Transformer 在 NLP 的成功激勵了時序領域的研究:

  • Autoformer、Informer、PatchTST:針對長序列預測設計的 Transformer 變體,解決原始 Transformer 在長序列上的計算效率問題。
  • TimeGPT、MOIRAI、Chronos(Amazon):大型預訓練時序基礎模型,在海量多領域時序資料上預訓練,可進行零樣本或少樣本預測(類比 NLP 的 GPT 預訓練)。這是時序預測的新興範式,但在特定領域仍不通常優於精心調校的傳統方法。

關鍵技術挑戰

  1. 平穩性(Stationarity):許多統計方法(如 ARIMA)要求序列平穩(均值和方差不隨時間變化)。可用 ADF 檢定(Augmented Dickey-Fuller Test)驗證,不平穩的序列需差分或對數變換後再建模。

  2. 預測步數(Forecast Horizon):單步預測(預測下一個時步)和多步預測(預測未來 N 個時步)難度差異很大。多步預測有兩種策略:遞迴預測(將前一步預測作為下一步輸入,誤差逐步累積)和直接多輸出預測(一次預測全部未來步)。

  3. 資料洩漏(Data Leakage):時序資料的交叉驗證必須保持時序順序,不能隨機打亂:未來資料不能用於預測過去。正確做法是使用時序分割(如前 80% 訓練、後 20% 測試)或時間滾動交叉驗證(Time Series Split)。

  4. 外部變數(Exogenous Variables):許多實際預測任務中,預測目標同時受外部因子影響(如氣溫影響電力需求、促銷活動影響銷售額)。ARIMAX、LightGBM with features 等方法可整合外部變數。

評估指標

時序預測常用的評估指標包括:

  • MAE(Mean Absolute Error):平均絕對誤差,直觀且對離群值不敏感。
  • RMSE(Root Mean Square Error):均方根誤差,對大誤差懲罰更重。
  • MAPE(Mean Absolute Percentage Error):平均絕對百分比誤差,無量綱,可跨序列比較,但當真值接近零時不穩定。
  • SMAPE(Symmetric MAPE):MAPE 的對稱版本,緩解零值問題。

中英對照與常見說法

說法 出現場合
時間序列預測 台灣正式用語
时间序列预测、时间序列预测法 簡體寫法
Time Series Forecasting 英文原名
時序預測、需求預測(demand forecasting) 常見變體,後者是應用場景的說法

幾個必須先講清楚的設定

預測期距(forecast horizon):要預測未來幾期。預測明天與預測未來 90 天是完全不同難度的問題,模型與評估方式都不一樣。

單步與多步:一次只預測下一期,還是一次輸出整段未來。多步預測有兩種做法,遞迴式(把預測值當成下一步的輸入)會累積誤差,直接式(每個期距各訓一個模型)較準但成本高。

單變量與多變量:只用這條序列自己的歷史,還是同時用其他相關序列與外生變數(天氣、假日、促銷、價格)。實務上外生變數往往比模型架構更能提升準確度。

方法選擇

方法 適合
樸素法、季節性樸素法 一定要先做,當作基準線
指數平滑(ETS)、Holt-Winters 單一序列、有趨勢與季節性、要求可解釋
ARIMA / SARIMAX 有明確自相關結構,可加外生變數
梯度提升樹加滯後特徵 序列多、外生變數多,實務上非常強的預設選擇
深度學習(N-BEATS、TFT、Transformer 類) 序列數量以千計、有跨序列共通模式

一定要有基準線。 最簡單的基準是「下一期等於這一期」,有季節性時是「今年這個月等於去年這個月」。複雜模型贏不過這條線的情況比想像中常見,沒有基準線就不會發現自己在浪費時間。

評估的兩個陷阱

切分方式。必須用滾動式驗證:拿前面訓練、預測後面,往後滾動重複。隨機切分等於用未來預測過去,離線分數會漂亮到不真實。

指標選擇。MAPE(平均絕對百分比誤差)最常被使用也最常被誤用:實際值接近 0 時它會爆炸,而且對低估與高估的懲罰不對稱。序列裡有 0 或極小值時改用 MAE、RMSE 或 MASE(以樸素法為基準的相對誤差)。

還要想清楚誤差的商業意義。庫存預測裡少估與多估的代價完全不同,少估是缺貨損失營收,多估是庫存積壓,這種情況該用不對稱的損失函數或分位數預測,而不是最小化對稱的誤差。

常見問題