4. 移动平均法与指数平滑法:简单移动平均、加权移动平均、一次/二次/三次指数平滑
在需求预测的工程落地中,移动平均法与指数平滑法是最基础、最常用的时间序列平滑技术。它们通过消除历史数据中的随机波动,揭示潜在的需求趋势与季节性模式。本节将系统讲解这两种方法的数学原理、参数选择及在供应链计划系统中的实现要点。
4.1 移动平均法
移动平均法通过计算最近 N 期数据的平均值来预测下一期需求。根据是否对历史数据赋予不同权重,分为简单移动平均与加权移动平均。
4.1.1 简单移动平均 (SMA)
简单移动平均对窗口内的所有历史数据赋予相同权重。其计算公式为:
SMA_t = (D_{t-1} + D_{t-2} + ... + D_{t-N}) / N
其中,D_t 为第 t 期的实际需求,N 为移动窗口长度。
| 参数 | 含义 | 工程影响 |
|---|---|---|
| N(窗口长度) | 参与平均的历史期数 | N 越大,平滑效果越强,但对趋势变化反应越迟钝 |
| 滞后性 | 预测值总是落后于实际趋势 | 在趋势上升期预测偏低,下降期预测偏高 |
| 数据存储 | 需保留最近 N 期历史数据 | 在数据库或内存中维护滑动窗口 |
4.1.2 加权移动平均 (WMA)
加权移动平均对窗口内的历史数据赋予不同权重,通常近期数据权重更高。其计算公式为:
WMA_t = w_1 * D_{t-1} + w_2 * D_{t-2} + ... + w_N * D_{t-N}
其中,w_i 为第 i 期数据的权重,且 w_1 + w_2 + ... + w_N = 1。
| 权重方案 | 特点 | 适用场景 |
|---|---|---|
| 线性递增权重 | 权重从远到近线性增加 | 需求趋势缓慢变化 |
| 指数递减权重 | 权重按指数衰减 | 近期数据主导预测 |
| 自定义权重 | 根据业务经验手动设定 | 促销、节假日等特殊时期 |
4.2 指数平滑法
指数平滑法是一种特殊的加权移动平均,其权重随时间呈指数衰减。根据处理的数据特征,分为一次、二次和三次指数平滑。
4.2.1 一次指数平滑 (SES)
一次指数平滑适用于无趋势、无季节性的平稳序列。其递推公式为:
S_t = α * D_t + (1 - α) * S_{t-1}
其中,S_t 为第 t 期的平滑值,α 为平滑系数(0 < α < 1)。预测值 F_{t+1} = S_t。
| α 取值 | 平滑效果 | 对变化的响应 |
|---|---|---|
| 接近 0 | 高度平滑,几乎忽略近期波动 | 反应迟钝 |
| 0.1 - 0.3 | 中等平滑 | 常用范围 |
| 接近 1 | 几乎不平滑,紧跟最新数据 | 反应灵敏,易受噪声影响 |
S_{t-1},内存占用极低,非常适合流式数据处理场景。初始值 S_0 通常取第一期实际需求或前几期均值。
4.2.2 二次指数平滑 (Holt's Method)
二次指数平滑在 SES 基础上增加了趋势分量,适用于有趋势但无季节性的序列。包含两个平滑方程:
水平方程: L_t = α * D_t + (1 - α) * (L_{t-1} + T_{t-1})
趋势方程: T_t = β * (L_t - L_{t-1}) + (1 - β) * T_{t-1}
预测方程: F_{t+m} = L_t + m * T_t
其中,L_t 为水平分量,T_t 为趋势分量,β 为趋势平滑系数,m 为预测步长。
4.2.3 三次指数平滑 (Holt-Winters Method)
三次指数平滑在二次指数平滑基础上增加季节性分量,适用于既有趋势又有季节性的序列。包含三个平滑方程:
水平方程: L_t = α * (D_t / S_{t-p}) + (1 - α) * (L_{t-1} + T_{t-1})
趋势方程: T_t = β * (L_t - L_{t-1}) + (1 - β) * T_{t-1}
季节方程: S_t = γ * (D_t / L_t) + (1 - γ) * S_{t-p}
预测方程: F_{t+m} = (L_t + m * T_t) * S_{t+m-p}
其中,S_t 为季节性分量,p 为季节周期长度(如 12 个月),γ 为季节平滑系数。
| 模型 | 适用数据特征 | 参数数量 | 工程复杂度 |
|---|---|---|---|
| 一次指数平滑 | 平稳序列 | 1 (α) | 低 |
| 二次指数平滑 | 有趋势、无季节 | 2 (α, β) | 中 |
| 三次指数平滑 | 有趋势、有季节 | 3 (α, β, γ) | 高 |
4.3 方法对比与选型指南
在实际供应链计划系统中,选择哪种方法取决于数据特征、计算资源与业务需求。下表总结了各方法的适用场景与工程考量:
| 方法 | 数据要求 | 存储需求 | 计算复杂度 | 预测步长 |
|---|---|---|---|---|
| 简单移动平均 | 至少 N 期历史 | N 个数据点 | O(1) | 1 步 |
| 加权移动平均 | 至少 N 期历史 | N 个数据点 + 权重 | O(N) | 1 步 |
| 一次指数平滑 | 至少 1 期历史 | 1 个平滑值 | O(1) | 1 步 |
| 二次指数平滑 | 至少 2 期历史 | 2 个状态值 | O(1) | 多步 |
| 三次指数平滑 | 至少 2 个完整季节周期 | p + 2 个状态值 | O(1) | 多步 |
4.4 工程落地流程
在供应链计划系统中,将移动平均法与指数平滑法落地为可运行的预测模块,通常遵循以下步骤:
- 数据准备:清洗历史需求数据,处理缺失值与异常值,确定时间粒度(日/周/月)。
- 方法选择:通过时间序列分解或 ACF/PACF 分析,判断数据是否包含趋势和季节性。
- 参数优化:使用历史数据训练模型,通过网格搜索或优化算法找到最优参数(N, α, β, γ)。
- 模型评估:在验证集上计算预测误差指标(MAE, MAPE, RMSE),评估模型稳定性。
- 部署上线:将训练好的模型封装为 API 或批处理任务,集成到计划系统中。
- 监控与回滚:实时监控预测误差,当误差超过阈值时自动触发模型重训练或回滚至备用模型。
上图展示了在供应链计划系统中,根据数据特征选择合适预测方法的决策流程。实际工程中,建议同时运行多个候选模型,通过模型集成或动态切换机制,提升预测的鲁棒性。