【数模】预测模型


一、灰色系统

  • 白色系统:系统信息完全明确
  • 灰色系统:系统部分信息已知,部分信息未知
    • 对在一定范围内变化的、与时间有关的灰色过程进行预测。
    • 过程:原始数据找规律→生成强规律性的数据序列→建立微分方程来预测未来趋势
  • 黑色系统:系统的内部信息未知

二、GM(1,1)模型: Grey(Gray) Model

2.1 基本概念及原理

  • GM(1,1)是使用原始的离散非负数据列,通过一次累加生成削弱随机性的较有规律的新的离散数据列 → 通过建立微分方程模型,得到在离散点处的解经过累减生成的原始数据的近似估计值 → 从而预测原始数据的后续发展。

    • 本节只探究GM(1,1)模型,第一个‘1’表示微分方程是一阶的,后面的‘1’表示只有一个变量在这里插入图片描述
  • 原理介绍:(见第12节课件P4-15)

  • GM(1,1)模型的本质是有条件的指数拟合:f(x) = C1eC2(x-1) (此处的指数规律主要针对x(1)(k)序列而言,原始序列是作差的结果)

  • GM(1,1)模型的白化方程:在这里插入图片描述

  • GM(1,1)模型的基本形式(亦称灰色微分方程):在这里插入图片描述

2.2 准指数规律的检验

实际建模中,要计算出ρ(k)∈(0,0.5)的占比,占比越高越好(一般前两期:ρ(2)和ρ(3)可能不符合要求,重点关注后面的期数)

2.3 发展系数与预测情形

  • 发展系数越小,预测得越精确

2.4 GM(1,1)模型的评价

  • 使用GM(1,1)模型对未来的数据进行预测时,需要先检验GM(1,1)模型对原数据的拟合程度(对原始数据还原的效果)。一般有两种检验方法:
2.4.1 残差检验

在这里插入图片描述

  • 注:
    • ① 其他预测模型也可以用这个残差检验
    • ② 关于这个10%和20%的标准不是绝对的,要结合预测的场景(如物理中对精确要求高的,也可是5%)
2.4.2 级别偏差检验

在这里插入图片描述

2.5 GM(1,1)模型的拓展:新陈代谢模型

在这里插入图片描述

2.6 适用灰色预测的情况

  1. 数据是以年份度量的非负数据(如果是月份或者季度数据一定要用时间序列模型);
  2. 数据能经过准指数规律的检验(除了前两期外,后面至少90%的期数的光滑比要低于0.5);
  3. 数据的期数较短且和其他数据之间的关联性不强(≤10,也不能太短了,比如只有3期数据),要是数据期数较长,一般用传统的时间序列模型比较合适。

三、示例:对长江水质污染的预测

3.1 题目

  • 2005年国赛A题中给出长江在过去10年中废水排放总量,如果不采取保护措施,请对今后10年的长江水质污染的发展趋势做出预测。
    在这里插入图片描述

3.2 预测题目的一些tips

  1. 看到数据后先画时间序列图并简单的分析下趋势(例如:之前的时间序列分解);
  2. 将数据分为训练组和试验组,尝试使用不同的模型对训练组进行建模,并利用试验组的数据判断哪种模型的预测效果最好(例如:可用SSE指标来挑选模型,常见的模型有指数平滑、ARIMA、灰色预测、神经网络等)。
  3. 选择上一步骤中得到的预测误差最小的那个模型,并利用全部数据来重新建模,并对未来的数据进行预测。
  4. 画出预测后的数据和原来数据的时序图,看看预测的未来趋势是否合理。

3.3 GM(1,1)模型代码讲解

在这里插入图片描述

