预测误差度量:间歇性需求
在之前的几篇博客文章中,我们已经介绍了实践中使用的所有流行预测度量方法。但它们都主要关注平稳且稳定的时间序列。然而,在现实世界中存在一种完全不同的时间序列类型——间歇性和集中性需求。
通俗地说,我们将间歇性序列称为具有大量零需求周期的序列,即零星需求。Syntetos和Boylan(2005)提出了一种更正式的时间序列分类方法。他们使用了时间序列的两个参数进行分类——平均需求间隔(ADI)和变异系数的平方。
平均需求间隔是两个非零需求之间的平均时间间隔周期。即,如果一个时间序列的ADI为1.9,这意味着平均每1.9个时间周期我们就会看到一个非零需求。
ADI是间歇性的度量;该值越高,序列的间歇性就越强。 变异系数是标准化后的标准差。我们计算标准差,然后通过序列的均值进行缩放,以防止尺度依赖性。
这显示了时间序列的变异性。如果较高,意味着序列的变异性也较高。 基于这两个需求特征,Syntetos和Boylan从理论上推导出了定义行为类型显著变化的截止值。他们将间歇性截止值定义为1.32,将截止值定义为0.49。使用这些截止值,他们定义了高值和低值,然后将两者结合形成一个网格,将时间序列分为平稳型、波动型、间歇型和集中型。
我们讨论过的预测度量方法主要设计用于处理平稳和波动的时间序列。但在现实世界中,存在更多的间歇性和集中性时间序列。典型的例子包括备件销售、零售销售的长尾等。
传统误差度量的不适用性
间歇性和集中性序列的单一决定性特征是零需求的次数。这对我们目前看到的许多度量方法造成了严重破坏。由于除以零(现在几乎可以肯定会出现),所有百分比误差(例如MAPE)都变得不稳定。类似地,相对误差(例如MRAE)——我们使用参考预测来缩放误差——也变得不稳定,尤其是在使用朴素预测作为参考时。这是因为会有多个零需求周期,这将产生零参考误差,从而导致未定义。
sMAPE是针对这种除以零的情况设计的,但当零需求的数量增加时,sMAPE也存在问题。而且我们从之前的探索中知道,当预测值远高于实际值或反之亦然时,sMAPE也会有问题。在间歇性需求的情况下,这种情况比比皆是。例如,对于零需求,一种方法预测1,另一种方法预测10,结果都是200%。
新的推荐误差度量
累积预测误差(CFE、CFE最小值、CFE最大值)
我们之前已经见过累积预测误差(也称为预测偏差)。它只是整个时间范围内的带符号误差,因此负误差和正误差相互抵消。这对供应链中的库存过剩或不足有直接影响。Peter Wallström[1]也提倡使用CFE最大值和CFE最小值。CFE为零也可能是偶然发生的,并且在大的时间范围内,我们会错过中间的许多细节。因此,他建议结合CFE最大值和CFE最小值来查看CFE,它们是时间范围内CFE的最大值和最小值。
更优百分比(PBMAE、PBRMSE等)
我们已经见过更优百分比。这也是用于间歇性需求的一个相当不错的度量。它没有数值不稳定的问题,并且处处有定义。但它不测量误差的大小,而是测量误差的计数。
缺货次数(NOS和NOSp)
通常,为了追踪预测是否存在偏差,我们使用跟踪信号(即CFE/MAD)。但设置用于触发警告的限制(+/- 4)是基于需求呈正态分布的假设推导出来的。在间歇性需求的情况下,它不呈正态分布,因此这种触发会产生许多误报。
另一种替代方法是缺货次数度量,更常见的是缺货次数百分比。它只是计算累积预测误差大于零导致缺货的实例数量。非常高的数值或较低的数值表明存在任一方向的偏差。
库存周期(PIS)
NOS无法识别系统性误差,因为它不考虑库存结转的时间维度。PIS更进一步,测量预测物品在库存中度过总周期数或缺货周期数。
为了理解PIS的工作原理,我们举一个例子。 假设在三天的时间范围内,每天预测一个单位。在第一周期开始时,一个物品被交付到虚拟库存(这是相对于现实的简化)。如果第一天没有需求,结果就是PIS加一。当需求发生时,需求从预测中减去。第一周期需求为一导致第一周期PIS为零,CFE为-1。如果三个周期内需求为零,第三周期的PIS等于加六。第一天的物品在库存中待了三天,第二天的物品在库存中待了两天,最后一个物品在库存中待了一天(摘自《以间歇性需求为重点的预测技术和预测误差评估》)。
正数表示需求预测过高,负数表示需求预测不足。它可以很容易地计算为CFE的累积和,即图中条形图下方的面积。
库存导向预测误差成本(SPEC)
SPEC是一种较新的度量(Martin等人,2020[4]),它试图走与库存周期相同的路线,但稍微更复杂。
虽然起初看起来令人生畏,但我们可以直观地理解它。计算的核心由两个内部min项处理——机会成本和库存持有成本。这是我们从库存管理角度在供应链中需要平衡的两种成本。
左边项测量因预测不足而产生的机会成本。这是如果我们有足够库存本可以实现的销售额。例如,如果需求是10,而我们只预测了5,我们就有5的机会损失。现在,假设我们在过去三个时间周期一直预测5,并且没有需求,然后出现了10的需求。所以我们有15的库存,我们满足了10。这里没有机会成本。我们还可以说,一个时间周期的机会成本不会大于该时间周期的需求。结合这些条件,我们得到了方程的第一项,它测量机会成本。
使用相同的逻辑,但反过来,我们可以推导出库存持有成本(我们预测过高时)的类似方程。这由方程中的右边项处理。
一个时间步的SPEC实际上会查看所有先前的时间步,计算每个时间步的机会成本和库存持有成本,并将它们相加得到一个数字。在任何时间步,要么有机会成本,要么有库存持有成本,这又取决于到该时间步为止的累积预测和实际值。
而时间序列预测范围的SPEC是所有时间步的平均值。
现在有两个项让我们对机会成本和库存持有成本应用不同的权重,根据组织的策略,我们可以选择正确的权重类型。建议是将权重的总和保持为1,并且在零售环境中是常见的选择。
这种方法的一个缺点是时间复杂度。我们需要嵌套循环来计算这个度量,这使得计算速度较慢。
实现可在此处获取:https://github.com/DominikMartin/spec_metric
平均反正切绝对百分比误差(MAAPE)
这是对MAPE公式的一个巧妙技巧,避免了它的一个主要问题——在零处未定义。在解决这个问题的同时,这个变化也使其对称。
想法很简单。我们知道,
所以,如果我们考虑一个三角形,邻边和对边分别等于A和|A-F|,那么绝对百分比误差就是斜边的斜率。
一种用于间歇性需求预测的新的绝对百分比误差度量
斜率可以测量为比率,范围从0到无穷大,也可以测量为角度,范围从0到90度。作为比率的斜率是传统的绝对百分比误差,相当流行。因此,该论文提出了作为稳定替代方案的斜率角度。那些还记得三角学的人会记得:
该论文将其命名为反正切绝对百分比误差,并定义平均反正切绝对误差为:
其中 arctan在所有实数值上从负无穷到正无穷都有定义。当。因此,扩展来看,当APE范围是时,AAPE范围是。这使其处处有定义,从而具有鲁棒性。
我们之前看到的对称性测试给出了以下结果(来自论文)
我们可以看到,之前在APE中看到的不对称性在这里并不明显。我们之前看到的互补图,如果我们将AAPE与APE进行比较,会发现它的形状要好得多。
我们可以看到AAPE仍然偏向于预测不足,但不像APE那样严重,因此可能更有用。
相对平均绝对误差和相对均方误差(RelMAE和RelMSE)
这些是相对度量,将预测的误差与参考预测(在大多数用例中是朴素预测或更正式地说是随机游走预测)的误差进行比较。
缩放误差(MASE)
我们之前也见过MASE,并知道它是如何定义的。我们通过参考预测的平均MAE来缩放误差。Davidenko和Fildes,2013[3]表明,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分组 -> 数量总和,和UnitPrice平均值 填充零以使时间序列连续 将数量的下限值裁剪为0(移除负值) 仅取长度大于52天的时间序列。 训练测试拆分日期:2011-11-01
统计: 时间序列数量:3828。过滤后:3671 数量:平均值 = 3.76,最大值 = 12540,最小值 = 0,中位数 = 0 严重偏向零
时间序列分割
使用我们之前讨论的相同分割——间歇性、集中性、平稳性和波动性——我将数据集分为四部分。
我们可以看到,数据集中几乎98%的时间序列要么是间歇性的,要么是集中性的,这对于我们的用例来说是完美的。
结果
每个度量的预测方法排名
我们包括了零预测作为一种试金石,它将告诉我们在用于间歇性需求时,我们应该警惕哪些预测指标。
我们可以看到sMAPE、RelMAE、MAE、MAPE、MASE和ND(即体积加权的MAPE)都偏向零预测,并将其排名为最佳预测方法。但当我们查看与库存相关的指标(如CFE、PIS等,测量预测中的系统性偏差)时,零预测是表现最差的。
本应在间歇性需求中表现更好的MASE也失败了,并将零预测评为最佳。基于这些度量选择预测方法的危险在于,我们最终预测得过低,这将严重破坏下游的计划任务。
令人惊讶的是,ETS和ARIMA表现相当好(优于Croston),并且在查看PIS、MSE、CFE、NOSp等指标时排名第一和第二。 Croston仅在查看MAAPE、MRAE和CFE_min时表现良好。
排名相关性(总体)
我们基于所有这些不同的度量对不同的预测方法进行了排名。如果一组度量测量的是同一事物,那么这些排名也会显示出良好的相关性。因此,让我们计算这些排名的斯皮尔曼等级相关性,看看哪些度量彼此一致。
我们可以看到两大组度量,它们内部正相关,而组间负相关。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也属于第二组,但相关性较弱。
这两组是否测量了预测的不同特征?
排名相关性(项目级别)
现在让我们在项目级别查看度量之间的一致性,而不是总体级别。例如,对于我们正在预测的每个项目,我们基于这些不同的度量对预测方法进行排名,并对这些排名运行斯皮尔曼等级相关性。
与总体级别视图类似,这里我们也可以找到两组度量,但与总体级别相反,我们无法找到跨两组的强负相关性。SPEC_0.5(我们对机会成本和库存持有成本赋予相等权重)和PIS显示出高度相关性,主要是因为它们在概念上是相同的。
载荷图
另一种可视化和理解不同度量相似性的方法是使用项目级别度量,并运行二维PCA。并绘制指向我们使用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的论文[1]多),但无论我们做了什么,都已经向我们展示了很多。我们知道不要依赖像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仓库 – https://github.com/manujosephv/forecast_metrics
查看本系列的其他文章 预测误差度量:通过实验理解它们 预测误差度量:缩放、相对和其他误差 预测误差度量:间歇性需求
参考文献
Peter Wallström, 2009, 以间歇性需求为重点的预测技术和预测误差评估 Kim等人,2016. 一种用于间歇性需求预测的新的绝对百分比误差度量 Davidenko & Fildes. 2013, 测量预测准确性:SKU级别需求预测的判断调整案例 Martin等人,2013, 一种用于集中性和间歇性需求预测的新度量:库存导向预测误差成本