间歇性需求预测误差度量方法

3 阅读16分钟

预测误差度量:间歇性需求

在前几篇博客文章中,我们已经了解了实践中使用的所有流行预测度量方法。但它们都主要关注平滑且稳定的时间序列。然而,现实生活中的时间序列还有完全不同的类型——间歇性和块状需求。

通常,我们称间歇性序列为存在大量无需求周期的序列,即零星需求。Syntetos 和 Boylan(2005)提出了一种更正式的时间序列分类方法。他们使用了时间序列的两个参数进行分类——平均需求间隔和变异系数的平方。

平均需求间隔是两个非零需求之间的平均时间周期数。例如,如果某个时间序列的 ADI 为 1.9,意味着平均每 1.9 个时间周期就会出现一次非零需求。

ADI 是间歇性的度量指标;其值越高,序列的间歇性越强。

变异系数是标准化的标准差。计算标准差后,再除以序列的均值,以消除规模依赖性。

该指标显示了时间序列的变异性。如果值较高,意味着序列的变异性也较高。

基于这两个需求特征,Syntetos 和 Boylan 从理论上推导出了定义行为类型显著变化的临界值。他们将间歇性临界值定义为 1.32,将变异系数临界值定义为 0.49。利用这些临界值,他们定义了高和低,然后将两者结合起来形成一个网格,将时间序列分类为:平滑型、波动型、间歇型和块状型。

我们讨论过的预测度量方法主要设计用于处理平滑型和波动型时间序列。但在现实世界中,存在更多的间歇型和块状时间序列。典型的例子包括备件销售、长尾零售销售等。

传统误差度量的不适用性

间歇型和块状序列的一个决定性特征是存在大量零需求周期。这导致我们之前看到的许多度量指标出现问题。所有百分比误差(例如 MAPE)都因为除以零而变得不稳定,而这种情况现在几乎是必然发生的。类似地,相对误差(例如 MRAE),其中使用参考预测来缩放误差,也变得不稳定,尤其是在使用朴素预测作为参考时。这是因为会存在多个零需求周期,从而产生零参考误差,因此结果是未定义的。

sMAPE 旨在解决除以零的问题,但即使如此,当零需求数量增加时,sMAPE 也会出现问题。根据之前的探讨,当预测值远高于实际值或反之亦然时,sMAPE 会存在问题。而在间歇性需求的情况下,这种情况比比皆是。如果实际需求为零而我们预测了某个值,或者相反,就会出现这种情况。例如,对于零需求,一种方法预测为 1,另一种方法预测为 10,结果无论如何都是 200%。

新的推荐误差度量

累积预测误差(CFE、CFE Min、CFE Max)

之前已经介绍过累积预测误差(也称为预测偏差)。它只是整个预测范围内的带符号误差之和,因此正负误差会相互抵消。这对供应链中的库存过多或不足有直接影响。Peter Wallstrom 还提倡使用 CFE Max 和 CFE Min。CFE 为零也可能偶然发生,并且在较长时间范围内,会丢失中间的大量细节。因此他建议将 CFE 与 CFE Max 和 CFE Min 结合使用,后者是预测范围内 CFE 的最大值和最小值。

更好百分比(PBMAE、PBRMSE 等)

之前已经介绍过更好百分比。这也是一个用于间歇性需求的相当不错的度量。它不存在数值不稳定的问题,并且在任何地方都有定义。但它不衡量误差的大小,而是统计误差的次数。

缺货次数(NOS 和 NOSp)

通常,要跟踪预测是否有偏,会使用跟踪信号(即 CFE/MAD)。但触发警告的设定限制(+/- 4)是基于需求呈正态分布的假设。在间歇性需求的情况下,需求不是正态分布,因此该触发条件会产生大量误报。

另一种替代方法是缺货次数度量,通常表示为缺货次数的百分比。它只统计累积预测误差大于零(导致缺货)的实例数量。数量过高或过低都表明存在某个方向的偏差。

库存周期数(PIS)

NOS 不能识别系统性误差,因为它没有考虑库存结转的时间维度。PIS 更进一步,衡量预测项目在库存中花费的总周期数或缺货周期数。

要理解 PIS 的工作原理,来看一个例子。

