原文链接: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
参考文献
1.matlab 应用贝叶斯优化的深度学习
2.matlab 贝叶斯隐马尔可夫 hmm 模型实现
3.R 语言 Gibbs 抽样的贝叶斯简略线性回归仿真
4.R 语言中的 block Gibbs 吉布斯采样贝叶斯多元线性回归
5.R 语言中的 Stan 概率编程 MCMC 采样的贝叶斯模型
6.Python 用 PyMC3 实现贝叶斯线性回归模型
7.R 语言应用贝叶斯 层次模型进行空间数据分析
8.R 语言随机搜寻变量抉择 SSVS 预计贝叶斯向量自回归(BVAR)模型
9.matlab 贝叶斯隐马尔可夫 hmm 模型实现