最近用到HMM,MATALB自带HMM工具箱 了解一下
1、hmmgenerate函数
[SEQ, STATES] = HMMGENERATE(LEN,TRANSITIONS,EMISSIONS) --->产生一个HMM的随机序列,其中SEQ为产生的序列,STATES为序列中每个观察值所属于的状态;LEN为序列的长度,TRANSITIONS为状态转移矩阵,EMISSIONS为给定状态下观察值的概率分布。
具体的例子:可以运行help hmmgenerate
2、hmmestimate函数
[TR, E] = HMMESTIMATE(SEQ,STATES)--->通过已知的观察值序列SEQ以及每个观察值所属于的状态STATES,来估计状态转移矩阵TR和给定状态下观察值的概率分布E。
3、hmmtrain函数
[ESTTR, ESTEMIT] = HMMTRAIN(SEQS,TRGUESS,EMITGUESS) --->用来解决模型训练问题(调整模型参数,使得输出概率最大),具体使用的是Baum-Welch算法。
4、hmmviterbi函数
STATES = HMMVITERBI(SEQ,TRANSITIONS,EMISSIONS) --->用来估计模型产生观测符号序列的最有可能经过的路径。所有可能路径中,概率最大的路径,具体使用的是viterbi算法。
5、PSTATES = HMMDECODE(SEQ,TRANSITIONS,EMISSIONS)--->输出序列seq的后验状态概率,输出PSTATES为一个矩阵,其中PSTATES(i,i)表示第j个观察值属于第i个状态的概率。
参考:
转自:http://snowlh.blog.163.com/blog/static/223324134201392392637739/
在matlab中自带HMM工具箱实例1:https://www.cnblogs.com/zhizhan/p/4161516.html
在matlab中自带HMM工具箱实例2:https://blog.csdn.net/whiteinblue/article/details/40625291
在matlab中离散连续HMM工具箱实例3:http://blog.sina.com.cn/s/blog_5cd4cccf0101a0bk.html
工具箱下载:http://www.cs.ubc.ca/~murphyk/Software/HMM/hmm.html
工具箱说明:http://www.cs.ubc.ca/~murphyk/Software/HMM/hmm_usage.html
由于EM算法只能得到局部最优,对于初始选择很关键;对于高斯混合的初始初值设置:
https://www.media.mit.edu/wearables/mithril/BNT/mixtureBNT.txt