# 從基礎到預測：指數平滑法完整解析

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

Source: https://www.electe.net/tc/post/exponential-smoothing

Site guide: https://www.electe.net/tc/llms.txt

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

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

您將學習此方法的運作原理、何時該使用簡單指數平滑法、Holt模型或Holt-Winters模型，以及如何評估預測結果,而非僅僅信賴一條視覺上具說服力的曲線。您也將了解手動試算表流程如何演變為持續監控的分析系統。

## 目錄

- 為何指數平滑法在商業預測中依然舉足輕重
-
  - 團隊持續採用的三個理由
- 指數平滑法背後的運作原理
-
  - alpha值在實務中代表的意義
- 比較SES、Holt與Holt-Winters三種模型變化形式
-
  - 將模型與訊號特性相匹配
- 涵蓋銷售、庫存與風險領域的實際商業案例
- 在R與Python中實作指數平滑法
-
  - 一份精簡的偽代碼規劃
- 運用MAE、RMSE、MAPE與交叉驗證評估模型
-
  - 一個簡短的比較範例
  - 採用滾動起點驗證法
  - 在不放棄判斷力的前提下調整參數
- 從試算表預測邁向自動化人工智慧分析
-
  - 自動化所帶來的改變
- 實踐指數平滑法的關鍵重點整理
-
  - 建立第一個模型後常見的疑問

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

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

