ELECTE 4.5 已正式上線 — 團隊、方案與全新外觀。了解最新功能
數據與分析閱讀時間 14 分鐘

指數平滑法解析:從基礎到預測應用

逐步學習指數平滑法,從 SES 到 Holt 及 Holt-Winters。內容包含公式、商業案例、R 與 Python 程式碼,以及模型選擇

Exponential Smoothing Explained from Basics to Forecasts

用 AI 摘要這篇文章

一位地區零售經理研究上一季的 SKU 銷售數據,卻仍無法回答一個基本的營運問題:在下一波季節性銷售高峰來臨前,該進多少庫存?在另一間辦公室裡,一位信用分析師觀察違約率,思忖近期的上升究竟是暫時性衝擊,還是持久性變化。預測工作正介於這些決策與其後果之間,包括缺貨、過剩的營運資金、營收損失,以及不必要的風險。

指數平滑法為中小企業提供了一個介於試算表平均值與複雜機器學習流程之間的實用折衷方案。此方法賦予近期觀測值較高的權重,同時保持計算過程足夠透明,方便向經理、財務團隊或營運主管說明。它所需的數據量相對較少,且能快速套用於眾多時間序列上進行計算。

您將學習此方法的運作原理、何時該採用簡單指數平滑法、Holt 法或 Holt-Winters 法,以及如何評估預測結果,而非僅憑一條看似合理的曲線就信以為真。您也將看到,手動的試算表流程如何演變為持續監控的分析系統。

目錄

  • 為何指數平滑法在商業預測中依然重要
    • 團隊持續採用它的三大理由
  • 指數平滑法的內部運作原理
    • alpha 在實務上代表的意義
  • 比較 SES、Holt 與 Holt-Winters 變體
    • 讓模型與訊號相互匹配
  • 跨銷售、庫存與風險領域的真實商業案例
  • 以 R 與 Python 實作指數平滑法
    • 精簡的虛擬程式碼規劃
  • 以 MAE、RMSE、MAPE 及交叉驗證評估模型
    • 小型比較範例
    • 採用滾動起點驗證法
    • 在調整參數的同時不放棄判斷力
  • 從試算表預測邁向自動化 AI 分析
    • 自動化帶來的改變
  • 將指數平滑法付諸實踐的重點整理
    • 建立第一個模型後常見的問題


為什麼指數平滑法對企業預測依然重要

預測唯有在能支持決策時才有價值。零售商在下單補貨前,需要對未來需求做出估計。財務團隊在分配關注資源前,需要對預期風險指標有一個站得住腳的判斷。在這兩種情況下,簡單的歷史平均值可能反應太慢,而複雜的模型則可能難以維護或難以解釋。

指數平滑法之所以仍然有價值,是因為它著眼於序列本身的結構。根據所選的變體,它可以估計目前的水準、延伸可見的趨勢,並呈現重複出現的季節性。這個方法作為一種實用的預測方式,出現於二十世紀中葉的作業研究領域。Robert G. Brown 的研究可追溯至約1944年,當時他為美國海軍工作;Charles C. Holt 於1957年在一份 ONR 備忘錄中記錄了具開創性的趨勢延伸方法;Peter Winters 則在1960年的一篇里程碑論文中,將此方法推廣至季節性應用。(Gardner 的歷史回顧)


團隊持續使用它的三個原因

  • 資料需求低:你可以僅憑單一歷史序列建立實用的基準線,而無需建置龐大的特徵資料庫。
  • 參數易於解讀:平滑數值表達了預測對新資訊反應的速度。
  • 運算速度快:其遞迴更新機制輕量,足以應用於試算表原型、筆記型電腦分析,或是大量的企業序列資料。

這種透明度非常重要。經理人能夠理解為何近期的銷售下滑改變了預測結果,分析師也能夠深入研究模型,而不必將其視為一個黑盒子。這個方法同時也提供了一個基準,讓更進階的方法有依據可供評估。

若想了解模型選擇的更廣泛脈絡,可將指數平滑法與ARIMA 及 AI 預測模型進行比較,尤其是在外部驅動因素或更複雜的時間關係至關重要的情況下。


指數平滑法的運作原理

