这里是做HMM前期学习的EM算法,这里学习了几篇文章,但是始终只懂了原理无法进行实例计算,这里学习了统计学习方法后对EM算法算是可以串出来计算了。
何为EM算法:
EM算法是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计
EM算法的迭代步骤分为2步,一个是E步:求期望,一个是M步:求极大。
先上一个例子:
假设有三枚硬币A,B,C,这些硬币正面出现的概率为π,p,q。
进行如下抛硬币实验:
-
先抛A硬币,若为正面则选择B,若为反面则选择C;
-
抛步骤1中选出的硬币,正面记作1,反面记作0。
即输入硬币A,B,C,输出1,0。

假设上述步骤为黑盒测试,只知道输入和输出,我们要根据输入输出得出这些硬币正面出现的概率π,p,q。
观测序列为{1,1,0,1,0,0,1,0,1,1}。

其中n=10。
设θ=(π,p,q),则投掷硬币的似然为:

由此开始EM算法进行参数估计!!
1. 输入模型初始参数π,p,q
2. E步:
求掷B硬币时的似然(观测变量yj来自于B的概率)μ:

3. M步:
计算新的估计值

开始套入上述的公式

套入上述E步公式,得出:

得出新的μ后,再带入M步的公式,得出新的π,p,q:

继续迭代,将上述的π(1),p(1),q(1)带入E步得出μ(2):
得出:

新的μ(2)带入M步得到:

此时,第一步的μ,π,p,q和第二步的μ,π,p,q已经相等了(收敛了),所以得到模型参数θ(π,p,q)的极大似然估计:

这个小实验的结论:A硬币是均匀的,B硬币和C硬币不均匀,导致BC正面出现的概率大一些。
此外,EM算法对初始值敏感,如果初值取为:

得到的收敛的参数估计值为:

所以一定要注意参数初始值的选择。
接着给出EM算法:
输入:观测变量数据Y,隐藏数据Z,联合概率分布P(Y,Z|θ),条件分布P(Z,Y|θ);
输出:模型参数θ。
- 选择参数的初值θ(0),开始迭代;
- E步:记θ(i)为第I次迭代参数θ的估计值,在第i+1次迭代的E步,计算:

这里,P(Z|Y,θ(i))是在给定观测数据Y和当前参数估计θ(i)下隐变量数据Z的条件概率分布;
-
M步:求使Q(θ,θ(i)) 极大化的θ,确定第i+1次迭代的参数的估计值θ(i+1):
- 重复2,3步直到收敛。
网友评论