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分析
    • 自动化改变了什么
  • 让指数平滑法真正发挥作用的关键要点
    • 建立第一个模型后常见的问题


为什么指数平滑法对企业预测依然重要

预测只有在支持决策时才有价值。零售商在下达补货订单前,需要对未来需求做出估计。财务团队在分配关注度之前,需要对预期风险指标有一个站得住脚的判断。这两种情况下,简单的历史平均值可能反应过慢,而复杂模型又可能难以维护或解释。

指数平滑法之所以仍然有价值,是因为它聚焦于序列本身的结构。根据你选择的变体,它可以估计当前的水平(level),延伸可见的趋势(trend),并表现重复出现的季节性(seasonality)。这种方法作为一种实用的预测手段,出现于二十世纪中期的运筹学领域。Robert G. Brown 的相关工作可追溯到1944年,当时他为美国海军服务;Charles C. Holt 在1957年的一份ONR备忘录中记录了具有奠基意义的趋势扩展方法;Peter Winters 则在1960年的一篇里程碑式论文中,将该方法推广至季节性场景。(Gardner 的历史回顾)


团队持续使用它的三个原因

  • 数据要求低:你只需一条历史序列,无需构建庞大的特征存储,即可建立有用的基线。
  • 参数可解释:平滑值体现了预测对新信息的反应速度。
  • 计算速度快:递归更新的计算量足够轻量,适用于电子表格原型、笔记本电脑分析,或大量业务序列的批量处理。

这种透明度很重要。管理者能够理解近期销售下滑为何改变了预测,分析师也能深入研究模型,而不必将其视为黑箱。这种方法还为评估更先进的方法提供了一个基线。

关于模型选择的更广泛背景,可参考将指数平滑法与ARIMA 及人工智能预测模型进行比较,尤其是在外部驱动因素或更复杂的时间关系起作用的情况下。


指数平滑法的底层运作原理

其核心理念是一种加权平均:既记住过去,又优先考量当下。可以想象一位管理者透过柔焦镜头审视需求历史——最新的观测值清晰可见,前一个观测值仍然可辨,而更久远的观测值则逐渐淡出,但没有一个会完全消失。

美国国家标准与技术研究院(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(),以及用于显式 Holt-Winters 拟合的 HoltWinters():

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 给出的结果入手,然后检查该结果是否符合业务实际。优化器最小化的是一个既定的误差目标,而不是你的库存成本、客户服务政策或风险偏好。

对于存在噪声的中小企业数据,0.1 到 0.4 的初始 alpha 范围可以作为一个实用的探索区间,但不应将其视为普遍适用的规则。所提供的技术指南建议,对任何落在边界值上的参数都应加以质疑,而不是不加审查地直接采纳。

请进行以下检查:

  • 检查残差:留意是否仍存在趋势、季节性或自相关性。若残差序列呈现出结构性特征,说明模型仍有信息未能解释。
  • 测试季节性形式:加法季节性适用于波动幅度稳定的情形。乘法季节性适用于波动幅度随水平值增长而增大的情形。
  • 警惕过拟合:高度灵活的季节性模型可能完美地拟合历史数据,却在未来周期中失效。
  • 重视数据长度:Holt-Winters 需要足够的历史数据才能识别重复出现的季节性行为。若用于拟合的历史数据不足两个完整的季节周期,季节性估计可能不稳定。
  • 识别结构性突变:产品上市、疫情冲击、政策变化或定价体系调整都可能使原有水平失效。相较于让模型缓慢吸收这种突变,重置或重新初始化水平值可能是更好的做法。

最好的模型并非组件最多的模型,而是那个能够产生有用的未来估计、经受住真实验证考验、并对使用预测结果采取行动的人保持可解释性的模型。


从电子表格预测到自动化人工智能分析

许多中小企业都是从一套熟悉的流程开始的:有人导出月度销售数据,在电子表格中调整 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 个或更多观测值才能获得较好效果,序列过短则可能导致参数估计不可靠。

缺失值应该怎么处理? 指数平滑需要一个可用的序列,因此在拟合之前应通过适当的插值或前向填充方法处理缺口。请记录处理方式,因为插补会影响水平值及后续评估。

应该如何处理异常值? 在改动数值之前先查明原因。Winsorization(缩尾处理)、对极端值具有抗性的预处理,或带有显式异常值处理的模型,都可以防止一个异常观测值扭曲由 alpha 驱动的水平值,但真实事件可能需要作为业务信号保留可见。

什么时候应避免使用指数平滑? 当序列高度非线性、依赖多个外部变量、存在重大结构性突变,或需要指数平滑无法可靠表示的长期预测时,应选择其他方法。在这些情况下,ARIMA、Prophet、回归分析或机器学习集成模型可能更为合适。

预测同样支持财务和合规决策,但它并非财务或合规建议。风险团队应将模型输出与经批准的治理流程、人工审核及书面政策相结合。在处理客户、员工或交易数据时,请应用您所在组织及适用法律要求的隐私控制和留存规则。


ELECTE 将数据准备、预测、自动化报告和 AI 驱动的监控整合在一起,帮助中小企业摆脱手动更新的电子表格。访问 ELECTE,探索您的团队如何将指数平滑及其他预测方法转化为更清晰、持续审查的业务洞察。

评论

暂无评论——来发表第一条吧。