EM算法是一种迭代算法,用于含有隐变量(即我们无法观测到具体数据的但又客观存在的变量)的概率模型参数的极大似然估计(或极大后验概率估计)。em算法的每次迭代由两步组成:E步,求期望(expectation);m步,求极大值(maximization)。一个概率模型有时既含有观测变量,又含有隐变量。如果模型的变量都是观测变量,那么给定数据,可以直接使用极大似然估计,比如前面提到的回归问题。
然后我们通过一个小例子来对EM算法有一个大体上的认识。我们要估计一个学校的男女身高分布,我们随机的抽取两百人的身高,且不知道每个人的性别。即男女性别即隐变量。意思我们要在不知道性别的情况下来估计男女的身高分布。我们首先假设男生身高分布服从(μ1,σ1^2)的高斯分布,女生~(μ2,σ2^2)。在此基础上我们来计算每个样本属于每个男女的概率,比如一个身高1.8的样本,将其带入男生的概率密度函数可得p1=0.8(随意编的),带入女生可得p2=0.4。然后我们知道男生和女生这两个性别的分布是一个二项分布,概率都为0.5。p1求期望就是0.5*0.8=0.4(expect);p2则是0.5*0.4=0.2,再归一化可得0.67和0.33。然后1.8就可以分为1.2和0.6,可以理解成1.8有2/3是属于男生,1/3是女生。将所有样本遍历,可以将每个样本都分为一部分男(1.2)和一部分女(0.6)。由于男女生都是服从高斯分布的,所以所有样本的那一部分男是服从男生的高斯分布的,根据这些数据我们就可以得到新的男生的高斯分布,同样女生也一样。然后再讲每个样本代入新的分布算概率,开始循环,直到收敛。可以参考下图
下面开始介绍EM算法,我们的目标是在参数θ的条件下极大化观测数据X,即极大化:
注意到这一极大化的最大困难是式中有未观测数据z。没法直接极大化,我们就采取曲线救国,通过迭代来近似极大化的L(θ)。这里我们先引入一个Qi,代表的是隐变量z的分布。(Σz Qi(z) = 1, Qi(z) ≥0) 。则我们可以将上式改写成(2)
![](https://i-blog.csdnimg.cn/blog_migrate/ffca841743f2b2c74954c5041028f305.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4c323dad2e071edd3648a8c97e9e48aa.png)
![](https://i-blog.csdnimg.cn/blog_migrate/250dd739df8ad909704a3aaaedeb4dca.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e94f17459e185c69bfbffa836d602834.png)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8099ff297e581a01b20f128973dca.png)
![](https://i-blog.csdnimg.cn/blog_migrate/41206bcf78c81361284c529ebecc3253.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d452ded9a636160f1d8a9601e8aaee8b.png)
这就是EM算法的整个思路。说是一种算法,其实更像一种想法。我们还可以从另外一个角度来理解EM算法。
可以将其看为一个坐标上升算法,具体的参考上图。em算法不停的迭代直到收敛为止。并且em算法是一定能收敛的。我们假设经过先后两次迭代得到θ(t)和θ(t+1),我们如果能证明L(θ(t))<=L(θ(t+1)),就能得到em算法是保证最大似然是在增大的。加上其上限是1,故收敛。当有一个θ(t)时,进行em算法的e步,可得,前面也说到了。这一步是能保证jesen不等式的等号成立的,所以可得
![](https://i-blog.csdnimg.cn/blog_migrate/24f4686432208cef4ce6b7c83e64938c.png)