一个隐马尔可夫模型(HMM)是一个在你观察到的排放顺序,但不知道美国的模式经历了产生的排放顺序。隐马尔可夫模型的分析,力求从观察到的数据恢复状态序列。
作为一个例子,考虑有两个州和6个可能的排放马尔可夫模型。该模型使用:
红色模,具有六个侧面,标记为1到6。
绿色模,具有12个边,其中五个标记2至6,而其余的七个边被标记为1。
的加权红色硬币,对于其正面的概率是0.9和尾巴的概率是0.1。
的加权绿色硬币,对于其正面的概率是0.95和尾巴的概率为0.05。
该模型创建了号码从集合{1,2,3,4,5,6}以下规则的序列:
通过滚动红模和写下来,来了,这是发射的数字开头。
折腾红色硬币并执行以下操作之一:
如果结果是正面,滚动红模具和写下来的结果。
如果结果是尾巴,卷绿色芯片,并记下的结果。
在每一个后续步骤,你翻转具有颜色,你在上一步中轧模具相同的硬币。如果硬币过来头,卷在同一芯片在上一步。如果硬币过来尾巴,切换到其他芯片。
该模型的状态图有两种状态,红色和绿色,如示于以下图中。
你通过轧制具有相同的颜色作为状态模具确定从状态发射。您可以通过使用相同的颜色状态翻转硬币决定过渡到下一个状态。
转移矩阵是:
排放矩阵是:
该模型是不是隐藏的,因为你知道美国从硬币和骰子的颜色序列。然而,假设别人是产生的排放物没有表现出你的骰子或硬币。所有你看到的是排放的序列。如果你开始看到比其他数字多1秒,你可能会怀疑,该模型是在绿色的状态,但你不能肯定,因为你看不到模的颜色被卷起。
隐马尔可夫模型提出下面的问题:
鉴于排放量的序列,什么是最有可能的状态路径?
鉴于排放量的序列,你怎么能估计模型的转移和发射概率?
是什么向前概率该模型产生一个给定的顺序?
是什么后验概率该模型是在特定状态下的序列中的任何点?
统计和机器学习工具箱™与隐马尔可夫模型的功能有:
hmmgenerate
- 生成状态和排放的顺序从马尔可夫模型
hmmestimate
- 从排放物的序列和状态的已知序列的过渡和发射概率的计算最大似然估计
hmmtrain
- 计算最大似然过渡和发射概率的估计从排放的一个序列
hmmviterbi
- 计算一个隐马尔可夫模型最可能的状态路径
hmmdecode
- 计算排放物的序列的后验概率状态
本节展示了如何使用这些函数来分析隐马尔可夫模型。
下面的命令创建过渡和发射矩阵在所描述的模型介绍隐马尔可夫模型(HMM):
反式= [0.9 0.1;0.05 0.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,状态] = hmmgenerate(1000,TRANS,EMIS);
输出以次
是发射和输出的序列状态
是状态序列。
hmmgenerate
在步骤0开始在状态1时,使得转变为状态一世1在步骤1,并返回一世1作为第一个条目状态
。要更改初始状态,看更改初始状态分布。
给定的过渡和发射矩阵TRANS
和EMIS
, 功能hmmviterbi
使用Viterbi算法来计算状态的最可能的序列模型会去通过生成一个给定的顺序以次
排放:
likelystates = hmmviterbi(SEQ,TRANS,EMIS);
likelystates
是一个序列的长度相同以次
。
为了测试的准确性hmmviterbi
,计算实际序列的百分比状态
与序列一致likelystates
。
总和(状态== likelystates)/ 1000 ANS = 0.8200
在这种情况下,国家的最有可能的顺序与时间的随机序列的82%一致。
功能hmmestimate
和hmmtrain
估计过渡和发射矩阵TRANS
和EMIS
给定一个序列以次
的排放量。
运用hmmestimate
。功能hmmestimate
要求您知道状态序列状态
该模型去通过生成以次
。
下面以过渡和发射矩阵的发射和状态序列和返回估算值:
[TRANS_EST,EMIS_EST] = hmmestimate(SEQ,状态)TRANS_EST = 0.8989 0.1011 0.0585 0.9415 EMIS_EST = 0.1721 0.1721 0.1749 0.1612 0.1803 0.1393 0.5836 0.0741 0.0804 0.0789 0.0726 0.1104
您可以与原来的过渡和发射矩阵比较输出,TRANS
和EMIS
:
TRANS TRANS = 0.9000 0.1000 0.0500 0.9500 EMIS EMIS = 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.5833 0.0833 0.0833 0.0833 0.0833 0.0833
运用hmmtrain
。如果你不知道状态序列状态
,但你必须对初始猜测TRANS
和EMIS
,你仍然可以估算TRANS
和EMIS
运用hmmtrain
。
假设你有以下初始猜测TRANS
和EMIS
。
TRANS_GUESS = [0.85 0.15;0.1 0.9]。EMIS_GUESS = [0.17 0.16 0.17 0.16 0.17 0.17; 0.6 0.08 0.08 0.08 0.08 08];
你估计TRANS
和EMIS
如下:
[TRANS_EST2,EMIS_EST2] = hmmtrain(SEQ,TRANS_GUESS,EMIS_GUESS)TRANS_EST2 = 0.2286 0.7714 0.0032 0.9968 EMIS_EST2 = 0.1436 0.2348 0.1837 0.1963 0.2350 0.0066 0.4355 0.1089 0.1144 0.1082 0.1109 0.1220
hmmtrain
使用迭代算法,改变所述矩阵TRANS_GUESS
和EMIS_GUESS
使得在每个步骤中的调节矩阵是更可能产生所观察到的序列,以次
。该算法暂停时在两个连续的迭代中的矩阵是彼此的小的公差范围内。
如果算法不能迭代的最大数目,其默认值为内达到这种宽容100
,算法暂停。在这种情况下,hmmtrain
返回的最后的值TRANS_EST
和EMIS_EST
并发出了宽容并没有达到警告。
如果该算法无法达到所需的耐受性,增加与命令迭代的最大数量的默认值:
hmmtrain(SEQ,TRANS_GUESS,EMIS_GUESS, 'maxiterations',MAXITER)
哪里MAXITER
是步算法执行最大数量。
使用以下命令更改公差的默认值:
hmmtrain(SEQ,TRANS_GUESS,EMIS_GUESS, '宽容',TOL)
哪里TOL
在容许的所需的值。增加的价值TOL
使得算法停止越早,但结果不太准确。
两个因素减少的输出矩阵的可靠性hmmtrain
:
算法收敛到不表示真正的过渡和发射矩阵的局部最大值。如果你怀疑这一点,使用的矩阵不同的初始猜测TRANS_EST
和EMIS_EST
。
序列以次
可能太短适当地训练矩阵。如果你怀疑这一点,使用较长序列以次
。
的发射序列的后验概率状态以次
是条件概率,该模型是在一个特定的状态时,它产生在符号以次
, 鉴于以次
被发射。你计算后验状态概率与hmmdecode
:
PSTATES = hmmdecode(SEQ,TRANS,EMIS)
输出PSTATES
是一个中号-通过-大号矩阵,其中中号是状态的数量和大号是的长度以次
。PSTATES(I,J)
是的条件概率模型在状态一世
当它产生Ĵ
的个符号以次
, 鉴于以次
被发射。
hmmdecode
开始,在步骤0中的状态1中的模型中,先于第一发射。PSTATES(I,1)
是,该模型处于状态i的概率在下面的步骤1.要改变的初始状态,看更改初始状态分布。
要返回序列的概率的对数以次
中,使用的第二输出参数hmmdecode
:
[PSTATES,logpseq] = hmmdecode(SEQ,TRANS,EMIS)
一个序列的概率趋于0作为对序列的长度增加,以及足够长的序列的概率变得小于最小正数计算机可表示。hmmdecode
返回概率的对数,以避免这个问题。
默认情况下,统计和机器学习工具箱隐马尔可夫模型功能状态1开始。换句话说,初始状态的分布具有其所有可能的质量集中在状态1.要指定概率的不同分布,p= [p1,p2,...,p中号],在中号初始状态,做到以下几点:
创建中号+ 1逐中号+1增强转移矩阵, 以下形式的:
哪里Ť是真正的转换矩阵。第一列 包含中号+1零。p总和必须为1。
创建中号+ 1逐ñ增强发射矩阵, ,有以下形式:
如果过渡和发射矩阵是TRANS
和EMIS
分别创建具有下列命令的增广矩阵:
TRANS_HAT = [0 P;零(大小(TRANS,1),1)TRANS];EMIS_HAT = [零(1,大小(EMIS,2));EMIS];
hmmdecode
|hmmestimate
|hmmgenerate
|hmmtrain
|hmmviterbi