其核心概念是一種加權平均法,既記得過去,又優先重視當下。試想一位經理透過柔焦鏡頭審視需求歷史:最新的觀測值清晰可見,前一個觀測值依然可見,而較舊的觀測值則逐漸淡出,但沒有一個會完全消失。

美國國家標準與技術研究院(NIST)的《工程統計手冊》將此決定性特徵描述為對較舊觀測值採用指數遞減的權重。這使得指數平滑法在運算上比等權重移動平均法更有效率,後者對其所選窗口內的每個值賦予相同的影響力。(NIST 手冊)

對於簡單指數平滑法而言,單步預測可寫成:

Fₜ₊₁ = α × Yₜ + (1 − α) × Fₜ

其等效的擬合水準形式為:

Lₜ = α × Yₜ + (1 − α) × Lₜ₋₁

此處,Yₜ 是最新的觀測值,Fₜ 是先前的預測值,Lₜ 是更新後的水準值,而 α 是介於零與一之間的平滑參數。


alpha 在實務上代表什麼

較高的 alpha 值會讓最新的觀測值產生重大影響。這在需求快速變化時很有幫助,但也可能使預測結果追逐隨機雜訊。較低的 alpha 值則能產生較平穩的估計值,抵抗個別的異常變化,不過在真正發生需求轉變後,反應可能會較為遲緩。

實務原則:選擇 alpha 值其實是一項偽裝成統計參數的商業決策。你在決定的是:預測應該以多快的速度對需求衝擊、促銷活動或流失率激增做出反應。

下表說明當權重以 α 乘以 (1 減 α) 的相應次方來計算時,觀測值的影響力如何遞減。這些數字是根據平滑規則計算得出的示例,並非實際觀測到的業務數據集。

往前期數

Alpha = 0.2

Alpha = 0.5

Alpha = 0.8

0

0.2000

0.5000

0.8000

1

0.1600

0.2500

0.1600

2

0.1280

0.1250

0.0320

3

0.1024

0.0625

0.0064

4

0.0819

0.0313

0.0013

5

0.0655

0.0156

0.0003

當 alpha 等於 0.8 時,最新的觀測值會佔主導地位,較舊的觀測值會迅速消退。當 alpha 等於 0.2 時,模型會保留較長的記憶,這適合穩定的序列,但在結構性變化發生後可能會延遲適應。


比較 SES、Holt 與 Holt-Winters 變體

應從資料的形態出發,而非演算法的名稱。簡單指數平滑法,即 SES,僅估計目前的水準。Holt 方法加入了趨勢成分。Holt-Winters 方法則在水準與趨勢之上再加入季節性。

SES 適合相對穩定的序列,例如週期性出現的客服工單,或成熟產品在沒有明顯上升趨勢或重複週期時的需求。其預測結果通常會穩定在最新的平滑水準附近,而不會持續朝某個方向發展。

Holt 方法引入了趨勢估計。此模型使用第二個平滑參數 beta,將目前的基準線與該基準線移動的方向區分開來。這使它更適合用於持續上升或下降、且沒有重複季節模式的營收序列。

Holt-Winters 方法加入了由 gamma 與季節長度(通常以 m 表示)所控制的季節成分。其加法形式適合季節波動幅度大致維持穩定的情況。而當季節波動會隨整體水準增大或縮小時,則較適合採用乘法形式,這種模式常見於零售與旅遊需求中。(Datarekha 對指數平滑法的說明)


將模型與訊號相匹配

變體

組成要素

額外參數

最適用於

應用範例

SES

水準

Alpha

無趨勢或季節性的穩定序列

成熟產品需求

Holt

水準與趨勢

Alpha、Beta

具有持續方向性的序列

逐步變化的營收

Holt-Winters

水準、趨勢與季節性

Alpha、Beta、Gamma、季節長度

具有趨勢與週期性循環的序列

季節性零售需求

更多的成分會產生更多擬合到雜訊的機會。零售商不應該只因為 Holt-Winters 聽起來比較進階就選用它。如果數列缺乏可靠的季節性,季節性狀態可能只會增加不穩定性,卻沒有帶來有用的資訊。

一個實用的思考測試很簡單。問問自己:基準線是否會移動、這種移動是否會重複出現,以及當基準線變化時,季節性波動的幅度是否維持不變。這些答案能指出應該選用 SES、Holt、加法型 Holt-Winters,還是乘法型 Holt-Winters。


