一 概念
这里的例子出自 李航著的《统计学习方法》,有兴趣的同学可以去读一下。
一个简单的小试验:
有A,B,C,D,E五个盒子,每个盒子里有10个球,数据如下:
试验的步骤:
第一步:从五个盒子里任意取出一个盒子,这个概率为0.2
第二步:从这个盒子里取出一个球
设置约束:如果这一次取的盒子为A,那么下一次以0.4的概率取盒子C,或
0.6的概率取盒子D
如果这一次取的盒子为B,那么下一次以0.3的概率取盒子C,或
0.7的概率取盒子A
如果这一次取的盒子为C,那么下一次以0.2的概率取盒子B,或
0.8的概率取盒子D
如果这一次取的盒子为D,那么下一次以0.9的概率取盒子E,或
0.1的概率取盒子D
以下是概念:
试验的过程中,试验结果是,我们看到了一个从盒子里取出的球,并知道球的颜色是什么。
状态集合:{A, B, C, D, E}
观测集合:{红球, 篮球}
试验的次数为7次,则得到:
状态序列:{B, D, A, E, C, B, A}
观测序列:{红球,篮球,篮球,篮球,红球,红球,篮球}
二 原理
1 前向算法
输入:隐马尔可夫模型,观测序列;
输出:观测序列概率。
初值:
递推:t = 1, 2, …., T-1;
终止:
2 后向算法:
输入:隐马尔可夫模型,观测序列
输出:观测序列概率
(1)初值
根据定义,从T+1到T的部分观测序列其实不存在,所以硬性规定这个值是1。
(2)对
aij表示状态i转移到j的概率,bj表示发射Ot+1,表示j后面的序列对应的后向概率。
(3)
最后的求和是因为,在第一个时间点上有N种后向概率都能输出从2到T的观测序列,所以乘上输出O1的概率后求和得到最终结果。
三 理论的小demo