阿白数模笔记之灰色-马尔科夫模型(Grey Markov model)
目录
前言(preface)
GM(1,1)
简介(brief introdution)
①级比检验(Grade ratio test)
②建立GM(1,1)模型
Ⅰ、邻值生成序列(Adjacent value generating sequence )
Ⅱ、回归分析(regression analysis)
Ⅲ、残差检验(Residual test)
Markov chain
① 转移概率矩阵(Transition probability matrix)
②状态分布向量(state vector)
③平稳分布向量(steady-state vector)
灰色马尔可夫模型(Grey Markov model)
①对y0建立GM(1,1)得到e1
Ⅰ、Grade ratio test
Ⅱ、Accumulative generation sequence
Ⅱ、Regression analysis&Residual test
②对abs(e1)建立GM(1,1)
Ⅰ、Grade ratio test
Ⅱ、Accumulative generation sequence
Ⅱ、Regression analysis&Residual test
③修正(revise)
Ⅰ、转移概率矩阵
Ⅱ、初始分布与预测
Ⅲ、修正效果
④总结(summary)
参考文章(Reference articles)
前言(preface)
在学习模拟退火算法时(Simulated Annealing,SA)发现了一个新名词——马尔科夫链(Markov chain),所以就先学习了Markov chain的相关知识,本文主要介绍GM(1,1),Markov chain,并将Grey Markov model应用到实例。
GM(1,1)
简介(brief introdution)
黑色未知,白色已知,而灰色是介于黑白之间的,意味着部分数据已知,而数据间有内在联系,但内在函数关系未知。GM(1,1)适用的情况大致满足以下条件:一、数据量少,二、短期预测,三、指数增长。下面是原数据和经过生成后的数据折线图,发现处理后的数据具有更明显的规律。
①级比检验(Grade ratio test)
%Grade ratio test
y0=[71.1,72.4,72.4,72.1,71.4,72.0,71.6];
[m,n]=size(y0);
k=0;
for i=2:n;a=y0(i-1)/y0(i);if exp(-2/(n+1))<a<exp(2/(n+1));k=k+1;end
end
if k==n-1disp('grey modle is vailable')
elsedisp('grey modle is invailable')
endoutput:
grey modle is vailable
②建立GM(1,1)模型
Ⅰ、邻值生成序列(Adjacent value generating sequence )
%GM(1,1)
x=1986:1992;
y0=[71.1,72.4,72.4,72.1,71.4,72.0,71.6];plot(x,y0,'-ok','markerfacecolor','r','linewidth',2);
axis([1985,1993,60,80]);
title('某城市1986-1992交通噪声平均声级');grid on%累加生成数列
y1=zeros(size(y0));
for i=1:size(y0,2);y1(i)=sum(y0(1:i));
end
figure,plot(x,y1,'-ok','markerfacecolor','r','linewidth',2);
axis([1985,1993,60,600]);%均值生成数列
z1=zeros(size(y0));
for i=1:size(y0,2);if i==1;z1(i)=y1(i);elsez1(i)=(y1(i)+y1(i-1))*0.5;end
end
hold on
plot(x,z1,'-ok','markerfacecolor','r','linewidth',2);
axis([1985,1993,60,600]);
title('生成序列');
legend('累加生成序列','均值生成序列');grid on
Ⅱ、回归分析(regression analysis)
fit1=polyfit(y1,y0,1);%拟合的一次函数
a1=fit1(1);u1=fit1(2);
%prediction
y11=zeros([1,1+n]);%n=size(y(0),2)
%y11是拟合后的累加生成序列
%y01用来储存时间步的预测值,y01(k+1)=y11(k+1)-y11(k)
y01=[y0(1),zeros([1,n])];
for k=0:ny11(k+1)=(y0(1)+u1/a1)*exp(a1*k)-u1/a1; %求解微分方程后的函数if k~=0y01(k+1)=y11(k+1)-y11(k);end
endfigure,plot(x,y0,'b*-');hold on
plot([x,1993],y01,'ro--');axis([1985,1993,60,80]);grid on
legend('actual','pred');title('Accumulative generation sequence')
Ⅲ、残差检验(Residual test)
%Residual test
e1=abs((y0-y01(1,1:7)))./y0;
r11=length(e1(find(e1<0.1)));
r12=length(e1(find(e1<0.2)));
if r1==ndisp('The fitting effect of the model is very good')
elseif r2==ndisp('The fitting effect of the model is not bad' )
elsedisp('GM(1,1) is not suitable to solve this problem')
endoutput:
The fitting effect of the model is very good
Markov chain
① 转移概率矩阵(Transition probability matrix)
动态规划算法中有个概念叫状态转移方程,就是说从前面 t-1 时刻的状态到 t时刻的状态的实现方式。Markov chain中的转移概率矩阵定义类似:(t-1)时刻处于状态 i,转移到状态 j 的概率为,则,即每一行的和为1,称为转移概率矩阵
②状态分布向量(state vector)
,称为t时刻的状态分布向量,,一般取为给定的初始分布,,其中P是转移概率矩阵
③平稳分布向量(steady-state vector)
对于一般的Markov chain ,当 t 足够大时,状态分布向量会收敛于某一特殊向量,即平稳分布向量,满足,即是P特征值为 1 时对应的特征向量
灰色马尔可夫模型(Grey Markov model)
y0 是原始序列,y1是累加生成序列,y11是拟合后的累加生成序列,y01是对原时间步的预测
e1是一阶残差序列e1=(y0-y1)
①对y0建立GM(1,1)得到e1
Ⅰ、Grade ratio test
%级比检验 Grade ratio test
y0=d;
[m,n]=size(y0);
k=0;
for i=2:n;a=y0(i-1)/y0(i);if exp(-2/(n+1))<a<exp(2/(n+1));k=k+1;end
end
if k==n-1disp('grey modle is vailable')
elsedisp('grey modle is invailable')
end
output:
grey modle is vailable
Ⅱ、Accumulative generation sequence
%GM(1,1)
x=1:20;
plot(x,y0,'-ok','markerfacecolor','r','linewidth',2);
axis([1,22,20,40]);
title('20旬某超市的的营业额');grid on;legend('data');
xlabel('时间/旬(10天)');ylabel('营业额/万元')%累加生成数列
y1=zeros(size(y0));
for i=1:size(y0,2);y1(i)=sum(y0(1:i));
endfigure,plot(x,y1,'-ok','markerfacecolor','r','linewidth',2);
axis([1,22,0,600]);
grid on;legend('Accumulative generation sequence','location','northwest');
xlabel('时间/旬(10天)');ylabel('营业额/万元')
Ⅱ、Regression analysis&Residual test
fit1=polyfit(y1,y0,1);
a1=fit1(1);u1=fit1(2);
%prediction
y11=zeros([1,1+n]);%n=size(y(0),2)
%y11是拟合后的累加生成序列
%y01用来储存时间步的预测值,y01(k+1)=y11(k+1)-y11(k)
y01=[y0(1),zeros([1,n])];
for k=0:ny11(k+1)=(y0(1)+u1/a1)*exp(a1*k)-u1/a1;if k~=0y01(k+1)=y11(k+1)-y11(k);end
endfigure,plot(x,y0,'b*-');hold on
plot([x,21],y01,'ro--');axis([1,22,20,40]);grid on
legend('actual','Uncorrected GM(1,1)');title('Accumulative generation sequence')%Residual test
e1=y0-y01(1,1:n)
e2=abs(e1)./y0;
r1=length(e2(find(e2<0.1)));
r2=length(e2(find(e2<0.2)));
if r1==ndisp('The fitting effect of the model is very good')
elseif r2==ndisp('The fitting effect of the model is not bad' )
elsedisp('GM(1,1) is not suitable to solve this problem')
end
运行后的结果显示:The fitting effect of the model is not bad,但从预测图来看效果是非常差的,因此需要某种方法对GM(1,1)模型做出修正
②对abs(e1)建立GM(1,1)
代码与上面是基本一致的,只给出各步骤对应结果
Ⅰ、Grade ratio test
grey modle is vailable
Ⅱ、Accumulative generation sequence
Ⅱ、Regression analysis&Residual test
pred即为残差修正值,用e01储存GM(1,1)对e0的预测结果;y00为修正(corrected)的结果;,其中,
③修正(revise)
Ⅰ、转移概率矩阵
状态划分为正,负,计算后知
即为概率转移矩阵
Ⅱ、初始分布与预测
以最后一个残差为初始分布,若大于0,则,否则,预测之后 t 个时间步,则对应的状态分布为,若,则取,否则。
Ⅲ、修正效果
④总结(summary)
通过引入残差的GM(1,1)来修正误差,并采用Markov chain 预测残差和原data下一个时间步的值,通过状态分布向量预估正负号,再对数据进行修正。Grey Markov model 弥补了传统GM(1,1)对波动性和趋势性数据预测精度低的不足
参考文章(Reference articles)
灰色预测模型GM(1,1) 与例题分析
灰色-马尔可夫模型
简述马尔可夫链【通俗易懂】
马尔可夫链 (Markov Chains)
阿白数模笔记之灰色-马尔科夫模型(Grey Markov model)相关推荐
- 初识马尔科夫模型(Markov Model)
初识马尔科夫模型(Markov Model) 一.概念 二.性质 三.学习步骤 一.概念 马尔科夫模型(Markov Model)是一种概率模型,用于描述随机系统中随时间变化的概率分布.马尔科夫模型基 ...
- 【大道至简】机器学习算法之隐马尔科夫模型(Hidden Markov Model, HMM)详解(3)---学习问题:Baum-Welch算法推导及Python代码实现
☕️ 本文系列文章汇总: (1)HMM开篇:基本概念和几个要素 (2)HMM计算问题:前后向算法 (3)HMM学习问题:Baum-Welch算法 (4) HMM预测问题:维特比算法 ☕️ 本文来自专栏 ...
- 《Data Algorithm》读书笔记十一— 使用马尔科夫模型的智能邮件营销
<Data Algorithm>读书笔记十一 - 使用马尔科夫模型的智能邮件营销 1. 智能邮件营销 是什么? 根据顾客的交易历史观测(其实就是推测) "下一个智能邮件营销日期& ...
- 隐马尔科夫模型(Hidden Markov Models) 系列之四
隐马尔科夫模型(Hidden Markov Models) 系列之四 介绍(introduction) 生成模式(Generating Patterns) 隐含模式(Hidden Patterns) ...
- 隐马尔科夫模型(Hidden Markov Models) 系列之五
隐马尔科夫模型(Hidden Markov Models) 系列之五 介绍(introduction) 生成模式(Generating Patterns) 隐含模式(Hidden Patterns) ...
- 隐马尔科夫模型(Hidden Markov Models) 系列之三
隐马尔科夫模型(Hidden Markov Models) 系列之三 介绍(introduction) 生成模式(Generating Patterns) 隐含模式(Hidden Patterns) ...
- 隐马尔科夫模型(Hidden Markov Models) 系列之一
隐马尔科夫模型(Hidden Markov Models) 系列之一 介绍(introduction) 生成模式(Generating Patterns) 隐含模式(Hidden Patterns) ...
- 灰色马尔科夫链matlab,基于灰色-马尔科夫模型的电力功率预测
利用1998-2009每年的用电量预测2010年的用电量 QQ图片20130515210109.jpg (20.32 KB, 下载次数: 18) 1998-2009每年用电量数据 2013-5-15 ...
- python做马尔科夫模型预测法_python 日常笔记 hmmlearn 隐性马尔科夫模型案例分析...
问题: 什么是马尔科夫模型?用来干什么? 大家可以参考这篇简书 python 实现 关于HMM有两个主要问题: 已知上述三个参数,和当前观测序列,求解隐藏状态的变化 所有参数未知,只有数据,如何获得三 ...
最新文章
- O(n)级选排名第k位数(附上算法复杂度分析)
- CVPR 2020 《12-in-1: Multi-Task Vision and Language Representation Learning》论文笔记
- Spartacus里HTTPErrorInterceptor的设计原理
- HelloWorldProxy is a factory bean
- 论文浅尝 - AAAI2020 | 通过知识库问答改善知识感知对话生成
- 云桌面服务器资源计算机,桌面云服务器资源计算机
- 批量转换Caltech Pedestrian Dataset中annotations中的.vbb文件为.txt文件
- js读取excel文件
- 用USBoot制作U盘启动盘
- 惠普omen测试软件,惠普OMEN笔记本系统
- WIN10专业版激活后变成教育版怎么解决
- 接口测试 requests的身份认证方式
- 免费在线语音识别成文字
- 台式计算机可以发射无线网络,台式电脑wifi发射教程
- virt-manager设置主机和虚拟机之间文件共享
- 寻找亲和数对C语言,寻找亲和数
- 微信小程序点播插件_5个常见的小程序插件功能,教你怎么用
- 中国邮政CRM系统建设沉淀_20181208
- Java是剑客;.NET是刀客(转载)
- 初级爬虫-获取网络图片
热门文章
- web课程设计网页规划与设计:个人毕设网站设计 —— 二手书籍(11个页面) HTML+CSS+JavaScript
- 异常解决:java.lang.IllegalStateException: Failed to introspect Class
- SCU - 4572 醉后不知天在水,满船清梦压星河【思维】
- 【janus 】openresty +janus
- 怎样开始学做自媒体?怎么起步?
- javascript函数总结
- Shader山下(十五)标准库函数
- 汉澳sinox不受openssl心血漏洞影响并分析修复其漏洞代码
- Jupyter lab add kernel Python+Julia+R 【jupyter Notebook 切换Python环境】and【在jupyter Notebook中安装第三方库】
- 程序员遇到 Bug 时的 30 个反应,你是哪一种?