数学建模灰色预测GM(1,1)模型

数学建模灰色预测GM(1,1)模型

大家好,我是北海。

灰色预测是较为简单的一种预测方法,今天讲解下灰色预测的基本思路。

本文对应的视频,关注公众号:数学建模BOOM,回复“课程”,查看精品数模讲解(包含模型算法原理、例题详细讲解、matlab代码讲解)

1 何为“灰色”?

灰色预测中的“灰色”究竟是什么意思呢?要想明白灰色,那就要先说到“白色系统”和“黑色系统”。

白色系统:系统的内部特征是完全已知的,给系统一个“输入”,就能得到一个准确的“输出”,而且整个过程是已知的。

典型例子:一个电阻就是一个白色系统。电压与电流之间的关系(欧姆定律)是已知的。知道电阻大小后,输入电压值,就能算出电流值。

黑色系统:外界并不知道系统的内部信息,只能通过它与外界的联系来加以观测研究。

典型例子:一辆就是一个黑色系统我们不懂车的内部构造和原理,但可以用方向盘、刹车和油门等进行操控。车对于司机来说就是个黑色系统。

灰色系统,就是介于白色和黑色系统之间,一部分信息是已知的,另一部分信息是未知的,系统内各因素间有不确定的关系。

例题:城市1986到1992年道路噪声平均声级数据见下表,请预测下一年的数据。

•某城市交通噪声数据/dB(A)

题目中的“年份-噪声”就是一个灰色系统。根据常识,年份和噪声之间存在联系(常识或从文献得知),但我们不知道具体的函数表达式,无法在数学上求解下一年的数据。

该灰色系统的特点:

  • 数据量太少,无法用回归或神经网络预测
  • 年份和噪声的数据是已知的
  • 年份和噪声之间存在内在联系
  • 具体函数关系未知
  • 短期预测(只预测下一年)

问题中的“年份”和“噪声值”就是一种灰色系统。当题目中的数据量少、无明显规律时,一般可以使用灰色预测模型。

2 构造灰色预测模型

把题目给的数据画出来,横轴是年份,纵轴是噪声值:

这图像看不出什么规律,难以预测下一年的值。这也是灰色系统本身所决定的。

既然没有规律,那么我们就需要制造规律。

如何制造规律?常用方法是累加生成,这是使灰色系统由灰变白的一种方法(此外还有累减生成、加权邻值生成等,本文不再细讲)。

累加生成序列公式:

“序列”就是一组数。表中第三行的x右上角的“(0)”代表这是原始序列,也就是题目给的数据;第四行的x右上角带"(1)"则代表这是新的累加生成序列。

累加生成序列里的第k个数,是原始序列前k个数相加之和。所以本题的累加生成序列的第一个数就是71.1,第二个数就是71.1+72.4 = 143.5……

那么这个累加生成序列有什么用呢?画出年份和新序列的图像:

可见相比前面的原始图像,新的序列和年份的图像看起来像是一条直线

这就是累加生成制造出来的规律(注意:更常见的是指数形式的图像,本题直线型的图像可视作指数型图像的特例)

如果能把这个“规律”用数学表达式写出来,就能求出x^(1)下一年的预测值;求出预测值后再将相邻两个x^(1)相减(累加生成序列的逆过程),就能得到噪声值x^(1)的预测值。

3 GM(1,1)模型

注意,已知年份和新序列的数据是已知的,我们现在缺少的是两者的函数关系式

一旦函数求出来了,代入下一年的年份,就能求出下一年的噪声预测值了,本题也就解决了。

此时问题转变为已知自变量和因变量的数据,求出两者的函数关系式。

“如果一个东西它长得像鸭子,叫声像鸭子,走路也像鸭子,那么它就是一只鸭子”

生成的新序列和年份的图像看起来像一个指数曲线(直线),那么就可用一个指数曲线乃至一条直线的表达式来逼近这条线。

得到这个表达式,问题就解决了。

而怎么才能求出"指数曲线乃至一条直线的表达式"呢?

