在《销量预测中的误差指标分析》一文中,我们介绍了一些时间序列点预测中常用的指标。而通过在《为什么需要考虑销量的随机性?》、《报童问题》和《报童问题的简单解法》等文中的探讨,我们已经看到,将需求预测的方式从点预测改为概率分布预测,可以有效降低库存管理的风险,获得更大的期望收益。针对时间序列的概率分布预测,我们也已经介绍了 DeepAR、Transformer 等若干深度学习模型。那么,该如何评估概率分布预测的效果呢?在《概率预测的评估方法简介》一文中,我们已经介绍了一些通用的概率预测的评估指标。在本文中,我们再补充介绍几个适用于时间序列的概率预测评估指标。
1. Quantile Loss
在《分位数回归》一文中,我们证明了以最小化分位数损失作为训练目标,可以得到分位数预测模型。其实反过来看,分位数损失也可以作为概率分布预测的评估指标。
用 Zt 表示 t 时刻的真实值,用 Z^tρ 表示概率分布预测给出的 t 时刻的 ρ 分位数,总共预测 h 步,我们定义 Quantile Loss 为
QLρ=2t=1∑h(Z^tρ−Zt)(ρI{Z^tρ>Zt}−(1−ρ)I{Z^tρ≤Zt})
在此基础上定义 weighted Quantile Loss 为
wQLρ=t=1∑hZtQLρ
不难发现取 ρ=0.5 时
wQL0.5=∑t=1hZt∑t=1h∣Z^t0.5−Zt∣=wMAPE
wMAPE 是在销量点预测中常用的评估指标,现在我们知道它可以看作分位数损失的一个特例,或者反过来说,分位数损失可以看作 wMAPE 的泛化。因此,选择分位数损失作为概率分布预测的评估指标还有一个额外的好处,就是可以把点预测和概率分布预测的评估统一起来。
2. Coverage
沿用上面的符号,我们定义 Coverage 指标为
Cρ=h1t=1∑hI{Z^tρ≥Zt}
也就是在 h 步预测中,真实值 Zt 小于等于预测的 ρ 分位数 Z^tρ 的比例。直观上来看,如果预测得越准,这个比例应该越接近 ρ。
事实上
EI{Zρ≥Z}=∫−∞+∞I{Zρ≥z}f(z)dz=∫−∞Zρf(z)dz=F(Zρ)=ρ
因此,Z^tρ→Ztρ,则 Cρ→ρ。
这个指标的优势是非常直观。我们可以取多个 ρ,分别计算 Cρ,然后作 Cρ−ρ 图,如果越靠近直线 y=x,说明预测越准。
3. MSIS (Mean Scaled Interval Score)
这是 M4 比赛的指标之一,用来评估预测区间的好坏。其定义为
MSIS=n−m1∑t=m+1n∣Zt−Zt−m∣h1∑t=1h(U^t−L^t)+α2(L^t−Zt)I{Zt<L^t}+α2(Zt−U^t)I{Zt>U^t}
其中 α 是显著性水平,U^ 和 L^ 是预测区间的上界和下界。举例来说,我们给出了 95% 预测区间的上下界,此时 α=0.05。
我们先看分子,第一项惩罚的是上下界之间的间隔,第二项惩罚的是真实值低于下界的情况,第三项惩罚的是真实值高于上界的情况。单看分子很好理解,直观上就是要用尽可能窄的区间把真实值“包”进去。
那么分母是个什么玩意儿呢?它实际上借鉴自点预测的一种评估指标,MASE (Mean Absolute Scaled Error)。
MASE=n−m1∑t=m+1n∣Zt−Zt−m∣h1∑t=1h∣Z^t−Zt∣
MASE 实际上是用测试集上的 MAE 除以一个 Naïve 预测模型在训练集上的 MAE。所谓的 Naïve 模型,有两种情况,对于非周期性序列,则预测 Z^t+1∣t=Zt;对于周期性序列,设周期为 m,则预测 Z^t+1∣t=Zt−m。MASE 的意义在于,所有的模型都来跟 Naïve 模型比一比,看看能比它好出多少。
总之需要注意的是,MASE 和 MSIS 的分母是用训练集来计算的。
4. CRPS (Continuous Ranked Probability Score)
这个指标我们在《概率预测的评估方法简介》中已经介绍过了,它也是概率预测中使用最广泛的指标之一,它的定义如下:
CRPS(Ff,Fo)=∫−∞+∞[Ff(x)−Fo(x)]2dx
其中 Ff 是预测分布的 CDF,Fo 是观测值的 CDF。由定义可知,CRPS 衡量的是预测分布和真实分布的差异,当预测分布与真实分布完全一致时,CRPS 为零。预测分布过于集中、过于分散,亦或是偏离观测值太远都会导致 CRPS 增大。
问题在于,在我们的场景下,每天的销量只会发生一次——我们不能看到某一件商品在多元宇宙中的销量——无法给出观测值的 CDF。这种情况下,可以用下面的式子来估算
CRPS=h1t=1∑h∫−∞∞[Ft(x)−ϵ(x−Zt)]2dx
其中
ϵ(t)={0,t<01,t≥0
为单位阶跃函数。
前面已经提到分位数损失可以看作 wMAPE 的泛化。事实上,这种定义下的 CRPS 也可以看作是点预测中常见的 MAE 指标的泛化,这也是为什么我们要在这里炒冷饭。如果我们输出的仅仅是一个点预测 Z^t,则它的 CDF 也只能使用单位阶跃函数近似为 Ft(x)=ϵ(x−Z^t)。代入到 CRPS 的定义中,可以发现
CRPS=h1t=1∑h∫−∞∞[ϵ(x−Z^t)−ϵ(x−Zt)]2dx=h1t=1∑h∫min(Z^t,Zt)max(Z^t,Zt)12dx=h1t=1∑h∣Z^t−Zt∣≡MAE
CRPS 评估的是分布整体的情况,而不是某个分位数,这是它的优势。这也意味着模型必需能够输出累积分布函数。与分位数损失类似,CRPS 也可以将点预测和概率分布预测的评估统一起来,但是 MAE 并不像 wMAPE 应用得那么频繁。
参考文献
- Salinas D, Flunkert V, Gasthaus J, et al. DeepAR: Probabilistic forecasting with autoregressive recurrent networks[J]. International Journal of Forecasting, 2019.
- M4 Competitor’s Guide
- Mean absolute scaled error - Wikipedia