时间序列预测的评估指标补遗

本文链接个人站 | 简书 | CSDN
版权声明:除特别声明外,本博客文章均采用 BY-NC-SA 许可协议。转载请注明出处。

《销量预测中的误差指标分析》一文中,我们介绍了一些时间序列点预测中常用的指标。而通过在《为什么需要考虑销量的随机性?》《报童问题》《报童问题的简单解法》等文中的探讨,我们已经看到,将需求预测的方式从点预测改为概率分布预测,可以有效降低库存管理的风险,获得更大的期望收益。针对时间序列的概率分布预测,我们也已经介绍了 DeepARTransformer 等若干深度学习模型。那么,该如何评估概率分布预测的效果呢?在《概率预测的评估方法简介》一文中,我们已经介绍了一些通用的概率预测的评估指标。在本文中,我们再补充介绍几个适用于时间序列的概率预测评估指标。

1. Quantile Loss

《分位数回归》一文中,我们证明了以最小化分位数损失作为训练目标,可以得到分位数预测模型。其实反过来看,分位数损失也可以作为概率分布预测的评估指标。

Z_t 表示 t 时刻的真实值,用 \hat Z_t^\rho 表示概率分布预测给出的 t 时刻的 \rho 分位数,总共预测 h 步,我们定义 Quantile Loss 为
QL_\rho = 2\sum_{t=1}^{h}(\hat Z_t^\rho-Z_t)\left(\rho I_{\{\hat Z_t^\rho > Z_t\}} - (1-\rho)I_{\{\hat Z_t^\rho \leq Z_t\}}\right)
在此基础上定义 weighted Quantile Loss 为
wQL_\rho = \frac{QL_\rho}{\sum\limits_{t=1}^h Z_t}
不难发现取 \rho=0.5
wQL_{0.5}=\frac{\sum_{t=1}^h|\hat Z_t^{0.5}-Z_t|}{ \sum_{t=1}^h Z_t} \equiv wMAPE
wMAPE 是在销量点预测中常用的评估指标,现在我们知道它可以看作分位数损失的一个特例,或者反过来说,分位数损失可以看作 wMAPE 的泛化。因此,选择分位数损失作为概率分布预测的评估指标还有一个额外的好处,就是可以把点预测和概率分布预测的评估统一起来。

2. Coverage

沿用上面的符号,我们定义 Coverage 指标为
C_\rho=\frac{1}{h}\sum_{t=1}^h I_{\{\hat Z_t^\rho \geq Z_t\}}
也就是在 h 步预测中,真实值 Z_t 小于等于预测的 \rho 分位数 \hat Z_t^\rho 的比例。直观上来看,如果预测得越准,这个比例应该越接近 \rho

事实上
\begin{aligned} \mathbb E I_{\{Z^\rho \geq Z \}} &= \int_{-\infty}^{+\infty} I_{\{ Z^\rho \geq z\}} f(z)\mathrm dz \\ &= \int_{-\infty}^{Z^\rho} f(z)\mathrm dz \\ &= F(Z^\rho) \\ &= \rho \end{aligned}
因此,\hat Z_t^\rho\to Z_t^\rho,则 C_\rho\to\rho

这个指标的优势是非常直观。我们可以取多个 \rho,分别计算 C_\rho,然后作 C_\rho-\rho 图,如果越靠近直线 y=x,说明预测越准。

3. MSIS (Mean Scaled Interval Score)

这是 M4 比赛的指标之一,用来评估预测区间的好坏。其定义为
MSIS = \frac{\frac{1}{h}\sum_{t=1}^h(\hat U_t-\hat L_t)+\frac{2}{\alpha}(\hat L_t-Z_t)I_{\{Z_t<\hat L_t\}} +\frac{2}{\alpha}(Z_t-\hat U_t)I_{\{Z_t>\hat U_t\}} }{\frac{1}{n-m}\sum_{t=m+1}^n|Z_t-Z_{t-m}|}
其中 \alpha 是显著性水平,\hat U\hat L 是预测区间的上界和下界。举例来说,我们给出了 95% 预测区间的上下界,此时 \alpha=0.05