假设在三天的时间范围内,每天预测一个单位。在第一个周期开始时,一个单位的物品被交付到虚拟库存中(这是对现实的一种简化)。如果在第一天没有需求,结果就是 PIS 加一。当需求发生时,需求会从预测值中减去。如果第一周期需求为 1,则第一周期的 PIS 为零,CFE 为 -1。如果三个周期内需求都为零,则第三周期的 PIS 等于正六。第一天的物品在库存中存放了三天,第二天的物品存放了两天,最后一年的物品存放了一天。

正数表示预测过高,负数表示预测过低。它可以很容易地计算为 CFE 的累积和,即图中条形下方的面积。

库存导向预测误差成本(SPEC)

SPEC 是一个较新的指标(Martin 等人,2020),它试图采用与库存周期数类似的路径,但更为复杂。

虽然乍一看令人望而生畏,但可以直观地理解它。计算的核心由两个内部最小值项处理——机会成本和库存持有成本。从库存管理的角度来看,这两项成本是供应链中需要平衡的。

左边项衡量因预测过低而产生的机会成本。这是如果有足够库存本可以实现的销售额。例如,如果需求是 10,而只预测了 5,则机会损失为 5。现在,假设过去三个时间段一直预测为 5,没有需求,然后需求为 10 出现。那么库存有 15,可以满足 10。因此,这里没有机会成本。也可以说,某个时间段的机会成本不会大于该时间段的需求。结合这些条件,就得到了方程的第一项,用于衡量机会成本。

使用与之前相同的逻辑,但将其反转,可以推导出类似的库存持有成本方程(预测过高时)。这由方程右边的项处理。

某个时间步长的 SPEC 实际上会查看所有先前的时间步长,计算每个步长的机会成本和库存持有成本,并将它们相加得到一个数值。在任何时间步长,要么存在机会成本,要么存在库存持有成本,而这又取决于到该时间步长为止的累积预测值和实际值。

而一个时间序列预测范围的 SPEC 是所有时间步长的平均值。

方程中有两个权重参数,允许对机会成本和库存持有成本应用不同的权重,根据组织的策略可以选择合适的权重。建议将权重之和保持为 1,等权重是零售环境中的常见选择。

该方法的一个缺点是时间复杂度。计算该指标需要嵌套循环,导致计算速度较慢。

实现代码可在此处获取:github.com/DominikMart…

平均反正切绝对百分比误差(MAAPE)

这是对 MAPE 公式的一个巧妙改进,避免了其主要问题之一——在零处未定义。在解决这个问题的同时,这一改动也使其具有对称性。

思路很简单。我们知道:

[ \text{角度} = \arctan(\text{斜率}) ]

因此,如果考虑一个三角形,其邻边和对边分别等于 A 和 |A-F|,那么绝对百分比误差就是斜边的斜率。

斜率可以表示为比值,范围从 0 到无穷大,也可以表示为角度,范围从 0 到 90 度。作为比值的斜率就是传统上非常流行的绝对百分比误差。因此,该论文将作为角度的斜率提出作为一种稳定的替代方案。学过三角函数的读者会记得:

[ \arctan(x) = \text{角度}, \quad x = \tan(\text{角度}) ]

该论文将其命名为反正切绝对百分比误差,并将平均反正切绝对百分比误差定义为:

[ \text{MAAPE} = \frac{1}{n} \sum_{i=1}^{n} \arctan\left(\frac{|F_i - A_i|}{|A_i|}\right) ]

其中 (\arctan) 在所有从负无穷到正无穷的实数上都有定义。当 (A_i = 0) 时,(\frac{|F_i - 0|}{|0|}) 无定义,但 (\arctan) 在极限情况下趋近于 (\frac{\pi}{2})。因此,APE 的范围是 ([0, \infty)),而 AAPE 的范围是 ([0, \frac{\pi}{2}])。这使得它在任何地方都有定义,并且具有鲁棒性。

之前看到的对称性测试给出了以下结果(摘自论文):

可以看出,APE 中出现的非对称性在这里不那么明显。如果将 AAPE 与 APE 进行比较,之前看到的互补图会呈现出更好的形态。

可以看出,AAPE 仍然偏向于预测不足,但程度不如 APE,因此可能更有用。

相对平均绝对误差和相对均方误差(RelMAE & RelMSE)