指數平滑法之所以仍具價值，是因為它專注於序列本身的結構。根據所選變體不同，它可以估計當前的**水平（level）**、延伸可見的**趨勢（trend）**，並呈現重複出現的**季節性（seasonality）**。這種方法在二十世紀中葉作為一種實用的預測方法，出現於作業研究領域。Robert G. Brown 為美國海軍所做的工作可追溯至約 **1944** 年，Charles C. Holt 於 **1957** 年在一份 ONR 備忘錄中記錄了具開創性的趨勢延伸方法，Peter Winters 則在 **1960** 年一篇具里程碑意義的論文中，將此方法推廣至季節性應用。（[Gardner 的歷史回顧](https://bauer.uh.edu/gardner/Exponential-Smoothing.pdf)）

### 團隊持續採用的三個原因

- **資料需求低：**只需一組歷史序列，即可建立有用的基準，無需建置龐大的特徵資料庫。
- **參數易於解讀：**平滑值表示預測對新資訊反應的速度。
- **運算速度快：**遞迴更新的運算量輕巧，足以用於試算表原型、筆電分析，或大量商業序列的處理。

這種透明度很重要。管理者能夠理解為什麼近期銷售下滑會改變預測結果，分析師也能深入檢視模型，而不必將其視為黑箱。這種方法同時提供了一個基準，讓更進階的方法可以據此進行評估。

如需更廣泛的模型選擇背景資訊，可將指數平滑法與[ARIMA e modelli AI previsioni](https://www.electe.net/post/time-series-forecasting)進行比較，尤其是在外部驅動因素或更複雜的時間關係具有重要影響時。

## 指數平滑法背後的運作原理

核心概念是一種加權平均，既記得過去，又優先重視當下。可以想像成管理者透過柔焦鏡頭檢視需求歷史：最新的觀測值清晰可見，前一個觀測值仍然可見，較舊的觀測值則逐漸淡出，但沒有一個會完全消失。

NIST 工程統計手冊將這項核心特性描述為對較舊觀測值採用**指數遞減的權重**。這使得指數平滑法在運算效率上優於等權重移動平均法，後者對所選視窗內的每個數值賦予相同的影響力。（[NIST 手冊](https://www.itl.nist.gov/div898/handbook/pmc/section4/pmc437.htm)）

對於簡單指數平滑法，單步預測可寫成：

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

一個等價的擬合水平形式為：

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

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

### Alpha 在實務上的意義

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

> **實務原則：**選擇 alpha 其實是一項偽裝成統計參數的商業決策。你在決定的是，預測應該多快對需求衝擊、促銷活動或流失率飆升做出反應。

下表說明了當權重以 α 乘以 (1 減 α) 的相應次方計算時，觀測值的影響力如何遞減。這些數字是根據平滑規則所做的示意性計算，並非實際觀測到的商業數據。

幾期前Alpha = 0.2Alpha = 0.5Alpha = 0.800.20000.50000.800010.16000.25000.160020.12800.12500.032030.10240.06250.006440.08190.03130.001350.06550.01560.0003

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

## 比較 SES、Holt 和 Holt-Winters 變體

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

SES 適合相對穩定的序列，例如週期性的支援票券，或成熟產品在沒有明顯上升趨勢或重複週期時的需求。其預測結果通常會穩定在最新的平滑水準附近，而不會朝某個方向持續延伸。

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

Holt-Winters 加入了由 **gamma** 控制的季節性成分，以及季節長度，通常以 **m** 表示。其加法形式適合波動幅度大致保持穩定的季節性變化。而當季節性波動隨整體水準增大或縮小時（這是零售和旅遊需求中常見的模式），則較適合使用乘法形式。（[Datarekha 對指數平滑法的說明](https://datarekha.com/time-series/exponential-smoothing/)）

### 將模型與訊號相匹配

變體組成部分額外參數最適用於應用案例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庫存預測指南](https://hello.quikly.com/blog/inventory-forecasting-methods)有助於將模型選擇與補貨決策及平台數據連結起來。統計模型能產生預測,但業務流程仍然需要考量前置時間、促銷活動、產品變更以及服務目標。

情境最佳變體關鍵參數預測範圍季節性零售 SKU 需求乘法型 Holt-WintersAlpha、beta、gamma、季節長度補貨或規劃週期存在逐漸漂移的易腐庫存HoltAlpha 與 beta訂貨前置期窗口短期、趨勢微弱的違約率序列SESAlpha下一個監控週期

想以更自動化的工作流程比較這些選擇的團隊，可以參考 [previsioni vendite con AI](https://tools.electe.net/previsione-vendite)，同時讓決策者仍能清楚看到模型診斷與營運背景資訊。

## 在 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)

自動優化減少了手動參數調校的需求,但並未消除審查的必要性。請確認所選模型形式反映了資料特性,且預測結果沒有產生不合理的形狀。如果您也在針對異常觀察值建立監控機制,這篇[關於如何選擇異常檢測軟體的指南](https://supercenter.app/blog/anomaly-detection-software)提供了評估相關工具的實用標準。

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

## 使用 MAE、RMSE、MAPE 和交叉驗證評估模型

一個緊密貼合歷史資料的模型,預測表現仍可能不佳。可靠的測試方法是樣本外表現,也就是預測結果與保留未用於擬合的觀察值之間的比較。

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

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

**平均絕對百分比誤差(MAPE)**將誤差以百分比的形式表示。這使得跨產品比較更加容易,但當實際值接近零時,計算會變得不穩定或產生誤導。因此,即使絕對業務影響很小,低銷量SKU在MAPE下仍可能顯得較差。

### 簡單比較範例

假設三個候選方案在相同的保留觀測值上產生以下絕對誤差:

模型絕對誤差MAERMSEMAPESES2, 4, 64.004.3220.00%Holt1, 5, 74.334.6921.67%Holt-Winters3, 3, 53.673.8318.33%

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

### 使用滾動起點驗證（Rolling-Origin Validation）

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

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

### 調整參數，但不放棄判斷力

先從最佳化工具針對 alpha、beta 和 gamma 給出的結果著手，再檢查該結果是否合乎業務邏輯。最佳化工具最小化的是一個既定的誤差目標，而不是您的庫存成本、客戶服務政策或風險偏好。

對於雜訊較多的中小企業數據，初始 alpha 範圍設在 **0.1 到 0.4** 之間可作為實務上的探索範圍，但這不應成為一條放諸四海皆準的規則。所提供的技術指引建議，任何落在邊界值的參數都應加以質疑，而不是不經檢視就直接採用。

請進行以下檢查：

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

最好的模型並非組成成分最多的那一個，而是能產生有用的未來估計值、能通過實際驗證，並且對實際運用預測結果的人來說仍然可以解釋清楚的那一個。

## 從試算表預測到自動化 AI 分析

許多中小企業一開始都採用一套熟悉的流程：有人匯出每月銷售數據，在試算表中調整 alpha 值，將預測結果複製到規劃檔案中，再將靜態版本以電子郵件寄給利害關係人。這種流程對於少量的資料序列或許還行得通，但一旦資料更新、產品線擴增，或需要將實際結果與先前的預測進行比對時，就會變得脆弱不堪。

平台化的工作流程可以保留指數平滑法的透明度，同時消除重複性的處理工作。ELECTE 作為一個專為中小企業打造的 AI 驅動數據分析平台，能夠導入業務數據、進行分析前的準備、擬合各種預測候選模型，並支援自動化報告生成。管理者可以直接對照歷史序列來檢視預測結果，而不必依賴一個孤立的試算表數值。

### 自動化帶來的改變

- **可重複性：**每當有新的觀測數據到來，相同的準備與評估邏輯都能重新執行。
- **模型比較：**可以評估多個 ETS 候選模型，而不必依賴單一手動調整的公式。
- **監控：**歷史預測結果可以與實際數據一併儲存，讓模型的劣化情況變得可見。
- **溝通：**報告能以業務使用者能夠理解的形式，呈現預測結果、假設條件與異常狀況。

這並不代表傳統統計方法已經過時。指數平滑法仍然是一個透明的基準方法，AI 層可以對其進行監控、覆寫或解釋。該平台的**平滑預測器（Smooth Forecaster）**被定位為一種能夠減少短期波動的工具，讓使用者能夠專注於背後的趨勢。

對於正在淘汰人工檔案的團隊而言，[ELECTE guida fogli calcolo](https://www.electe.net/post/fogli-di-calcolo) 提供了相關背景資訊，說明如何將試算表工作流程轉向更具連結性的分析流程。

## 將指數平滑法付諸實踐的重點摘要

將這份檢查清單作為下一個預測週期的實用起點。

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](https://www.electe.net)，探索您的團隊如何運用指數平滑法及其他預測方法，將業務轉化為更清晰、可持續審視的洞察。
