搜尋意圖: 如果你在找「時間序列預測 是什麼」或「時間序列預測 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。
TL;DR: 基於歷史時序資料的統計規律,預測未來特定時間點或時間段的數值的技術。
實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。
下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。
基於歷史時序資料的統計規律,預測未來特定時間點或時間段的數值的技術。
時間序列預測(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 預訓練)。這是時序預測的新興範式,但在特定領域仍不通常優於精心調校的傳統方法。
關鍵技術挑戰
平穩性(Stationarity):許多統計方法(如 ARIMA)要求序列平穩(均值和方差不隨時間變化)。可用 ADF 檢定(Augmented Dickey-Fuller Test)驗證,不平穩的序列需差分或對數變換後再建模。
預測步數(Forecast Horizon):單步預測(預測下一個時步)和多步預測(預測未來 N 個時步)難度差異很大。多步預測有兩種策略:遞迴預測(將前一步預測作為下一步輸入,誤差逐步累積)和直接多輸出預測(一次預測全部未來步)。
資料洩漏(Data Leakage):時序資料的交叉驗證必須保持時序順序,不能隨機打亂:未來資料不能用於預測過去。正確做法是使用時序分割(如前 80% 訓練、後 20% 測試)或時間滾動交叉驗證(Time Series Split)。
外部變數(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(以樸素法為基準的相對誤差)。
還要想清楚誤差的商業意義。庫存預測裡少估與多估的代價完全不同,少估是缺貨損失營收,多估是庫存積壓,這種情況該用不對稱的損失函數或分位數預測,而不是最小化對稱的誤差。
常見問題
ARIMA 和 Prophet 應該怎麼選?
ARIMA 是嚴格的統計模型,要求序列平穩,需要手動調校 p、d、q 參數(可用 auto-ARIMA 自動搜尋),對於線性趨勢、無複雜季節性的中短序列表現良好;缺點是對異常值敏感,處理多重季節性(如每日+每週+每年)較麻煩。Prophet 由 Facebook 開發,設計目標是讓非統計背景的業務人員也能使用:自動處理趨勢、多重季節性和節假日效應,能較好地處理缺失值和異常值,參數可解釋性高,適合業務指標(如電商銷售額、網站流量)的自動化預測。若需要可解釋的傳統統計分析或序列很短,選 ARIMA;若是業務場景、資料有明顯季節性或需要快速上手,選 Prophet。
時序資料能用普通的 K-Fold 交叉驗證嗎?
不能。普通 K-Fold 交叉驗證會隨機打亂資料,把未來的資料放進訓練集、過去的資料放進驗證集,造成嚴重的資料洩漏(Data Leakage):等於用「未來資訊」預測「過去」,評估結果極度樂觀,與實際部署時的性能相差甚遠。時序資料必須使用時序感知的評估方式:最簡單的是按時間順序切分(前 N% 訓練、後 (1-N)% 測試);更嚴謹的是時序滾動交叉驗證(Time Series Split 或 Walk-Forward Validation),即多次擴大訓練窗口向前滾動,每次只在對應的未來時段上驗證,確保驗證集始終在訓練集之後,模擬真實的線上預測場景。
深度學習模型(如 LSTM)在時序預測上一定比 ARIMA 或 LightGBM 好嗎?
不一定。在時序預測領域,模型的選擇取決於資料量、序列複雜度和任務需求。若資料量少(如只有幾百個時步),深度學習模型容易過擬合,ARIMA 等傳統統計方法反而更穩健。若序列具有明顯的線性趨勢和固定季節性,ARIMA 族方法通常已足夠。LightGBM 加上精心設計的滯後特徵(Lag Features)和滾動統計特徵(Rolling Statistics),在 Kaggle 等競賽中常勝過 LSTM,且速度更快、調參更容易。LSTM 在序列非常長、具有複雜非線性模式、或需要同時處理多元序列時有優勢。建議先試傳統方法建立基線,再嘗試機器學習或深度學習方法,以實際驗證集性能決定。