存在相对度量,将预测的误差与参考预测(在大多数用例中是朴素预测,或更正式地说是随机游走预测)的误差进行比较。

缩放误差(MASE)

之前已经介绍过 MASE,并且知道它的定义。通过参考预测的平均 MAE 来缩放误差。Davidenko 和 Fildes(2013)已经证明,MASE 只不过是相对 MAE 的加权平均,权重是误差项的数量。这意味着同时包含 MASE 和 RelMAE 可能是冗余的。但无论如何,我们还是来探讨一下。

实验

选择一个真实数据集,运行 ARIMA、ETS 和 Croston 方法,以零预测为基线,计算所有这些度量(使用 GluonTS)。

数据集

选择了来自 UCI 机器学习库的零售数据集。这是一个跨国数据集,包含 2010 年 12 月 1 日至 2011 年 12 月 9 日期间某家位于英国的注册非门店在线零售的所有交易。该公司主要销售独特的全品类礼品。公司的许多客户是批发商。

列:

  • InvoiceNo:发票编号。名义变量,一个 6 位整数,唯一分配给每笔交易。如果此代码以字母“c”开头,表示取消。
  • StockCode:产品(项目)代码。名义变量,一个 5 位整数,唯一分配给每个不同的产品。
  • Description:产品(项目)名称。名义变量。
  • Quantity:每笔交易中每个产品(项目)的数量。数值变量。
  • InvoiceDate:发票日期和时间。数值变量,生成每笔交易的日期和时间。
  • UnitPrice:单价。数值变量,每单位产品的英镑价格。
  • CustomerID:客户编号。名义变量,一个 5 位整数,唯一分配给每个客户。
  • Country:国家名称。名义变量,每个客户居住的国家名称。

预处理:

  • 按 StockCode、Country、InvoiceDate 分组 -> 数量求和、单价求平均
  • 填充零以使时间序列连续
  • 将数量的下限值裁剪为 0(去除负数)
  • 仅选取长度大于 52 天的时间序列
  • 训练/测试分割日期:2011-11-01

统计信息:

  • 时间序列数量:3828。过滤后:3671
  • 数量:均值 = 3.76,最大值 = 12540,最小值 = 0,中位数 = 0
  • 严重向零偏斜

时间序列分割

使用前面讨论的相同分割方法——间歇型、块状型、平滑型和波动型——将数据集分为四类。

可以看出,数据集中近 98% 的时间序列要么是间歇型的,要么是块状型的,这非常符合用例。

结果

每个度量的预测方法排名:

包含了零预测作为一种测试方法,可以判断哪些预测指标在用于间歇性需求时需要谨慎。

可以看出,sMAPE、RelMAE、MAE、MAPE、MASE 和 ND(即按销量加权的 MAPE)都倾向于零预测,并将其评为最佳预测方法。但是,当查看与库存相关的指标(如 CFE、PIS 等,这些指标衡量预测中的系统性偏差)时,零预测的表现最差。

本应在间歇性需求中表现更好的 MASE 也表现不佳,将零预测评为最佳。根据这些度量选择预测方法的风险在于,最终预测值会过低,从而对下游计划任务造成严重破坏。

令人惊讶的是,当查看 PIS、MSE、CFE、NOSp 等指标时,ETS 和 ARIMA 表现相当不错(优于 Croston),分别排名第一和第二。

Croston 仅在 MAAPE、MRAE 和 CFE_min 上表现良好。

排名相关性(聚合级别)

根据不同指标对不同预测方法进行了排名。如果一组指标衡量的是同一事物,那么这些排名也应该显示出良好的相关性。因此,计算这些排名的 Spearman 等级相关性,看看哪些指标相互一致。

可以看到两大组指标:组内呈正相关,组间呈负相关。MAE、MRAE、MASE、MAPE、RelMAPE、ND 和 sMAPE 属于一组;而 MSE、RMSE、CFE、PIS、SPEC_0.75、SPEC_0.5、SPEC_0.25、NOSp、PBMAE、RelRMSE 和 NRMSE 属于另一组。MAAPE 和 CFE_min 也属于第二组,但相关性较弱。

这两组是否衡量了预测的不同特征?

排名相关性(单项商品级别)