橫跨銷售、庫存與風險的實際商業案例

模型要能反映業務訊號,才能證明自己的價值。以下考慮三種不同的營運環境。

某區域零售商追蹤每週的 SKU 需求。該數列隨時間上升,並在假期期間出現週期性高峰,而整體需求水準越高時,季節性波動幅度也越大。乘法型 Holt-Winters 是自然的候選方案,因為它能表示水準、趨勢與季節性,且季節性的振幅會隨數列本身縮放。關鍵參數為 alpha、beta、gamma,以及觀察到的季節長度。預測範圍應該配合零售商的補貨與規劃週期,而不是預設採用通用的期間。

某倉庫經理負責處理易腐商品。基準消耗量正逐漸上升,但一次性促銷活動導致某週出現異常高的數值。Holt 方法可以表示這種漸進的變化,而不會把促銷活動誤判為永久性的季節模式。在使用預測結果來設定再訂購數量之前,經理應該檢視配適值與殘差,尤其是在前置時間使高估成本高昂的情況下更應如此。

某信用風險團隊監控每月違約率。該數列時間短、趨勢微弱,且近期受到總體經濟狀況影響。SES 能在最新觀測值理應比長期歷史平均值更具影響力時,提供一個反應靈敏的基準線。相對較高的 alpha 值可能會快速反應,但分析師應該測試這個選擇,而不是假設每一次近期的波動都會持續下去。

對於實際的庫存工作流程而言,一份Shopify 庫存預測指南有助於將模型選擇與補貨決策及平台資料連結起來。統計模型能產出預測結果,但業務流程仍然需要考量前置時間、促銷活動、產品變動,以及服務目標。

情境

最佳變體

關鍵參數

預測範圍

季節性零售 SKU 需求

乘法型 Holt-Winters

Alpha、beta、gamma、季節長度

補貨或規劃週期

具漸進漂移的易腐庫存

Holt

Alpha 與 beta

再訂購前置時間窗口

短期、趨勢微弱的違約率序列

SES

Alpha

下一個監控週期

希望以更自動化的工作流程來比較這些選項的團隊,可以進一步瞭解運用 AI 進行銷售預測,同時仍能讓決策者掌握模型診斷結果與營運背景資訊。


在 R 與 Python 中實作指數平滑法

你可以用一組數列資料、一個預測範圍,以及一個模型選擇來製作預測原型。實作結果不應只回傳一條未來的曲線,還要儲存擬合值、估計狀態、參數與殘差,方便日後評估結果。


一份精簡的偽代碼規劃

  1. 載入並驗證數值時間序列。
  2. 設定預測範圍,以及 alpha、beta、gamma 與季節長度的候選值。
  3. 依觀察資料的形態,擬合 SES、Holt 或 Holt-Winters 模型。
  4. 儲存水準、趨勢、季節指數、擬合值與點預測值。
  5. 在未用於擬合的觀測資料上評估預測結果。
  6. 在驗證流程確認模型適用後,重新擬合模型。

在 R 中,forecast 套件提供 ets() 以自動選擇誤差、趨勢與季節性,同時也提供 HoltWinters() 供明確地擬合 Holt-Winters 模型:

library(forecast)

series <- ts(data$units, frequency = seasonal_length)

ets_fit <- ets(series)
ets_forecast <- forecast(ets_fit, h = horizon)

hw_fit <- HoltWinters(
series,
alpha = NULL,
beta = NULL,
gamma = NULL
)
hw_forecast <- predict(hw_fit, n.ahead = horizon)

plot(hw_forecast)

在 Python 中,statsmodels 透過 ExponentialSmoothing 提供相同的模型家族。fit() 與 forecast() 呼叫組成了一套精簡的工作流程:

from statsmodels.tsa.holtwinters import ExponentialSmoothing

series = data["units"]

model = ExponentialSmoothing(
series,
trend="add",
seasonal="mul",
seasonal_periods=seasonal_length
)

fit = model.fit(optimized=True)
forecast = fit.forecast(horizon)

print(forecast)

自動優化減少了人工調整參數的需求,但並不代表不需要人工審視。務必確認所選模型形態符合資料特性,且預測結果不會產生不合理的形狀。如果你也在針對異常觀測值建立監控機制,這篇如何選擇異常偵測軟體的指南提供了評估相關工具時實用的判斷標準。

