Python与供应链-2预测误差及指数平滑需求预测模型

本文介绍了预测误差的几种衡量指标,如MAPE、MAE和RMSE,并探讨了指数平滑法在时间序列预测中的原理。通过Python的statsmodels库,展示了如何进行指数平滑模型的实践,包括简单指数平滑、Holt指数平滑和阻尼Holt指数平滑。在实践中,通过调整模型参数并评估预测误差,确定了最佳预测模型。
摘要由CSDN通过智能技术生成

主要介绍预测误差和指数平滑模型的相关理论,然后再通过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一书

实际上,左下角准确且无偏差的预测,正是每个预测模型都追求的理想预测效果,而右上角不准确切偏差的预测,则是每个预测模型都在极力避免的糟糕预测效果,而左上角准确但偏差、右下角不准确但不偏差的预测则是介于理想和糟糕预测效果之间,是多数预测模型最常碰到的预测效果。

下面,我们通过数学定义预测误差。

假设有n历史时期,定义第t期的真是需求值为d_t{},预测需求值为f_t{},则该期的预测误差e_t{}等于:

e_t{}=f_t{}-d_t{}

围绕预测误差就可以建立偏差(Bias)、平均绝对值百分比误差(Mean Absolute Percentage Error,MAPE)、平均绝对值误差(Mean Absolute Error,MAE)和均方根误差(Root Mean Square Error,RMSE)等一系列预测误差指标。这些指标适用于各种预测模型。

(1)偏差计算公式为

bias=\frac{1}{n}\sum_{n}^{}e_t{}=\frac{1}{n}\sum_{n}^{}(f_t{}-d_t{})

 因为偏差可能有正有负,不太好比较判断,可以通过如下公式可以将偏差标准化到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指数平滑-乘法模型
阻尼
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Py小趴

整理不易,感谢金主!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值