3. sMAPE 定义与数学公式

对称平均百分比误差(symmetric Mean Absolute Percentage Error, sMAPE)是针对 MAPE 在分母为零或接近零时不稳定、且误差方向不对称等缺陷而提出的改进指标。sMAPE 在时间序列预测、库存需求预测和供应链绩效评估中广泛使用,尤其适用于实际值与预测值都可能接近零的场景。

3.1 sMAPE 的数学表达式

sMAPE 的核心思想是将分母从单一的实际值 A_t 改为实际值与预测值的平均值,从而避免分母过小导致的指标爆炸,同时使误差度量在过预测和欠预测之间保持对称。其标准数学表达式为:

sMAPE = (1/n) * Σ_{t=1}^{n} ( |F_t - A_t| / ((|A_t| + |F_t|) / 2) ) * 100%

其中:

  • A_t:第 t 期的实际值(实际需求/实际库存)
  • F_t:第 t 期的预测值
  • n:预测期数
  • |·|:值运算

在实际库存预测应用中,通常将分母简化为 (|A_t| + |F_t|) / 2,即实际值与预测值的值的算术平均。当 A_t 和 F_t 均为正数时(库存场景通常如此),值符号可以省略,表达式简化为:

sMAPE = (1/n) * Σ_{t=1}^{n} ( 2 * |F_t - A_t| / (A_t + F_t) ) * 100%
💡 关键区别: MAPE 的分母是 A_t(实际值),sMAPE 的分母是 (A_t + F_t)/2(实际值与预测值的均值)。这一变化从根本上改变了误差的度量尺度。

3.2 与 MAPE 的对称性改进

MAPE 的一个固有缺陷是误差方向不对称:当预测值高于实际值(过预测)和低于实际值(欠预测)时,即使误差相同,MAPE 的值也会不同。sMAPE 通过对称化分母解决了这一问题。

对比维度 MAPE sMAPE
分母 |A_t|(实际值值) (|A_t| + |F_t|) / 2(实际与预测均值)
对称性 不对称:过预测与欠预测惩罚不同 对称:过预测与欠预测惩罚相同
分母为零风险 高:A_t=0 时无定义 低:仅当 A_t=0 且 F_t=0 时无定义
取值范围 [0%, +∞) [0%, 200%](有界)
库存场景适用性 不适合零需求/慢动品 适合零需求及慢动品
对称性验证: 假设 A_t=100,若 F_t=120(过预测20),MAPE=20%,sMAPE=2×20/(100+120)=18.18%;若 F_t=80(欠预测20),MAPE=20%,sMAPE=2×20/(100+80)=22.22%。注意:sMAPE 在两种情况下值不同,但方向对称——过预测和欠预测的 sMAPE 相对于实际值对称分布,而 MAPE 则完全不对称。

sMAPE 的对称性改进体现在:当预测误差的值相同时,过预测和欠预测对 sMAPE 的贡献在数学期望上是相等的。这使得 sMAPE 在评估预测系统偏差时更加公平,不会因为预测方向的不同而扭曲评估结果。

3.3 计算步骤

sMAPE 的计算分为四个步骤,下面以库存预测场景为例进行说明。

  1. 收集数据对: 获取同一时间点的实际需求值 A_t 和预测需求值 F_t。例如,某 SKU 过去 5 周的周需求数据如下:
周次 (t) 实际需求 A_t 预测需求 F_t
第1周 120 110
第2周 95 100
第3周 0 5
第4周 150 140
第5周 80 90
  1. 计算每期误差与分母: 对每一期计算分子 |F_t - A_t| 和分母 (|A_t| + |F_t|) / 2。
周次 分子 |F_t - A_t| 分母 (|A_t|+|F_t|)/2 单期 sMAPE (%)
第1周 10 (120+110)/2 = 115 10/115 × 100% = 8.70%
第2周 5 (95+100)/2 = 97.5 5/97.5 × 100% = 5.13%
第3周 5 (0+5)/2 = 2.5 5/2.5 × 100% = 200%
第4周 10 (150+140)/2 = 145 10/145 × 100% = 6.90%
第5周 10 (80+90)/2 = 85 10/85 × 100% = 11.76%
  1. 汇总所有期数: 将所有单期 sMAPE 值相加。本例中:8.70% + 5.13% + 200% + 6.90% + 11.76% = 232.49%。
  2. 计算平均值: 将汇总值除以总期数 n=5,得到最终 sMAPE:232.49% / 5 = 46.50%。
⚠️ 注意: 第3周实际需求为0,预测为5。MAPE 在此处无定义(分母为0),而 sMAPE 可以计算,但单期值达到200%(上限)。这说明 sMAPE 虽然解决了分母为零的问题,但在实际值极小时,单期误差会急剧放大,最终 sMAPE 可能被少数异常期主导。在库存场景中,对于零需求期,建议结合业务规则进行特殊处理。

以下是 sMAPE 计算流程的可视化示意图,展示了从原始数据到最终指标的全过程:

sMAPE 计算流程 步骤1:数据输入 实际值 A_t、预测值 F_t 步骤2:计算每期 分子 |F_t-A_t| 分母 (|A_t|+|F_t|)/2 步骤3:单期sMAPE 分子/分母 × 100% 步骤4:汇总 Σ 单期sMAPE 步骤5:平均 汇总值 / n 计算示例(第1周) A₁=120, F₁=110 分子 = |110-120| = 10 分母 = (120+110)/2 = 115 单期sMAPE = 10/115 × 100% = 8.70% 最终 sMAPE = 46.50% (5周数据平均)

通过上述步骤可以看出,sMAPE 的计算逻辑清晰、可解释性强,且对零值数据具有更好的容错性。在库存预测场景中,sMAPE 尤其适合处理包含慢动品、季节性零需求或促销期零库存的预测评估任务。