普查工具箱包括5个与隐马尔可夫模型相干的函数:
hmmgenerate从一个马尔可夫模型发生一个事态序列和输出序列;
hmmestimate计算迁移和输出的极大似然估计;
hmmtrain从一个输出序列计算迁移和输出概率的极大似然估计;
hmmviterbi计算一个隐马尔可夫模型最可能的事态改变过程;
hmmdecode计算一个给定输出序列的后验事态概率。
下面局部推荐如何利用这些函数来分析隐马尔可夫模型。
1. 发生一个测验序列
下面代码发生上面简介中模型的迁移和输出矩阵:
TRANS = [.9 .1; .05 .95;];
EMIS = [1/6, 1/6, 1/6, 1/6, 1/6, 1/6;...
7/12, 1/12, 1/12, 1/12, 1/12, 1/12];
要从模型发生一个随机的事态序列和输出序列,利用hmmgenerate:
[seq,states] = hmmgenerate(1000,TRANS,EMIS);
输出中,seq是输出序列,states是事态序列。hmmgenerate在第0步从事态1开始,在第一步迁移到事态i1
,并归来i1作为事态的第一个入口。
2. 估计事态序列
给定了迁移和输出矩阵TRANS和EMIS,函数hmmviterbi利用Viterbi算法计算模型给定输出序列seq最有可能
穿越的事态序列:
likelystates = hmmviterbi(seq, TRANS, EMIS);
likelystates是和seq一样长的序列。计算hmmvertibi的精度如下:
sum(states == likelystates) / length(states)
ans =
0.8680
3. 估计迁移和输出矩阵
函数hmmestimate和hmmtrain用于估计给定输出序列seq的迁移和输出矩阵TRANS和EMIS。
利用hmmestimate
[TRANS_EST, EMIS_EST] = hmmestimate(seq, states)
TRANS_EST =
0.9065 0.0935
0.0406 0.9594
EMIS_EST =