EM算法-统计学习方法(李航)

这里是做HMM前期学习的EM算法,这里学习了几篇文章,但是始终只懂了原理无法进行实例计算,这里学习了统计学习方法后对EM算法算是可以串出来计算了。
何为EM算法:
EM算法是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计
EM算法的迭代步骤分为2步,一个是E步:求期望,一个是M步:求极大。


先上一个例子:
假设有三枚硬币A,B,C,这些硬币正面出现的概率为π,p,q。
进行如下抛硬币实验:

  1. 先抛A硬币,若为正面则选择B,若为反面则选择C;

  2. 抛步骤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步:

计算新的估计值


i+1次估计值

开始套入上述的公式

设初始值

套入上述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|θ);
输出:模型参数θ。

  1. 选择参数的初值θ(0),开始迭代;
  2. E步:记θ(i)为第I次迭代参数θ的估计值,在第i+1次迭代的E步,计算:

这里,P(Z|Y,θ(i))是在给定观测数据Y和当前参数估计θ(i)下隐变量数据Z的条件概率分布;

  1. M步:求使Q(θ,θ(i)) 极大化的θ,确定第i+1次迭代的参数的估计值θ(i+1):


  2. 重复2,3步直到收敛。

你可能感兴趣的:(EM算法-统计学习方法(李航))