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

主要介绍预测误差和指数平滑模型的相关理论,然后再通过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指数平滑-乘法模型
阻尼Holt-Winter指数平滑-加法模

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/773547.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分期乐(乐信)与银行机构合伙放贷,谁是真正的受益者?

分期乐(乐信)与银行机构的合作放贷模式,无疑在金融领域引起了广泛关注。这种合作模式似乎为各方都带来了不小的利益,但究竟谁是真正的受益者呢? 银行受益:对于银行机构而言,与分期乐&#xff0…

C是用什么语言写出来的?

C是用什么语言写出来的? C语言的起源和发展是一个迭代过程: 1. 最初的C语言编译器的开发始于对B语言的改进。B语言是由Ken Thompson设计的,它是基于BCPL语言简化而来的。在开始前我有一些资料,是我根据网友给的问题精心整理了一份「 C语言的…

RocketMQ学习笔记:分布式事务

这是本人学习的总结,主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、分布式事务的难题2、解决方式2.1、半事务消息和事务回查2.2、代码样例2.2.1、TransactionListener2.2.2、TransactionMQProducer2.2.3、MessageListenerConcurrently2.2.4、流程图 1、分布…

C++判断点是否在三角形内部

1.问题 判断点是否在三角形内部。 2.思路 计算向量AB和AP的叉积、向量BC和BP的叉积、向量CA和CP的叉积&#xff0c;如果所有的叉积符号相同&#xff0c;则点在三角形内部。 3.代码实现和注释 #include <iostream> #include <vector>// 计算两个二维向量的叉积 …

数据结构-队列-005

1链式队列 运行结果如下&#xff1a; 1.1链式队列结点定义 /*自定义一个数据类型*/ typedef struct student {char name[32];char sex;int age; }DATA_TYPE;/*定义一个链式队列结点*/ typedef struct link_queue_node {DATA_TYPE data;//数据域struct link_queue_node *pne…

什么是甲状腺相关眼病,四川眼科医院院长孙丰源教授这么说!

近年来&#xff0c;随着人们健康意识的逐渐增强&#xff0c;越来越多人开始关注甲状腺疾病。甲状腺是人体最大的内分泌腺&#xff0c;是维护人体健康的关键&#xff0c;它一旦发生异常&#xff0c;则会危害到多个器官和组织。不同的甲状腺疾病会呈现不同的症状&#xff0c;比如…

C# 快速将数据写入 Excel 单元格

目录 性能问题 Excel元素结构及写入原理 范例运行环境 配置Office DCOM 实现代码 组件库引入 核心代码 WriteArrayToExcel 神奇的 911 事件 小结 性能问题 将生成或查询到的数据&#xff0c;导出到 Excel 是应用中常用的一项功能。其中一些标准的写入单元格的方法如…

智慧公厕,让数据和技术更好服务社会生活

智慧公厕&#xff0c;作为智慧城市建设中不可忽视的一部分&#xff0c;正逐渐受到越来越多人的关注。随着科技的不断进步&#xff0c;智能化公厕已经成为一种趋势&#xff0c;通过数据的流转和技术的整合&#xff0c;为社会生活带来了更好的服务。本文以智慧公厕源头实力厂家广…

基于51单片机的酒精检测警报系统Proteus仿真

地址&#xff1a;https://pan.baidu.com/s/1gddplAxS_ZKyrHaWE93dog 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52简介&#xff1a; AT89C52是一款经典的8位单片机&#xff0c;是意法半导体&#xff08;STMicroelectronics&#xff09;公…

最新的Flutter3.x版本获取应用包名的方法

以前的flutter项目可以在 AndroidManifest.xml 中获取应用包名&#xff0c; 最新的Flutter3.x版本要获取应用包名可以找到build.gradle 更多内容参考&#xff1a;最新的Flutter3.x版本如何获取应用包名

Linux:Jenkins全自动持续集成持续部署(4)