在这里插入图片描述

  1. 画出原始数据的时间序列图,并判断原始数据中是否有负数或期数是否低于4期,如果是的话则报错,否则执行下一步;
  2. 对一次累加后的数据进行准指数规律检验,返回两个指标:
    • 指标1:光滑比小于0.5的数据占比(一般要大于60%)
    • 指标2:除去前两个时期外,光滑比小于0.5的数据占比(一般大于90%)并让用户决定数据是否满足准指数规律,满足则输入1,不满足则输入0
  3. 如果上一步用户输入0,则程序停止;如果输入1,则继续下面的步骤。
  4. 让用户输入需要预测的后续期数,并判断原始数据的期数:
    • 数据期数为4:分别计算出传统的GM(1,1)模型、新信息GM(1,1)模型和新陈代谢GM(1,1)模型对于未来期数的预测结果,为了保证结果的稳健性,对三个结果求平均值作为预测值。
    • 数据期数为5,6或7:取最后两期为试验组,前面的n‐2期为训练组;用训练组的数据分别训练三种GM模型,并将训练出来的模型分别用于预测试验组的两期数据;利用试验组两期的真实数据和预测出来的两期数据,可分别计算出三个模型的SSE;选择SSE最小的模型作为我们建模的模型。
    • 数据期数大于7:取最后三期为试验组,其他的过程和4.2类似。
  5. 输出并绘制图形显示预测结果,并进行残差检验和级比偏差检验。

四、神经网络预测示例

4.1 题目:辛烷值的预测

  • 【改编】辛烷值是汽油最重要的品质指标,传统的实验室检测方法存在样品用量大,测试周期长和费用高等问题,不适用于生产控制,特别是在线测试。近年发展起来的近红外光谱分析方法(NIR),作为一种快速分析方法,已广泛应用于农业、制药、生物化工、石油产品等领域。其优越性是无损检测、低成本、无污染,能在线分析,更适合于生产和控制的需要。
  • 实验采集得到50组汽油样品(辛烷值已通过其他方法测量),并利用傅里叶近红外变换光谱仪对其进行扫描,扫描范围900~1700nm,扫描间隔为2nm,即每个样品的光谱曲线共含401个波长点,每个波长点对应一个吸光度。
  • (1)请利用这50组样品的数据,建立这401个吸光度和辛烷值之间的模型。
  • (2)现给你10组新的样本,这10组样本均已经过近红外变换光谱仪扫描,请预测这10组新样本的辛烷值。

4.2 数据的导入

  • 注意:在matlab下,当导入文件出错时,要注意如下两点
    在这里插入图片描述
  • 导入数据
    • Excel操作小技巧:选择某个单元格的数据,同时按住键盘上的Ctrl+Shift两个键不松手,然后按键盘上方向键“→”,就可以选择这个单元格所在的一行;然后再按键盘上的方向键“↓”,就可以再选取这一行所在的一整列。
      在这里插入图片描述
  • 保存数据(data_Octane.mat)
    • X:50个样本的吸光度数据
    • Y:50个样本的辛烷值数据
    • new_X:10个要预测样本的吸光度数据
      在这里插入图片描述

4.3 神经网络模型

  • 不同版本的神经网络模型位置可能不同,可自行上网查看
    在这里插入图片描述
  • 根据样本放在行上还是列上来选择。
    在这里插入图片描述
  • 训练集、验证集、测试集的比例一般选择默认的即可。(Matlab会后台自动帮我们安装这个比例来随机抽取样本,因此每次运行的结果可能都不相同)在这里插入图片描述
  • 隐层神经元的个数,这个参数可以根据拟合的结果再次进行调整。在这里插入图片描述
  • 训练算法的选取,一般是选择默认即可,选择完成后点击按钮后,Matlab就会帮我们训练出一个神经网络模型。
    • ①莱文贝格-马夸特方法(Levenberg–Marquardt algorithm)能提供数非线性最小化(局部最小)的数值解。此算法能借由执行时修改参数达到结合高斯‐牛顿算法以及梯度下降法的优点,并对两者之不足作改善(比如高斯‐牛顿算法之反矩阵不存在或是初始值离局部极小值太远)
      • 经过少数几次即可收敛
    • ②贝叶斯正则化方法(Bayesian‐regularization)
      • 可以处理过拟合,但训练很慢
      • 推荐采用该方法,拟合效果一般是最好的,MSE一般是三个中最小的(越小拟合越好);但由于速度过慢,对机器要求高,故方法①和③用的也多
    • ③量化共轭梯度法(Scaled Conjugate Gradient ):《模式识别与智能计算–MATLAB技术实现》
      • 每次迭代速度很快,但需要很多次的收敛
        在这里插入图片描述

