灰色理论预测模型

灰色理论

通过对原始数据的处理挖掘系统变动规律,建立相应微分方程,从而预测事物未来发展状况。  优点:对于不确定因素的复杂系统预测效果较好,且所需样本数据较小;  缺点:基于指数率的预测没有考虑系统的随机性,中长期预测精度较差。

灰色预测模型

在多种因素共同影响且内部因素难以全部划定,因素间关系复杂隐蔽,可利用的数据情况少下可用,一般会加上修正因子使结果更准确。  灰色系统是指“部分信息已知,部分信息未知“的”小样本“,”贫信息“的不确定系统,以灰色模型(G,M)为核心的模型体系。

灰色预测模型建模机理

灰色系统理论是基于关联空间、光滑离散函数等概念,定义灰导数与会微分方程,进而用离散数据列建立微分方程形式的动态模型。

灰色预测模型实验

以sin(pi*x/20)函数为例,以单调性为区间检验灰色模型预测的精度 

通过实验可以明显地看出,灰色预测对于单调变化的序列预测精度较高,但是对波动变化明显的序列而言,灰色预测的误差相对比较大。究其原因,灰色预测模型通过AGO累加生成序列,在这个过程中会将不规则变动视为干扰,在累加运算中会过滤掉一部分变动,而且由累加生成灰指数律定理可知,当序列足够大时,存在级比为0.5的指数律,这就决定了灰色预测对单调变化预测具有很强的惯性,使得波动变化趋势不敏感。

本文所用测试代码:

clc
clear all
% 本程序主要用来计算根据灰色理论建立的模型的预测值。
% 应用的数学模型是 GM(1,1)。
% 原始数据的处理方法是一次累加法。
x=[0:1:10];
x1=[10:1:20];
x2=[0:1:20];
y=sin(pi*x/20);
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=5;  %需要预测个数
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);
det=0;
for i=2:n
    det=det+abs(yn(i)-y(i));
end
det=det/(n-1);

subplot(2,2,1),plot(x,y,'^r-',xs,yn,'b-o'),title('单调递增' ),legend('实测值','预测值');
disp(['百分绝对误差为:',num2str(det),'%']);
disp(['预测值为: ',num2str(ys(n+1:n+t_test))]);


%递减
y1=sin(pi*x1/20);
n1=length(y1);
yy1=ones(n1,1);
yy1(1)=y1(1);
for i=2:n1
    yy1(i)=yy1(i-1)+y1(i);
end
B1=ones(n1-1,2);
for i=1:(n1-1)
    B1(i,1)=-(yy1(i)+yy1(i+1))/2;
    B1(i,2)=1;
end
BT1=B1';
for j=1:n1-1
    YN1(j)=y1(j+1);
end
YN1=YN1';
A1=inv(BT1*B1)*BT1*YN1;
a1=A1(1);
u1=A1(2);
t1=u1/a1;
t_test1=5;  %需要预测个数
i=1:t_test1+n1;
yys1(i+1)=(y1(1)-t1).*exp(-a1.*i)+t1;
yys1(1)=y1(1);
for j=n1+t_test1:-1:2
    ys1(j)=yys1(j)-yys1(j-1);
end
x21=1:n1;
xs1=2:n1+t_test1;
yn1=ys1(2:n1+t_test1);
det1=0;
for i=2:n1
    det1=det1+abs(yn1(i)-y1(i));
end
det1=det1/(n1-1);

subplot(2,2,2),plot(x1,y1,'^r-',xs1,yn1,'b-o'),title('单调递增' ),legend('实测值','预测值');
disp(['百分绝对误差为:',num2str(det1),'%']);
disp(['预测值为: ',num2str(ys1(n1+1:n1+t_test1))]);

%整个区间
y2=sin(pi*x2/20);
n2=length(y2);
yy2=ones(n2,1);
yy2(1)=y2(1);
for i=2:n2
    yy2(i)=yy2(i-1)+y2(i);
end
B2=ones(n2-1,2);
for i=1:(n2-1)
    B2(i,1)=-(yy2(i)+yy2(i+1))/2;
    B2(i,2)=1;
end
BT2=B2';
for j=1:n2-1
    YN2(j)=y2(j+1);
end
YN2=YN2';
A2=inv(BT2*B2)*BT2*YN2;
a2=A2(1);
u2=A2(2);
t2=u2/a2;
t_test2=5;  %需要预测个数
i=1:t_test2+n2;
yys2(i+1)=(y2(1)-t2).*exp(-a2.*i)+t2;
yys2(1)=y2(1);
for j=n2+t_test2:-1:2
    ys2(j)=yys2(j)-yys2(j-1);
end
x22=1:n2;
xs2=2:n2+t_test2;
yn2=ys2(2:n2+t_test2);
det2=0;
for i=2:n2
    det2=det2+abs(yn2(i)-y2(i));
end
det2=det2/(n2-1);

subplot(2,1,2),plot(x2,y2,'^r-',xs2,yn2,'b-o'),title('全区间' ),legend('实测值','预测值');
disp(['百分绝对误差为:',num2str(det2),'%']);
disp(['预测值为: ',num2str(ys2(n2+1:n2+t_test2))]);

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏BestSDK

Google开源的“Show and Tell”,是如何让机器“看图说话”的?

| 机器的Image Captioning(自动图像描述)能力 电影《HER》中的“萨曼莎”是一款基于AI的OS系统,基于对西奥多的手机信息和图像内容的理解,“...

30170
来自专栏CSDN技术头条

Airbnb欺诈预测机器学习模型设计:准确率和召回率的故事

【编者按】Airbnb网站基于允许任何人将闲置的房屋进行长期或短期出租构建商业模式,来自房客或房东的欺诈风险是必须解决的问题。Airbnb信任和安全小组通过构建...

23780
来自专栏北京马哥教育

最全解析:大数据和机器学习有什么区别

? 作者:YCM1101743158 来源: http://blog.csdn.net/ycm1101743158/article/details/70158...

580120
来自专栏AI研习社

博客 | 「特征工程」与「表示学习」

当我们学习一个复杂概念时,总想有一条捷径可以化繁为简。机器学习模型也不例外,如果有经过提炼的对于原始数据的更好表达,往往可以使得后续任务事倍功半。这也是表示学习...

21240
来自专栏AI科技评论

学界 | François Chollet谈深度学习的局限性和未来(上)

AI 科技评论按:本文来自 Keras 作者 François Chollet,同时也是根据他撰写的《Deeping Learning with Python》...

10930
来自专栏机器学习算法与Python学习

从0到1,这篇深度学习综述送给你!

14670
来自专栏量子位

谷歌用3亿张图做了个深度学习实验,结论:数据还是越大越好

陈桦 编译自 Google Blog 量子位 报道 | 公众号 QbitAI 都说深度学习的兴起和大数据息息相关,那么是不是数据集越大,训练出的图像识别算法准确...

43890
来自专栏机器之心

从起源到具体算法,这是一份适合所有人读的深度学习综述论文

选自arXiv 作者:Md Zahangir Alom 等 机器之心编译 参与:白妤昕、黄小天、李泽南 自 2012 年多伦多大学 Alex Krizhevsk...

335100
来自专栏YoungGy

ML基石_7_VC

recap more on growth function more on VC bound VC Definition VC of perceptrons R...

21950
来自专栏机器之心

论强化学习和概率推断的等价性:一种全新概率模型

14830

扫码关注云+社区

领取腾讯云代金券