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

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

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

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

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

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

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

  

相关文章
相关标签/搜索