我们先看分子,第一项惩罚的是上下界之间的间隔,第二项惩罚的是真实值低于下界的情况,第三项惩罚的是真实值高于上界的情况。单看分子很好理解,直观上就是要用尽可能窄的区间把真实值“包”进去。

那么分母是个什么玩意儿呢?它实际上借鉴自点预测的一种评估指标,MASE (Mean Absolute Scaled Error)。
MASE = \frac{\frac{1}{h}\sum_{t=1}^h|\hat Z_t-Z_t|}{\frac{1}{n-m}\sum_{t=m+1}^n|Z_t-Z_{t-m}|}
MASE 实际上是用测试集上的 MAE 除以一个 Naïve 预测模型在训练集上的 MAE。所谓的 Naïve 模型,有两种情况,对于非周期性序列,则预测 \hat Z_{t+1|t}=Z_t;对于周期性序列,设周期为 m,则预测 \hat Z_{t+1|t}=Z_{t-m}。MASE 的意义在于,所有的模型都来跟 Naïve 模型比一比,看看能比它好出多少。

总之需要注意的是,MASE 和 MSIS 的分母是用训练集来计算的。

4. CRPS (Continuous Ranked Probability Score)

这个指标我们在《概率预测的评估方法简介》中已经介绍过了,它也是概率预测中使用最广泛的指标之一,它的定义如下:
CRPS(F^f, F^o) = \int_{-\infty}^{+\infty}\left[F^f(x)-F^o(x)\right]^2\mathrm dx
其中 F^f 是预测分布的 CDF,F^o 是观测值的 CDF。由定义可知,CRPS 衡量的是预测分布和真实分布的差异,当预测分布与真实分布完全一致时,CRPS 为零。预测分布过于集中、过于分散,亦或是偏离观测值太远都会导致 CRPS 增大。

问题在于,在我们的场景下,每天的销量只会发生一次——我们不能看到某一件商品在多元宇宙中的销量——无法给出观测值的 CDF。这种情况下,可以用下面的式子来估算
CRPS = \frac{1}{h}\sum_{t=1}^{h}\int_{-\infty}^{\infty}\left[F_t(x)-\epsilon(x-Z_t)\right]^2\mathrm dx
其中
\epsilon(t)= \begin{cases} 0, \qquad t < 0\\ 1, \qquad t\geq 0 \end{cases}
为单位阶跃函数。

前面已经提到分位数损失可以看作 wMAPE 的泛化。事实上,这种定义下的 CRPS 也可以看作是点预测中常见的 MAE 指标的泛化,这也是为什么我们要在这里炒冷饭。如果我们输出的仅仅是一个点预测 \hat Z_t,则它的 CDF 也只能使用单位阶跃函数近似为 F_t(x) = \epsilon(x-\hat Z_t)。代入到 CRPS 的定义中,可以发现
\begin{aligned} CRPS &= \frac{1}{h}\sum_{t=1}^{h}\int_{-\infty}^{\infty}\left[\epsilon(x-\hat Z_t)-\epsilon(x-Z_t)\right]^2\mathrm dx\\ &= \frac{1}{h}\sum_{t=1}^{h}\int_{\min(\hat Z_t, Z_t)}^{\max(\hat Z_t, Z_t)}1^2\mathrm dx\\ &= \frac{1}{h}\sum_{t=1}^{h}|\hat Z_t - Z_t|\\ &\equiv MAE \end{aligned}

CRPS 评估的是分布整体的情况,而不是某个分位数,这是它的优势。这也意味着模型必需能够输出累积分布函数。与分位数损失类似,CRPS 也可以将点预测和概率分布预测的评估统一起来,但是 MAE 并不像 wMAPE 应用得那么频繁。

参考文献

  1. Salinas D, Flunkert V, Gasthaus J, et al. DeepAR: Probabilistic forecasting with autoregressive recurrent networks[J]. International Journal of Forecasting, 2019.
  2. M4 Competitor's Guide
  3. Mean absolute scaled error - Wikipedia

推荐阅读更多精彩内容