由高数知识可知,一阶常微分方程的通解形式就是指数函数,所以可通过构建一阶常微分方程,然后求解方程,就得到了函数表达式。

整体思路

  1. 题目给的系统是灰色的,无法直接预测
  2. 构造累加序列,看起来像指数(直线)函数
  3. 如果知道该指数函数的表达式就能预测下一年数据
  4. 一阶常微分方程的通解形式就是指数函数
  5. 构建一阶常微分方程并求解,得到函数式
  6. 下一年年份代入函数式,得到预测值

此时的预测问题,就转变为:

  • 构建年份t和累加生成序列x^(1)的一阶常微分方程
  • 求解该方程

这种预测方法就称作GM(1,1)模型,是灰色预测模型的一种。其中的G是grey,M就是model,括号内第一个1代表着微分方程是一阶,而第二个1代表着方程中有1个变量

拓展知识:既然有GM(1,1)模型,自然有GM(2,1)、GM(1,2)模型等。其中GM(2,1)就代表利用一个变量的二阶微分方程来进行灰色预测。本题的新序列与年份的函数图像接近指数函数或直线,是单调的变化过程,适合GM(1,1)模型;而如果画出的图像是非单调的摆动序列或饱和的S型序列,则可考虑GM(2,1)模型。

4 GM(1,1)模型的求解

构造新序列和年份的一阶微分方程:

想要求解微分方程,就必须知道微分方程中的参数a和u(高数基本知识)。

第一步:求出参数a和u

方程中的年份t和新序列x^(1)的数值是已知的,那么a和u究竟该取几,才能使微分方程的解与真实的已知数据最接近呢?

函数表达式的参数a和u未知,而变量t和x^(1)的数值已知,这种问题就要用最小二乘法,通过最小化误差的平方和求得最佳的参数a和u。

1、数据是离散的而不是连续的,所以:

写做

2、注意,Δt=(t+1)−t=1,始终为1;根据累加生成序列公式可知:

3、由1和2可得到

4、移项得:

5、式子左边是已知数据,右边就是含有未知数的函数,此时就可用最小二乘法求出参数a和u

得到该方程后,可用最小二乘法求解等号右边的两个未知参数:

  • 最小二乘法是使拟合函数求的值已知数据平方差最小
  • 方程矩阵形式Y=BU,U内包含所要求的a和u,如下:

最小二乘法也就是求 ( − )^T ( − )取最小值时的U,求解U的估计值为:

最小二乘法的具体求解过程涉及矩阵求导等,对于很多同学来说较难理解,在此不展开讲,套用该公式就行。这样就求得了参数a和u的估计值。

第二步:求解微分方程,得到累加序列的预测值,并根据累加序列公式求得原序列值的预测值(也就是下一年的噪声),题目也就做完了。

5 建立模型前的级比检验

上面说到,有可能存在模型检验不通过的情况,那么就白忙活一场了。

所以需要在使用GM(1,1)模型之前进行数据的级比检验,如果通过了该检验,则可以使用灰色预测。

计算参数 ( ):


如果 ( )在区间

内,则说明可用GM(1,1)模型;

如果 ( )在区间外,可尝试平移变换,也就是给每个数据都加上任意常数c,看是否在区间内;求解后再减去c;

多次平移变换后仍旧在区间外,则说明该问题不适合用GM(1,1)模型。

至于为什么通过了级比检验检验才可以使用灰色预测?我也不知道,如果有懂的同学希望能加文末的QQ群教教我……在比赛中我们只需要知道这样用就可以了。

注意,级比检验是需要在使用GM(1,1)模型之前进行的。之所以放到最后讲,是因为如果一开始就讲级比检验,很多同学就开始犯晕了,也不想再看下去了……

总结:模型整体思路

模型优点:数据少且无明显规律时可用,利用微分方程挖掘数据本质规律。

模型缺点:灰色预测只适合短期预测、指数增长的预测。

包含灰色预测在内的各种模型算法视频讲解(各模型的原理、例题和代码讲解,有课件和代码文件):

编辑于 2024-01-24 00:22・IP 属地山东