在分享結果之前,請檢查係數,確認變異數估計值不為負,將擬合值與觀測值進行比對,並驗證預測結果是否符合歷史資料中呈現的季節性形態。


以 MAE、RMSE、MAPE 與交叉驗證評估模型

一個緊密貼合歷史資料的模型,預測表現仍可能不佳。真正可靠的測試是樣本外表現,也就是預測結果與擬合過程中保留未用的觀測值相比的表現。

平均絕對誤差(Mean Absolute Error,MAE)以原始單位表示平均絕對誤差量。如果您預測的是銷售件數,MAE 也會以銷售件數計量,這讓管理者容易理解。

均方根誤差(Root Mean Squared Error,RMSE)在開根號後同樣使用原始單位,但它讓較大的誤差擁有更大的影響力。當單一重大誤差會帶來不成比例的營運成本時(例如嚴重缺貨或異常龐大的人力缺口),適合使用此指標。

平均絕對百分比誤差(Mean Absolute Percentage Error,MAPE)以百分比表示誤差,這讓跨產品比較更容易,但當實際值接近零時,計算會變得不穩定或具有誤導性。因此,低銷量 SKU 在 MAPE 下可能看起來較差,即使其絕對業務影響其實很小。


一個簡單的比較範例

假設三個候選模型在相同的保留觀測資料上產生以下絕對誤差:

模型

絕對誤差

MAE

RMSE

MAPE

SES

2, 4, 6

4.00

4.32

20.00%

Holt

1, 5, 7

4.33

4.69

21.67%

Holt-Winters

3, 3, 5

3.67

3.83

18.33%

這些數字是為說明指標運作方式而構造的範例,並非業務基準。Holt-Winters 在這三項指標上都勝出,但不同的誤差模式可能改變排名。舉例來說,一個大多是小誤差、但有一次嚴重失準的模型,在 MAE 下可能看起來還可以接受,而 RMSE 卻會揭露其操作風險。


使用滾動起點驗證

單一的訓練-測試切分可能會掩蓋模型的弱點。滾動起點評估會反覆在不斷擴大的訓練窗口上擬合模型,然後對下一個預測期或未來多個期間進行評分。這個過程能更好地模擬模型在新實際數據到來時的運作方式。

當季節性因素重要時,請使用至少涵蓋一個完整季節週期的驗證窗口。否則,測試可能永遠無法揭露重複出現的高峰或低谷。請在相同的起點、預測範圍和觀測值上比較候選模型。


調整參數,但不要放棄判斷

先從優化器對 alpha、beta 和 gamma 的輸出開始,然後檢查結果是否符合業務邏輯。優化器最小化的是一個既定的誤差目標,而非您的庫存成本、客戶服務政策或風險偏好。

對於雜訊較多的中小企業數據,初始 alpha 範圍 0.1 至 0.4 可作為實務上的探索範圍,但不應成為放諸四海皆準的規則。所提供的技術指引建議,任何處於邊界值的參數都應被質疑,而非未經審視就予以接受。

請進行以下檢查:

  • 檢視殘差:留意是否仍存在趨勢、季節性或自相關。若殘差序列呈現出結構性特徵,表示模型尚有未解釋的資訊。
  • 測試季節形式:加法季節性適合幅度穩定的波動。乘法季節性適合隨水準上升而擴大的波動。
  • 留意過度擬合:高度靈活的季節模型可能完美貼合歷史數據,卻在未來期間表現不佳。
  • 尊重數據長度:Holt-Winters 需要足夠的歷史數據才能辨識重複的季節行為。若以少於兩個完整季節週期的數據進行擬合,可能導致季節估計不穩定。
  • 辨識結構性斷點:產品上市、疫情衝擊、政策變動或定價重新設計,都可能使舊有水準失效。與其讓模型緩慢吸收這種斷點,重設或重新初始化水準可能是更好的做法。

最佳模型並非組成成分最多的那一個,而是能產生有用的未來估計、經得起實際驗證,並且對採取行動的人來說仍然易於理解的模型。


從試算表預測邁向自動化 AI 分析