在上一章部署好了之后&#xff0c;还需要点击一下才能进行部署&#xff0c;本章的效果是&#xff1a;当gitlab上的代码发生了变化后&#xff0c;我们不需要做任何事情不需要去点击构建按钮&#xff0c;Jenkins直接自动检测变化&#xff0c;然后自动去集成部署Linux&#xff1a;…

(一)手把手教你如何通过ARM DesignStart计划在FPGA上搭建一个Cortex-M3软核

&#xff08;一&#xff09;手把手教你如何通过ARM DesignStart计划在FPGA上搭建一个Cortex-M3软核 一、ARM DesignStart计划 1.1 如何下载ARM DesignStart Cortex-M3相关文件 ​ 关于ARM DesignStart计划的介绍:ARM DesignStart计划——私人定制一颗ARM处理器 - 知乎 (zhih…

docker在线安装centos7(windows版)

目录 1、docker本地安装2、拉取centos7镜像3、启动容器4、配置SSH以访问centos7 1、docker本地安装 windows安装docker比较简单&#xff0c;官网搜索有个docker desktop装上就完事。 2、拉取centos7镜像 可以登录到docker hub上拉&#xff0c;也可以搜出来对应的centos7镜像…

Kindling the Darkness:A Practical Low-light Image Enhancer

Abstract 在弱光条件下拍摄的图像通常会出现&#xff08;部分&#xff09;可见度较差的情况。,除了令人不满意的照明之外&#xff0c;多种类型的退化也隐藏在黑暗中&#xff0c;例如由于相机质量有限而导致的噪点和颜色失真。,换句话说&#xff0c;仅仅调高黑暗区域的亮度将不…

蓝桥杯练习系统(算法训练)ALGO-966 自行车停放

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 有n辆自行车依次来到停车棚&#xff0c;除了第一辆自行车外&#xff0c;每辆自行车都会恰好停放在已经在停车棚里的某辆自行…

对标开源3D建模软件blender,基于web提供元宇宙3D建模能力的dtns.network德塔世界是否更胜一筹?

对标开源3D建模软件blender&#xff0c;基于web提供元宇宙3D建模能力的dtns.network德塔世界是否更胜一筹&#xff1f; blender是一款优秀的3D建模开源软件&#xff0c;拥有免费开源、功能强大、渲染速度优秀的优点。而开源的dtns.network德塔世界&#xff0c;亦是专业级的元宇…

FPGA之组合逻辑与时序逻辑

数字逻辑电路根据逻辑功能的不同&#xff0c;可以分成两大类&#xff1a;组合逻辑电路和时序逻辑电路&#xff0c;这两种电路结构是FPGA编程常用到的&#xff0c;掌握这两种电路结构是学习FPGA的基本要求。 1.组合逻辑电路 组合逻辑电路概念&#xff1a;任意时刻的输出仅仅取决…

2024年福建事业单位招聘详细流程

2024年福建事业单位招聘详细流程&#xff0c;速速查收&#xff01;

使用Nginx1.25.4版本做负载均衡、搭建Nacos2.3.0服务集群

关于使用版本问题上&#xff0c;其实小白更喜欢使用新的版本&#xff0c;因为新的版本功能更多&#xff0c;肯定优化方面不言而喻&#xff0c;懂得都懂&#xff0c;但是新的版本&#xff0c;肯定使用起来更加的速度&#xff0c;性能&#xff0c;也是不言而喻的啊&#xff0c;那…

US-T65 DM蓝牙5.2双模热插拔PCB

键盘使用说明索引&#xff08;均为出厂默认值&#xff09; 一些常见问题解答&#xff08;FAQ&#xff09;注意首次使用步骤蓝牙配对&#xff08;重要&#xff09;蓝牙和USB切换键盘默认层默认触发层0的FN键配置的功能默认功能层1配置的功能默认的快捷键 蓝牙参数蓝牙MAC地址管理…