现在查看单项商品级别上指标之间的一致性,而不是聚合级别。例如,对于正在预测的每个商品,基于这些不同指标对预测方法进行排名,并对这些排名运行 Spearman 等级相关性。

与聚合级别视图类似,这里也可以找到两组指标,但与聚合级别相反,两组之间没有发现强烈的负相关。SPEC_0.5(对机会成本和库存持有成本赋予相同权重)和 PIS 表现出高度相关性,主要是因为它们在概念上是相同的。

载荷图

另一种可视化和理解不同指标相似性的方法是使用单项商品级别的指标,运行二维主成分分析(PCA),并绘制指向提取出的两个主成分的原始特征方向。这显示了原始变量如何促成主成分的构建。因此,假设两个 PCA 成分是谈论预测“准确性”时衡量的主要“属性”,载荷图显示了这些不同特征(指标)如何促成了它,包括大小和方向。

在这里,关系更加清晰。大多数指标围绕两个成分聚集在一起。MAE、MSE、RMSE、CFE、CFE_max 和 SPEC 指标在载荷图中占据相似的空间,看起来像是“预测偏差”成分,因为 CFE 和 SPEC 指标主导了这个成分。PIS 在另一侧,与 CFE 几乎呈 180 度,因为 PIS 的符号相反。

另一个成分可能是“准确性”成分。由 RelRMSE、MASE、MAAPE、MRAE 等主导。MAPE 似乎横跨在两个成分之间,MAAPE 也是如此。

还可以看到 sMAPE 可能衡量的是完全不同的东西,就像 NOSp 和 CFE_min 一样。

由于符号的原因,PIS 与 CFE、SPEC_0.5 和 SPEC_0.75 呈 180 度,但它们衡量的是同一事物。SPEC_0.25(对机会成本赋予 0.25 的权重)与另一组显示出更大的相似性,可能是因为由于对库存持有成本的重罚,它偏向于预测不足。

结论与建议

在这篇简短的博客文章中虽然没有做大量实验(没有 Peter Wallström 的论文那么多),但所做的实验已经显示出相当多的信息。知道了不能依赖 sMAPE、RelMAE、MAE、MAPE、MASE 等指标,因为它们会将零预测评为最佳。还知道没有单一的指标可以说明全部问题。如果只看 MAPE 之类的东西,就没有衡量预测中的结构性偏差。而如果只看 CFE,它可能会显示出美好的假象,而事实并非如此。

快速总结一下 Peter Wallström 论文中的发现(加上自己的一些结论):

  • MSE 和 CFE,尽管在载荷图中出现在相同的位置,但在不同的预测方法之间并没有一致地显示出这种关系。这在载荷图中也可以看到。对于 Croston 和 ETS,CFE 远离第二个成分。
  • MAE 和 MSE 密切相关,它们衡量相同的变异性。由于 MAE 显示出对零预测的倾向,因此最好使用基于 MSE 的误差指标。
  • CFE 本身在衡量预测偏差方面并不可靠。应该与 PIS 或 SPEC 等指标配对使用,以获得完整的图景。当考虑某个时间点时,CFE 可能会掩盖偏差趋势。如果 CFE 的绝对值较小,其符号不透露任何偏差信息。当检查其他指标时,正的 CFE(预测不足)可能只是某种方法预测过度时的随机数字。低 CFE 是在需求发生后补货的结果,而这是 CFE 无法追溯的。
  • Peter 还建议不要使用 CFE_max 和 CFE_min,而应使用 PIS 和 NOSp 等指标。

除此之外,SPEC 分数和 MAAPE(论文中未评述)也是合适的指标。

GitHub 仓库:github.com/manujosephv…

查看本系列的其他文章:

  • 预测误差度量:通过实验理解它们
  • 预测误差度量:缩放误差、相对误差及其他
  • 预测误差度量:间歇性需求

参考文献

  1. Peter Wallström, 2009, 《间歇性需求的预测技术与预测误差评估》
  2. Kim et al., 2016. 《一种用于间歇性需求预测的绝对百分比误差新指标》
  3. Davidenko & Fildes, 2013, 《衡量预测准确性:SKU 级需求预测中判断调整的案例》
  4. Martin et al., 2013, 《用于块状和间歇性需求预测的新指标:库存导向预测误差成本》FINISHED