预测模型之灰色预测与BP神经网络预测

举报
凉城予梦 发表于 2022/10/13 12:37:52 2022/10/13
【摘要】 灰色预测模型预测题目的套路和思路:年份序列不能通过时间序列分解SSE误差平方和:参考博客:https://www.cnblogs.com/DjangoBlog/p/9575360.html 灰色预测模型(微分方程基础上的,GM(1,1)实质就是一个指数模型):对灰色系统的一个分析,系统也可以称为数据集,灰色的含义为系统的部分信息已知,部分信息未知。(在一定范围内变化的,与时间有关的灰色过程进...

灰色预测模型

预测题目的套路和思路:

图片1.jpg

年份序列不能通过时间序列分解

SSE误差平方和:参考博客:

https://www.cnblogs.com/DjangoBlog/p/9575360.html


灰色预测模型(微分方程基础上的,GM(1,1)实质就是一个指数模型):

对灰色系统的一个分析,系统也可以称为数据集,灰色的含义为系统的部分信息已知,部分信息未知。(在一定范围内变化的,与时间有关的灰色过程进行预测)


总体思路:1.对原始数据进行生成处理(例如累加的处理)寻找系统变动的规律

2.并生成有较强规律性的数据序列

3.建立相应的微分方程模型

4.最终预测事物未来发展趋势的状况



模型最简单的灰色预测模型:GM(1,1)模型:Gray Model

(1,1)含义:第一个一代表微分方程是一阶的,第二个一代表只有一个变量。

此模型总体思路:1. 使用原始的离散非负数据列,通过一次累加生成削弱随机性的较有规律的新的离散数据列

2. 建立微分方程模型(只能说近似的微分方程)

3. 在离散点处的解经过累减生成的原始数据的得到最终的近似预测估计值

如图所示:



什么时候用灰色预测:


GM(1,1)模型的原理介绍:

第一部分:

图片2.jpg

第二部分:

第二部分思路:1.总目的是通过矩阵的形式推导出最小二乘法

2. 为GM(1,1)模型的基本形式

3.如图片所示:当做k,b当做b进行回归

4.最终得到参数a与b的估计值


在本例子中得到如下回归图像与回归方程:

图片3.jpg




第三部分:利用矩阵形式推导出

图片4.jpg



第四部分:

图片5.jpg



第五部分:





准指数规律的检验:

注意:对一次累加后的数据进行准指数规律的检验,这个检验有时候即使能通过,也不一定能保证预测结果非常好,例如清风代码上面的第三组数据,虽然准指数规律检验通过了,但是残差检验和级比偏差检验未通过,表现不好,通过拟合图与预测图也发现结果很差。





GM(1,1)模型的评价与检验:

图片6.jpg



传统GM(1,1)模型的拓展(新信息GM(1,1)模型,新陈代谢GM(1,1)模型):

用序号1,2所标注为新信息GM(1,1)模型,新陈代谢GM(1,1)模型,其中新陈代谢GM(1,1)模型是用新预测的数据当作基本数据用来预测下一个新的数据










灰色预测GM(1,1)代码思路:

图片7.jpg

文件夹中预测模型,灰色预测模型代码:

main.m为主函数代码

gm11.m为传统GM(1,1)模型代码

new_gm11.m为新信息GM(1,1)模型代码

metabolism_gm11.m为新陈代谢GM(1,1)模型代码

代码针对例题对长江水质污染的预测(1995年至2004年)

代码中:当数据量大于4时,我们利用试验组来选择使用传统的GM(1,1)模型、新信息GM(1,1)模型还是新陈代谢GM(1,1)模型; 如果数据量等于4,那么我们直接对三种方法求一个平均来进行预测





得到新信息GM(1,1)预测的两期试验组数据为:

可以看出总数据量逐渐增大,得到一个新的数据,便在末尾增添一个数据



得到新陈代谢GM(1,1)预测的两期试验组数据为:

可以看出总数据量不变,得到一个新的数据,删除第一个旧的数据


小补充:grid on表示加上网格线

代码中的eta变量代表级比偏差

得出的发展系数是-a,灰作用量是b

如果画出的图年份挨得太挤,可以将间隔改为3:


最后代码中输出的对原数据拟合的评价结果中有平均相对残差平均级比偏差参考上文中的GM(1,1)模型的评价与检验

如图所示:我们认为平均相对残差和平均级比偏差数值越小越好,一般以0.1作为评判标准,例如这样,我们称此模型对原数据拟合的不错


得到预测和拟合数据如下图,发现预测的还是很不错的:



X坐标轴太挤,可以将间隔设置为3:


BP神经网络预测——万金油

万金油:别人能处理的它也能处理,别人不能处理的它也能处理

也可以预测有多个因变量的输出


总体思路:

Screenshot 2022-10-13 123441.jpg

原理图:

训练集数据进行模型创建与训练,测试集进行仿真测试,得到的预测数据与真实测试集数据进行比较,进行可信度评价,通过R平方来判断预测是否好,越接近1,预测效果越好


BP神经网络的属性:有导师学习神经网络(输出结果参与建模),前向神经网络,学习算法(更新权重)是逆向的,采用梯度下降法进行权值修正,可做拟合回归问题,也可做分类问题,经常被用于数据量大,指标多的预测问题

数据归一化的原因:

归一化算法:

在0-1之间:

Screenshot 2022-10-13 123528.jpg

在-1-1之间:

Screenshot 2022-10-13 123556.jpg


训练集,验证集,测试集的解释:

Matlab在默认情况下训练集占数据集的70%,验证集占数据集的15%,测试集占数据集的15%




数据详解:(举例)

吸光度为X值(指标),辛烷值为Y(输出量),通过已知数据集训练,最后预测未知的辛烷值


BP神经网络预测步骤(matlab):

APP→Neural Net Fitting(神经网络拟合)→选择输入层输出层和样本所在行还是列→训练集,验证集,测试集所占百分比默认→隐藏层个数默认为10→选择训练方法(默认即可,选择的方法不同迭代的次数不同)→→→→→→→

这里注意:查看右边注释,选择Matrix rows表示有401个指标,50个样本,符合数据表格


训练方法讲解:

选择默认算法得到迭代次数为6次,选择不同算法得到结果不同,迭代次数也不同,例如:

 注:本文引用清风建模学习课程资料,如有详细了解,可以关注清风建模课程与公众号

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。