4.4 结果分析

  • epoch:1个epoch等于使用训练集中的全部样本训练一次,每训练一次,神经网络中的参数经过调整。
  • MSE: Mean Squared Error 均方误差
    • MSE = SSE/n。一般来说,经过更多的训练阶段后,误差会减小,但随着网络开始过度拟合训练数据,验证数据集的误差可能会开始增加。在默认设置中,在验证数据集的MSE连续增加六次后,训练停止,最佳模型对应于的最小MSE。
      在这里插入图片描述
  • 将拟合值对真实值回归,拟合优度越高,说明拟合的的效果越好。
    在这里插入图片描述

4.5 保存结果

  • 保存神经网络函数的代码,以及神经网络图。
    在这里插入图片描述
  • 保存好训练出来的神经网络模型和结果
    在这里插入图片描述

4.6 进行预测

  • 保存code_Octane.m
  • 残差 + 拟合值 = 真实值
    在这里插入图片描述
% 这里要注意,我们要将指标变为列向量,然后再用sim函数预测
sim(net, new_X(1,:)')

% 写一个循环,预测接下来的十个样本的辛烷值
predict_y = zeros(10,1); % 初始化predict_y
for i = 1: 10
	result = sim(net, new_X(i,:)');
	predict_y(i) = result;
end
disp('预测值为:')
disp(predict_y)

4.7 神经网络处理过拟合思路

  • 将已知数据留尾部一小部分,用作训练出结果后的测试,计算MSE等看看大小 (有分析过程,体现有处理过拟合现象的意识)
  • 或切换不同模型训练

4.8 其他:神经网络在多输出中的运用

  • 多输出:多个Y值
  • 过程如上,神经网络也能在多输出中使用

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaWeb项目工程结构介绍

介绍idea创建Web项目工程下的项目结构(新建的web工程) 了解目录大致作用 一级目录 :.idea、out、src、web、工程名.iml .idea目录:记录了IntelliJ IDEA 的配置目录,包含项目的配置信息、工程设置、构建配置等。它是用来存储项目…

谈谈网络安全

目录 1.概念 2.发展现状 3.主要问题 1.概念 网络安全是指保护计算机网络和其中的数据免受未经授权访问、损坏、窃取或破坏的过程和技术。网络安全涉及预防和检测潜在的威胁和漏洞,并采取措施保护网络的机密性、完整性和可用性。 网络安全的概念包括以下几个方面&am…

Vue系列第七篇:Element UI之el-main,el-table,el-dialog,el-pagination,el-breadcrumb等控件使用

本篇实现主页面功能,包括主页面排版布局,学生管理模块实现,后台接口实现等功能。 目录 1.运行效果 1.1登录页面 1.2主页面 1.3学生管理 - 信息列表 1.4学生管理 - 信息管理 1.5学生管理 - 作业列表 1.6学生管理 - 作业管理 2.前端代码…

开源元数据管理平台Datahub最新版本0.10.5——安装部署手册(附离线安装包)

大家好,我是独孤风。 开源元数据管理平台Datahub近期得到了飞速的发展。已经更新到了0.10.5的版本,来咨询我的小伙伴也越来越多,特别是安装过程有很多问题。本文经过和群里大伙伴的共同讨论,总结出安装部署Datahub最新版本的部署手…

Flowise AI:用于构建LLM流的拖放UI

推荐:使用NSDT场景编辑器助你快速搭建可二次编辑的3D应用场景 什么是Flowise AI? Flowise AI是一个开源的UI可视化工具,用于帮助开发LangChain应用程序。在我们详细介绍 Flowise AI 之前,让我们快速定义 LangChain。LangChain是…

pytorch实战-图像分类(二)(模型训练及验证)(基于迁移学习(理解+代码))

目录 1.迁移学习概念 2.数据预处理 3.训练模型(基于迁移学习) 3.1选择网络,这里用resnet 3.2如果用GPU训练,需要加入以下代码 3.3卷积层冻结模块 3.4加载resnet152模 3.5解释initialize_model函数 3.6迁移学习网络搭建 3.…

迭代器模式(Iterator)

迭代器模式是一种行为设计模式,可以在不暴露底层实现(列表、栈或树等)的情况下,遍历一个聚合对象中所有的元素。 Iterator is a behavior design pattern that can traverse all elements of an aggregate object without exposing the internal imple…

SIFT算法原理:SIFT算法详细介绍

前面我们介绍了Harris和Shi-Tomasi角点检测算法,这两种算法具有旋转不变性,但不具有尺度不变性,以下图为例,在左侧小图中可以检测到角点,但是图像被放大后,在使用同样的窗口,就检测不到角点了。…

uniapp微信小程序中打开腾讯地图获取用户位置信息

实现的效果 第一步:首先登录微信公众平台 , 需要用到AppID 第二步: 注册登录腾讯位置服务 注册需要手机号和邮箱确认,然后创建应用 创建后点击添加key 添加后会生成key,后面会用到这个key 第三步: 登录微信公众平台&a…

Git Submodule 更新子库失败 fatal: Unable to fetch in submodule path

编辑本地目录 .git/config 文件 在 [submodule “Assets/CommonModule”] 项下 加入 fetch refs/heads/:refs/remotes/origin/

记录下:win10 AMD CPU 下载 Chromium 源码并编译(版本 103.0.5060.66)

文章目录 一、一些主要地址连接二、环境配置1、如何找官方环境文档:1.1 如何找到这个不同版本的文档: 2、电脑配置:3、visual studio 2019安装:3.1 社区版下载:3.2 安装配置: 4、debugtools配置4.1 如何判断…

LeetCode每日一题——1331.数组序号转换

题目传送门 题目描述 给你一个整数数组 arr ,请你将数组中的每个元素替换为它们排序后的序号。 序号代表了一个元素有多大。序号编号的规则如下: 序号从 1 开始编号。一个元素越大,那么序号越大。如果两个元素相等,那么它们的…

上市公司-上下游和客户数据匹配(2001-2022年)

参考《中国工业经济》中陶锋(2023)的做法,对上市公司的上下游供应商和客户数据进行匹配。形成“上游供应商—目标企业—下游客户一年度数据集”。该是关于上市公司的上下游以及客户数据匹配的详细信息。 它呈现出由各种上游供应商和下游客户…

mysql高级三:sql性能优化+索引优化+慢查询日志

内容介绍 单表索引失效案例 0、思考题:如果把100万数据插入MYSQL ,如何提高插入效率 (1)关闭自动提交,只手动提交一次 (2)删除除主键索引外其他索引 (3)拼写mysql可以执…

ELK日志分析系统简介

ELK日志分析系统简介 ElasticsearchLogstashKibana主要功能Kibana日志处理步骤ELK的工作原理 日志服务器 提高安全性 集中存放日志 缺陷 ​ 对日志的分析困难 ELK日志分析系统 Elasticsearch 概述:提供了一个分布式多用户能力的全文搜索引擎 核心概念 接近实时 集群 节…

特性Attribute

本文只提及常用的特性,更多特性请查看官方文档。 AddComponentMenu - Unity 脚本 API 常用特性 AddComponentMenu 添加组件菜单 使用 AddComponentMenu 属性可在“Component”菜单中的任意位置放置脚本,而不仅是“Component > Scripts”菜单。 使用…

GODOT游戏引擎简介,包含与unity性能对比测试,以及选型建议

GODOT,是一个免费开源的3D引擎。本文以unity作对比,简述两者区别和选型建议。由于是很久以前写的ppt,技术原因视频和部分章节丢失了。建议当做业务参考。 GODOT目前为止遇到3个比较重大的基于,第一个是oprea的合作奖,…

嵌入式开发学习(STC51-13-温度传感器)

内容 通过DS18B20温度传感器,在数码管显示检测到的温度值; DS18B20介绍 简介 DS18B20是由DALLAS半导体公司推出的一种的“一线总线(单总线)”接口的温度传感器; 与传统的热敏电阻等测温元件相比,它是一…

【C++】map和set

目录 一、容器补充1.序列式容器与关联式容器2.键值对3.树形结构的关联式容器 二、set1.set的介绍2.set的使用3.multset的介绍4.multset的使用 三、map1.map的介绍2.map的使用3.multimap的介绍4.multimap的使用 一、容器补充 1.序列式容器与关联式容器 我们已经接触过STL中的部…

Mysql自动同步的详细设置步骤

以下步骤是真实的测试过程,将其记录下来,与大家共同学习。 一、环境说明: 1、主数据库: (1)操作系统:安装在虚拟机中的CentOS Linux release 7.4.1708 (Core) [rootlocalhost ~]# cat /etc/redh…