灰色预测理论及其应用
灰色预测模型的主要特点(优势):
建模机理科学性、建模过程简便性、样本量包容性。
灰色系统理论研究传统数理统计难以解决的“小数据、贫信息”不确定性系统的建模问题,具有样本需求量小、建模过程简单、建模结果可靠等优点。
灰色预测模型的主要用途:
(1) 灰色时间序列预测:用观察到的反映预测对象特征的时间序列来构造灰色预测模型,预测未来某一时刻的特征量,或达到某一特征量的时间。
(2) 系统预测:通过对系统行为特征指标建立一组相互关联的灰色预测模型,预测系统中众多变量间的相互协调关系的变化。
(3) 畸变预测:通过灰色模型预测异常值出现的时刻,预测异常值什么时候出现在特定的时区内。
(4) 拓扑预测:将原始数据作曲线,在曲线上按定值寻找该定值发生的所有时间点,并以该定值为框架构成时间点数列,然后建立模型预测该定值所发生的时间点。
模块:在时间-数据二维平面上将连续曲线及其底部相连接的区域
白色模块:白色数据构成的模块
灰色模块:由白色模块外推到未来的模块,即预测值的模块
1.灰色系统与灰度
灰色系统理论使用来研究由于信息匮乏所导致的“外延明确,内涵不明确的”不确定问题的一类建模问题。此处的信息匮乏主要表现在:数据信息不完整、系统结构信息不清晰、系统运行行为信息不确定三个方面。
在控制论中,人们通常用颜色的深浅来表示信息的已知程度。用“黑”表示信息未知。“白”表示信息已知。用“灰”表示部分信息已知,部分信息未知。在灰色系统中,通常把这种只知道取值范围而不知道确切值不确定数称为灰数,灰数是灰色系统的基本单元或“细胞”。
灰数分为以下几种类型:
(a)下界灰数
(b)上界灰数
(c)区间灰数
(d)离散灰数
上下界均未知称为“黑数”,上下界相等,称为“白数”。
2.灰数的灰度和核
在灰色系统中,我们使用可能度函数来表示一个灰数在其区间内取不同数值的可能性大小,或者说用来描述某一数值域成为灰数真值的可能性的大小。理论上灰数的可能性函数可以多种多样,但主要的可能度函数主要有三角形、梯形、矩形三种。(可能度函数越复杂,需要的已知信息就越多)
在灰色系统理论中,使用灰度来描述灰数的不确定性程度或者信息量的多少。
(灰域越大,真值的范围就越大,不确定性就越大)
三点说明:(1)灰域是影响灰度的一个重要指标,但仅仅通过灰域尚无法确定灰数的灰度。
(2)灰度并不是一个绝对化指标,只有同类灰度的比较大小才具有实际意义。
(3) 灰度的大小与灰数的“论域”有关。这里的“论域”是指该灰数的物理背景。(不同的物理背景下灰数能提供的信息量和信息价值是不同的,因此灰度也是不同的)
刘思峰教授基于灰数的灰域及论域,给出了灰数灰域的计算公式:
设灰数
⊗
k
∈
[
a
k
,
b
k
]
产生的背景或论域为
Ω
k
∈
[
α
k
,
β
k
]
,
其中
b
k
⩾
α
k
,
β
k
⩾
α
k
,
则称
g
°
(
x
)
为灰数
⊗
k
∈
[
a
k
,
b
k
]
的灰度
g
°
(
x
)
=
b
k
−
α
k
β
k
−
α
k
\,\, \text{设灰数}\otimes_k\in \left[ a_k,b_k \right] \text{产生的背景或论域为}\varOmega _k\in \left[ \alpha _k,\beta _k \right] ,\text{其中}b_k\geqslant \alpha _k,\beta _k\geqslant \alpha _k,\text{则称} \\ g\degree\left( x \right) \text{为灰数}\otimes _k\in \left[ a_k,b_k \right] \text{的灰度} \\ \,\, g\degree\left( x \right) =\frac{b_k-\alpha _k}{\beta _k-\alpha _k} \\
设灰数⊗k∈[ak,bk]产生的背景或论域为Ωk∈[αk,βk],其中bk⩾αk,βk⩾αk,则称g°(x)为灰数⊗k∈[ak,bk]的灰度g°(x)=βk−αkbk−αk
可能度函数对灰数的灰度计算结果的作用和影响:
主要的可能度函数主要有三角形、梯形、矩形三种。其中矩形所所蕴含的有效信息最少,矩形其次,三角形所蕴含的有效信息最多,因此三角形的灰度值是最小的。灰度值:三角形<梯形<矩形。我们可以得到如下结论:对于相同区间的灰数,其可能度面积越小,则该区间灰数所蕴含的信息量就越大,其灰度就越小。课件灰数的灰度与该灰数的可能度函数的面积成正比。
目前灰数灰度的测度公式是基于矩形可能度函数进行定义的,随着已知信息的不断扩充,当可能度函数由矩形演化为梯形和三角形时,灰数的灰度应当在原有的基础上有所降低。现以矩形可能度为基础,对灰数灰度做出如下扩展定义:
设灰数
⊗
k
∈
[
a
k
,
b
k
]
产生的背景或论域为
Ω
k
∈
[
α
k
,
β
k
]
,
S
R
k
为区间灰数
⊗
k
∈
[
a
k
,
b
k
]
的矩形
可能度函数面积
,
S
p
k
为区间灰数
⊗
k
∈
[
a
k
,
b
k
]
的实际可能度函数的面积,则称
g
°
(
x
)
为可能度函数
已知情况下灰数
⊗
k
∈
[
a
k
,
b
k
]
的灰度
g
°
(
x
)
=
b
k
−
α
k
β
k
−
α
k
⋅
S
p
k
S
R
k
=
S
p
k
β
k
−
α
k
\,\, \text{设灰数}\otimes_k\in \left[ a_k,b_k \right] \text{产生的背景或论域为}\varOmega _k\in \left[ \alpha _k,\beta _k \right] ,S_{R}^{k}\text{为区间灰数}\otimes k\in \left[ a_k,b_k \right] \text{的矩形} \\ \text{可能度函数面积},S_{p}^{k}\text{为区间灰数}\otimes k\in \left[ a_k,b_k \right] \text{的实际可能度函数的面积,则称}g\degree\left( x \right) \text{为可能度函数} \\ \text{已知情况下灰数}\otimes _k\in \left[ a_k,b_k \right] \text{的灰度} \\ \,\, g\degree\left( x \right) =\frac{b_k-\alpha _k}{\beta _k-\alpha _k}\cdot \frac{S_{p}^{k}}{S_{R}^{k}}=\frac{S_{p}^{k}}{\beta _k-\alpha _k} \\
设灰数⊗k∈[ak,bk]产生的背景或论域为Ωk∈[αk,βk],SRk为区间灰数⊗k∈[ak,bk]的矩形可能度函数面积,Spk为区间灰数⊗k∈[ak,bk]的实际可能度函数的面积,则称g°(x)为可能度函数已知情况下灰数⊗k∈[ak,bk]的灰度g°(x)=βk−αkbk−αk⋅SRkSpk=βk−αkSpk
3.灰数的核
设灰数
⊗
k
∈
[
a
k
,
b
k
]
的“核”
,
是在充分考虑已知信息的条件下,最有可能代表该区间灰数“真值”的
实数,通常用符号
⊗
~
k
表示。
\,\, \text{设灰数}\otimes _k\in \left[ a_k,b_k \right] \text{的}“\text{核}”,\text{是在充分考虑已知信息的条件下,最有可能代表该区间灰数}“\text{真值}”\text{的} \\ \text{实数,通常用符号}\widetilde{\otimes }_k\text{表示。} \\
设灰数⊗k∈[ak,bk]的“核”,是在充分考虑已知信息的条件下,最有可能代表该区间灰数“真值”的实数,通常用符号⊗
k表示。
具有一般的可能度函数的灰数“核”处于中心位置,但对于非对称的可能度函数,一般将可能度函数图形的重心作为该灰数的“核”的值。
4.灰色预测模型概述
第二章:灰色数据预处理
灰色预测模型与回归预测模型最大的差异,体现在对建模样本量大小的要求。回归预测模型以概率统计为理论基础,通过挖掘因变量和自变量之间的统计规律来建立因变量和自变量之间的函数关系,而统计规律的挖掘必然以大样本数据(至少30组样本)为前提。灰色预测模型研究的是“小数据,贫信息”系统的预测建模问题。建模样本只要不少于4个数据既满足灰色预测模型的样本量基本要求。
灰色预测模型由于样本量小,无统计规律可以挖掘,不可能概率统计为基础。在这种情况下,如何确保灰色预测模型的稳定性及预测结果的可靠性,长期以来备受关注。在灰色理论中,首先我们不是直接对原始数据进行建模,而是依据实际情况首先对原始数据进行预处理,通过预处理剔除系统受到的干扰。挖掘系统变化的一般规律,在此基础上建立灰色预测模型;然后采取一系列模型误差检验方法,以确保预测模型的有效性与预测结果的可靠性。
灰色系统理论中的数据与处理方法,按照不同的作用可以分为三类,第一类是原始序列中灰色累加生成算子与累减生成(累减还原)算子,其主要作用是弱化原始序列的随机性;第二类是灰色弱化/强化缓冲算子,主要是调节原始序列变化的陡峭性,以弱化冲击扰动的影响;第三类是灰色平滑算子,主要作用是改善原始序列的光滑性。
所谓算子,实际上就是一种数学计算方法,基于某类算子对原始数据进行数据预处理,并得到一个新序列,这个过程称为序列的生成。
1.灰色累加生成算子与累减生成(累减还原)算子
一个大学生每天用多少电话费,这显然具有非常大的随机性。若分析该大学生每周的电话费情况,则呈现出一定的规律性,若统计该大学生每月的电话费,则规律较为明显。通过累计加成,可以将离乱的原始数据蕴含的积分特性或者规律充分体现出来。灰色累减还原是灰色累加生成的逆过程,用来实现对累加生成树的还原处理或者发掘序列数据之间的差异信息。
累加生成算子:
%灰色预测步骤
%输入前期小样本数据
% 做AGO累加处理
%输入预测个数
%运行
clc,clear,close all
y=input('请输入数据');
n=length(y);
yy=ones(n,1);
yy(1)=y(1);
for i=2:n
yy(i)=yy(i-1)+y(i);
end
B=ones(n-1,2);
for i=1:(n-1)
B(i,1)=-(yy(i)+yy(i+1))/2;
B(i,2)=1;
end
BT=B';
for j=1:(n-1)
YN(j)=y(j+1);
end;
YN=YN';
A=inv(BT*B)*BT*YN;
a=A(1);
u=A(2);
t=u/a;
t_test=input('请输入需要预测的个数');
i=1:t_test+n;
yys(i+1)=(y(1)-t).*exp(-a.*i)+t;
yys(1)=y(1);
for j=n+t_test:-1:2;
ys(j)=yys(j)-yys(j-1);
end
x=1:n;
xs=2:n+t_test;
yn=ys(2:n+t_test);
plot(x,y,'^r',xs,yn,'*-b');
det=0;
for i=2:n
det=det+abs(yn(i)-y(i));
end
det=det/(n-1);
disp(['百分比误差为:',num2str(det),'%']);
disp(['预测值为:',num2str(ys(n+1:n+t_test))]);
累减生成算子:
均值生成算子:
我们需要将序列中的前后相邻的两数取平均数,以获得生成新的序列。
举例:
级比生成算子
2.灰色弱化/强化缓冲算子
缓冲算子三公理:
(1)不动点定理
(2)信息依据公理
(3)解析表达公理
3.灰色平滑算子
灰色预测模型的模拟及预测精度与建模序列光滑度正相关,建模序列光滑度越高,则灰色模型精度越高。近年来科研人员围绕如何改善和提高建模序列的光滑性做了大量的研究,这些研究主要通过数据变换方式来改善建模序列的光滑性。
常用的数据变换方法包括:均值化变化、初值化变换、区间值化变换、倒数化变换、对数变换、幂函数变换、指数函数变换、方根变换、对数-幂函数变换、三角函数变换、傅里叶变换、拉普拉斯变换。
设序列
X
=
(
x
(
1
)
,
x
(
2
)
,
.
.
.
,
x
(
n
)
)
与序列
Y
=
(
y
(
1
)
,
y
(
2
)
,
.
.
.
,
y
(
n
)
)
满足映射关系
f
:
x
→
y
,
则称
f
(
x
(
k
)
)
→
y
(
k
)
,
k
=
1
,
2
,
.
.
.
,
n
为序列
X
到
Y
的数据变换。
设序列
X
=
(
x
(
1
)
,
x
(
2
)
,
.
.
.
,
x
(
n
)
)
,其中
x
(
k
)
⩾
0
,
k
=
1
,
2
,
3...
n
ρ
(
k
)
=
x
(
k
)
∑
i
=
1
k
−
1
x
(
i
)
为序列
X
的光滑比,数据变化越平稳,光滑比
ρ
(
k
)
就越小
\,\, \text{设序列}X=\left( x\left( 1 \right) ,x\left( 2 \right) ,...,x\left( n \right) \right) \text{与序列}Y=\left( y\left( 1 \right) ,y\left( 2 \right) ,...,y\left( n \right) \right) \text{满足映射关系}f:x\rightarrow y, \\ \text{则称}f\left( x\left( k \right) \right) \rightarrow y\left( k \right) ,k=1,2,...,n\text{为序列}X\text{到}Y\text{的数据变换。} \\ \,\, \text{设序列}X=\left( x\left( 1 \right) ,x\left( 2 \right) ,...,x\left( n \right) \right) \text{,其中}x\left( k \right) \geqslant 0,k=1,2,3...n \\ \,\, \rho \left( k \right) =\frac{x\left( k \right)}{\sum_{i=1}^{k-1}{x\left( i \right)}}\,\, \text{为序列}X\text{的光滑比,数据变化越平稳,光滑比} \rho \left( k \right) \text{就越小} \\
设序列X=(x(1),x(2),...,x(n))与序列Y=(y(1),y(2),...,y(n))满足映射关系f:x→y,则称f(x(k))→y(k),k=1,2,...,n为序列X到Y的数据变换。设序列X=(x(1),x(2),...,x(n)),其中x(k)⩾0,k=1,2,3...nρ(k)=∑i=1k−1x(i)x(k)为序列X的光滑比,数据变化越平稳,光滑比ρ(k)就越小
第三章:齐次指数序列灰色预测模型
# 参考代码: GM11.m
实例说明:
下列图表为某城市1986-1992年交通噪声平均声级数据
1.我们建立交通噪声平均声级数据时间序列:
3.判断级比:
我们可以看到所有数据均符合,故可以进行建模
此时计算模拟数据的残差、相对误差以及平均相对误差并依据平均相对误差查表看预测精度怎么样。
第四章:非齐次指数序列灰色预测模型
GM(1,1)模型的最终还原形式表现为齐次指数形式。因此当建模序列具有近齐次指数增长特征时,GM(1,1)具有较好的模拟及预测性能。然而现实世界充满复杂性和不确定性,具有近齐次指数增长特征的序列只是一种理想状态下的特熟情况,而更多的系统行为序列呈现出近似非齐次的指数增长序列,其固有的建模机理以及模型结构将导致我们很难获得一个满意的模拟及预测精度。
解决这个问题主要有三种手段:
(1).从优化模型的结构的角度出发对GM(1,1)模型的基本形式x(0)(k)+az(1)(k)=b,以确保模型最终累减生成式中包含常数项,从而实现灰色预测模型从齐次序列到非齐次序列的扩展。
(2).从建模对象适应性改造的角度,将近似非齐次指数序列转换为近似齐次指数序列,以确保转换后的新序列满足GM(1,1)模型对建模序列的“齐次性”要求。通过序列累减,可以实现非齐次指数序列到齐次指数序列的转换。
(3)从优化模型建模过程中出发,如果原始序列本身就具备指数增长特征,就不必对该序列进行累加生成处理,而是直接建立灰色模型。由于不存在累加生成与累减生成,因此模型的最终表达式中包含常数项,可实现对近似非齐次指数序列的建模。
(1)类模型具有更好的模型性质与建模能力,因此是我们关心的重点。
# 参考代码: TDGM(1,1) TWGM(1,1)
#三参数离散灰色预测模型,TDGM(1,1)
#三参数白化灰色预测模型,TWGM(1,1)
G M ( 1 , 1 ) : x ( 0 ) ( k ) + a z ( 1 ) ( k ) = b T D G M ( 1 , 1 ) : x ( 0 ) ( k ) + a z ( 1 ) ( k ) = k b + c GM\left( 1,1 \right) : x^{\left( 0 \right)}\left( k \right) +az^{\left( 1 \right)}\left( k \right) =b \\ TDGM\left( 1,1 \right) : x^{\left( 0 \right)}\left( k \right) +az^{\left( 1 \right)}\left( k \right) =kb+c GM(1,1):x(0)(k)+az(1)(k)=bTDGM(1,1):x(0)(k)+az(1)(k)=kb+c
第五章:饱和S型序列灰色预测模型
灰色Verhulst模型主要用来描述具有饱和状态的过程,即S过程。常用于人口预测生物生长、繁殖预测以及经济产品寿命预测。
结合第四章讨论的三参数离散灰色预测模型TDGM(1,1),其良好的建模结构和建模能力改善了GM(1,1)的性能,在这里我们继续基于TDGM(1,1)模型的思路提出一种新型的Verhulst模型。
#参考代码:Verhulst.m N_Verhulst.m
%新型灰色Verhulst模型,N_Verhulst新型灰色Verhulst模型,N_Verhulst
第六章:多变量灰色预测模型
#一种新结构的多变量灰色预测模型,NSGM(1,N)
% Xs:第一行表示因变量;剩下的一行或若干行表示自变量。
% Xs:分为三个部分:第一部分用来建立NSGM(1,N)模型,第二部分用来测试NSGM(1,N)预测误差,第三部分用来预测未来
多变量体现在:因变量所对应有一个或多个自变量,这样因变量的分布就和自变量的分布一一对应。
第七章:特殊序列灰色预测模型
1.区间灰度预测模型
2.基于核和灰度的灰色异构数据预测模型
3.基于平滑算子的小数据波动序列灰色预测模型
#基于平滑算子的小数据波动序列灰色预测模型 WGM(1,1)模型
4。基于包络线的小数据振荡序列区间预测模型
第八章:灰色预测模型优化方法
%程序名称: 累加阶数优化的三参数离散灰色预测模型,TDGM(1,1,r)
%程序名称: 背景值优化的三参数离散灰色预测模型,TDGM(1,1,ξ)
%程序名称: 优化阶数的粒子群优化算法(Particle Swarm Optimization, PSO)
% [x,fval] = particleswarm(@(r) TDGM11_r(r),1,0,4)
%程序名称: 优化背景值系数的粒子群优化算法(Particle Swarm Optimization, PSO)
% [x,fval] = particleswarm(@(ksi) TDGM11_ksi(ksi),1,0,1)
第九章:灰色预测模型的MATLAB实现
%程序名称: 一种新结构的多变量灰色预测模型,NSGM(1,N)
附录:
、