首页 > 其他 > 详细

matlab贝叶斯隐马尔可夫hmm模型实现

时间:2019-10-24 02:11:38      阅读:71      评论:0      收藏:0      [点我收藏+]

原文链接:http://tecdat.cn/?p=7973

 

贝叶斯隐马尔可夫模型是一种用于分割连续多变量数据的概率模型。该模型将数据解释为一系列隐藏状态生成。每个状态都是重尾分布的有限混合,具有特定于状态的混合比例和共享的位置/分散参数。

该模型中的所有参数都配备有共轭先验分布,并通过变化的贝叶斯(vB)推理算法学习,其本质上与期望最大化相似。该算法对异常值具有鲁棒性,并且可以接受缺失值。

 本文从未知的BRHMM生成一组数据序列 参数,并仅从这些数据中估算出 生成它们的模型。 结果绘制为 时间序列 

 

 设置状态,符号和特征的数量 

NumState=2;

NumSym=3;

NumFeat=5;
技术分享图片

 设置序列数,每个序列点数和缺失值 

NumSeq=2;

NumPoint=100;

NumMiss=20;
技术分享图片

 设置参数生成选项。TransParam=1/5 

EmissParam=1/5;

LocParam=2;

DispParam=5;
技术分享图片

 设置采样选项 

NumDeg=5;

NumObs=1000;
技术分享图片

 打印 和显示状态 

fprintf(‘\n‘)

fprintf(‘Sampling data ... ‘)
技术分享图片

 生成用于采样的参数 

[Trans,Emiss,Loc,Disp]=GenParam(NumState,NumSym,NumFeat,...

TransParam,EmissParam,LocParam,DispParam);
技术分享图片

技术分享图片技术分享图片?

技术分享图片技术分享图片?

 创建用于采样的模型 

Obj= bhnn(NumState,NumSym,NumFeat);

技术分享图片

 设置超参数 

Obj.TransWeight=Trans;

Obj.TransStren(:)=NumObs;

Obj.EmissWeight=Emiss;

Obj.EmissStren(:)=NumObs;

Obj.CompLoc=Loc;

Obj.CompScale(:)=NumObs;

Obj.CompDisp=Disp;

Obj.CompPrec(:)=max(NumObs,NumFeat);
技术分享图片

 采样数据并随机删除值 

 更新状态 

fprintf(‘Done\n‘)

fprintf(‘Estimating model ... ‘)
技术分享图片

 创建估计模型 

Obj=BHMM(NumState,NumSym,NumFeat);

技术分享图片

 约束过渡参数 

Obj.TransWeight=Trans;

Obj.TransStren(:)=NumObs;
技术分享图片

 估计模型和状态概率 

 更新状态 

 技术分享图片技术分享图片?

 绘制结果 

技术分享图片技术分享图片?

% 更新状态 
fprintf(‘Done\n‘)

fprintf(‘\n‘)

end
技术分享图片

  技术分享图片技术分享图片?技术分享图片技术分享图片?

 

如果您有任何疑问,请在下面发表评论。 

 

技术分享图片?

 

  

大数据部落 -中国专业的第三方数据服务提供商,提供定制化的一站式数据挖掘和统计分析咨询服务

统计分析和数据挖掘咨询服务:y0.cn/teradat(咨询服务请联系官网客服

技术分享图片?技术分享图片QQ:3025393450

 

技术分享图片?QQ交流群:186388004 技术分享图片

【服务场景】  

科研项目; 公司项目外包;线上线下一对一培训;数据爬虫采集;学术研究;报告撰写;市场调查。

【大数据部落】提供定制化的一站式数据挖掘和统计分析咨询

技术分享图片

欢迎选修我们的R语言数据分析挖掘必知必会课程!

技术分享图片

matlab贝叶斯隐马尔可夫hmm模型实现

原文:https://www.cnblogs.com/tecdat/p/11729183.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!