許多中小企業一開始都採用一套熟悉的流程:有人匯出每月銷售數據,在試算表中調整 alpha,將預測結果複製到規劃檔案中,再將靜態版本以電郵寄給利益相關者。這個流程對少量數列或許可行,但當數據更新、產品範圍擴大,或需要將實際結果與先前預測進行比較時,就會變得脆弱不堪。

平台工作流程可以在保留指數平滑透明性的同時,消除重複性作業。ELECTE 是一個為中小企業打造的 AI 驅動數據分析平台,能夠匯入業務數據、為分析做準備、擬合預測候選模型,並支援自動化報告。管理者可以將預測結果與歷史數列一併檢視,而不必依賴一個孤立的試算表數值。


自動化改變了什麼

  • 可重複性:每當新的觀測值到來,相同的準備與評估邏輯就會執行一次。
  • 模型比較:可以評估多個 ETS 候選模型,而不是僅依賴一個手動調整的公式。
  • 監控:歷史預測可以與實際數值一同儲存,使模型表現的退化變得可見。
  • 溝通:報告可以以商業使用者能理解的形式,呈現預測結果、假設條件與異常情況。

這並不代表傳統統計方法已經過時。指數平滑仍然是一個透明的基準,AI 層可以對其進行監控、覆寫或解釋。平台的平滑預測器(Smooth Forecaster)被描述為一種減少短期波動的方式,讓使用者能夠專注於潛在趨勢。

對於正在淘汰手動檔案的團隊而言,ELECTE 試算表指南提供了將試算表工作流程轉向更緊密連結的分析流程的相關背景資訊。


將指數平滑運用於實務的重點整理

將此檢查清單作為下一次預測週期的實用起點。

  1. 先繪製數列圖:在選擇 SES、Holt 或 Holt-Winters 之前,先繪製數據圖,判斷其是否具有穩定水準、趨勢、重複性季節性,或結構性斷點。
  2. 先優化,再檢視:讓擬合程序估算 alpha、beta 與 gamma,但需確認所得出的反應速度是否符合業務對新資訊的實際反應方式。
  3. 以保留數據驗證:使用 MAE 或 RMSE 將預測結果與未來觀測值進行比較,並避免在實際數值接近零時單獨依賴 MAPE。
  4. 定期重新擬合:每季重新擬合模型,讓模型能隨著客戶行為、產品組合與營運條件的變化而調整。
  5. 監控整個流程:將預測結果與實際數值一併儲存,讓像 ELECTE 這樣的平台能夠標示出退化情況,並支援與其他模型的比較。


建立第一個模型後常見的問題

需要多少數據? 對於 Holt-Winters 模型,建議至少準備兩個完整的季節性週期,讓模型能夠區分重複性變動與雜訊。穩定的 SES 模型通常受益於大約30 筆或以上的觀測值,而較短的數列則可能導致參數估計不可靠。

遺漏值該如何處理?指數平滑法需要一個可用的序列,因此在配適模型前,應透過適當的插補或延續前值(carry-forward)程序來處理缺口。請記錄處理方式,因為插補可能影響水平值及後續的評估結果。

該如何處理離群值?在改變數值之前,先檢視其成因。縮尾處理(Winsorization)、對極端值具抵抗力的前處理,或具備明確離群值處理機制的模型,都能避免單一異常觀測值扭曲由 alpha 驅動的水平值,但真實發生的事件或許需要保留可見,作為業務訊號。

何時應避免使用指數平滑法?當序列呈現高度非線性、依賴多個外部變數、包含重大結構性斷裂,或需要指數平滑法無法可靠呈現的長期預測時,應選擇其他方法。在這些情況下,ARIMA、Prophet、迴歸分析或機器學習集成模型可能更為適合。

預測同時也支援財務與合規決策,但這並非財務或合規建議。風險團隊應將模型輸出與經核准的治理機制、人工審查及書面政策相結合。當您處理客戶、員工或交易資料時,應套用您所屬組織及適用法律所要求的隱私控管與資料保留規則。


ELECTE 將資料準備、預測、自動化報表與 AI 驅動的監控整合在一起,讓中小企業得以擺脫手動更新試算表的束縛。造訪 ELECTE,探索您的團隊如何將指數平滑法及其他預測方法,轉化為更清晰、持續受檢視的商業洞察。

留言

尚無留言——開始討論吧。