主要介绍预测误差和指数平滑模型的相关理论,然后再通过Python的statsmodels封装的指数平滑函数预测需求。
1预测误差
预测误差是指预测结果与预测对象发展变化的真实结果之间的差距。这种误差分为绝对误差和相对误差。绝对误差是预测值与实际观测值的绝对差距,而相对误差则是这种绝对差距相对于观测值的百分比。从这里可以看出,预测都是错误的,只是错多错少的问题,那么该如何客观判断某个预测模型的效果好不好,以及它和其他预测模型相比效果如何?
这就要介绍关于如何评估预测误差的指标,也就是评估预测模型的误差,并围绕预测误差建立相关指标。按照Nicolas Vandeput的说法,先区分预测准确性(Accuracy)和预测偏差(Bias)
预测准确性衡量预测和真实值之间有多大的差距。预测准确性给出了误差(error)大小的概念,但不是它们的总体方向。
预测偏差代表历史平均误差的总体方向,它衡量预测是否过高或过低。
简单理解,假如预测了10次,预测准确性衡量的是每次预测值和真实值的误差是多少,它的衡量颗粒度是“每次预测”;而预测偏差则不关注每次预测误差是多少,它衡量的是相比较真实值,这10次预测值的平均误差,总体上是不是太高或太低。
以下图为例,每个圆点表示1次预测,六边形靶心表示最接近真实值用0环表示,由内往外的空心六边形分别用1环、2环和3环表示。如左上角的预测,它是预测准确但存在偏差的,每次的预测都落在2环(误差小,预测准确),但所有的预测误差分布都是聚集在一起,如果误差都是正的则表示预测值过高,反之则是预测值过低;而最左下的预测是准确且不偏差的,每次预测都落在0-1环(比左上角的预测误差更小,预测更准确),且所有预测误差分布均匀分布而非聚集在一起,这样的预测误差有正有负相互抵消,就不会出现预测过高或过低的偏差;右上角的预测是不准确且偏差的,每次的预测落在2-3环(误差大,预测不准确),而且所有预测误差分布都是聚集在一起,会出现预测过高或过低的偏差;右下角的预测是不准确但也不偏差的,每次预测落在0-2环(误差大,预测不准确),但所有预测误差分布均匀分布而非聚集在一起,不会出现预测过高或过低的偏差。
注:此图引自Nicolas Vandeput,Data Science for Supply Chain Forecasting一书
实际上,左下角准确且无偏差的预测,正是每个预测模型都追求的理想预测效果,而右上角不准确切偏差的预测,则是每个预测模型都在极力避免的糟糕预测效果,而左上角准确但偏差、右下角不准确但不偏差的预测则是介于理想和糟糕预测效果之间,是多数预测模型最常碰到的预测效果。
下面,我们通过数学定义预测误差。
假设有历史时期,定义第期的真是需求值为,预测需求值为,则该期的预测误差等于:
围绕预测误差就可以建立偏差(Bias)、平均绝对值百分比误差(Mean Absolute Percentage Error,MAPE)、平均绝对值误差(Mean Absolute Error,MAE)和均方根误差(Root Mean Square Error,RMSE)等一系列预测误差指标。这些指标适用于各种预测模型。
(1)偏差计算公式为
因为偏差可能有正有负,不太好比较判断,可以通过如下公式可以将偏差标准化到0-1间
(2)平均绝对值百分比误差(MAPE)计算公式为
(3) 平均绝对值误差(MAE)计算公式为
和偏差一样,可以通过如下公式可以将平均绝对值误差(MAE)标准化到0-1间
(4)均方根误差(RMSE)计算公式为
标准化公式为
如果不用开平方根的话,那么RMSE也可以直接转化为均方误差(MeanSquare Error,MSE),其计算公式为
估计大家在这个时候已经懵了:我们该选择哪个指标用以衡量预测误差?这个问题没有绝对的答案,多数时候需要结合数据特征和预测模型做试验验证,再从中选择合适的指标。Nicolas Vandeput从中位数和均值优化数值模型的角度,总结了如下建议:
(1)若以RMSE作为优化指标,它以需求平均值为目标进行优化;若以MAE作为优化指标,它将试图使需求过高与需求过低一样频,这意味着它以需求中值为目标进行优化。简而言之,MAE的优化目标是需求中值,而RMSE的优化目标是需求平均值。
(2)RMSE优化目标是需求平均值,它会给予越大的误差越大的权重,使预测不出现偏差,但对误差大的需求异常点特别敏感(会赋予大的权重);MAE优化目标是需求中值,它对误差大的需求异常点不敏感,但会导致预测出现偏差。
(3)如果使用MAE导致大的预测偏差,我们可能想使用RMSE;如果数据集包含许多异常点,导致预测偏斜,我们可能想使用MAE。甚至可能同时使用两者指标。
Nicolas Vandeput总结建议的详细推导过程可参见著作Data Science for Supply Chain Forecasting。在接下来的预测中,我们将同时采用RMSE%和MAE%作为误差评估的指标。
2 时间序列预测:指数平滑法原理
指数平滑(exponential smoothing)法是应用广泛的时间序列预测方法,其核心思想是对上一期的真实需求和预测需求分别赋予权重,将两者加权和作为本期的预测需求值。指数平滑法有3种模型:
(1)简单指数平滑(Simple exponential smoothing),也叫1次指数平滑,适用于没有趋势和没有季节性特征的数据;
(2)Holt指数平滑(Holt exponential smoothing),也叫2次指数平滑,适用于有趋势但没有季节性特征的数据;其趋势又可分为加法和乘法类型,以及趋势衰减的阻尼(damped)模型;
(3)Holt-Winter指数平滑((Holt-Winter exponential smoothing),也叫3次指数平滑,适用于有趋势和有季节性特征的数据;其趋势和季节性又可分为加法和乘法类型,因为是基于Holt指数平滑的基础再做1次平滑,所以也有趋势衰减的阻尼模型。
模型名称 | 数据特征 | |
1次平滑 | 简单指数平滑 | 没有趋势、没有季节性特征 |
2次平滑 | Holt指数平滑-加法模型 | 有趋势、没有季节性特征 |
Holt指数平滑-乘法模型 | ||
阻尼Holt指数平滑-加法模型 | ||
阻尼Holt指数平滑-乘法模型 | ||
3次平滑 | Holt-Winter指数平滑-加法模型 | 有趋势、有季节性特征 |
Holt-Winter指数平滑-乘法模型 | ||
阻尼Holt-Winter指数平滑-加法模 |