![人工智能程序员面试笔试宝典](https://wfqqreader-1252317822.image.myqcloud.com/cover/97/32463097/b_32463097.jpg)
3.3 EM算法
EM算法是数据缺失问题中的常用迭代算法,即似然函数未知或者非常复杂导致难以使用传统的极大似然方法进行估计。
3.3.1 试详细介绍EM算法
EM算法使用启发式的迭代方法来解决问题,由于模型分布参数未知,所以先猜想隐含数据(EM算法的E步),接着基于观察数据和猜测的隐含数据一起来极大化对数似然,求解模型参数(EM算法的M步),这两步需要迭代下去直到模型分布参数基本没有变化,直到找到合适的模型参数。简单来说就是E步是选取一组参数,求出在该参数下隐含变量的条件概率值;而M步是结合E步求出的隐含变量条件概率,求出似然函数下界函数的最大值。
E步公式为:
Qi(z(i)):=p(z(i)|x(i);θ)
M步公式为:
![](https://epubservercos.yuewen.com/5F7122/17526975206882706/epubprivate/OEBPS/Images/53_06.jpg?sign=1739271866-mPcC7skFJWhUSQOJasBqOpKGV2jPIYkQ-0-f2b892ff2c941b8c6bad81d2230bafcd)
其中x是样本观察数据,z是未观察到的隐含数据,θ为需要求的模型参数。那么为什么EM算法保证可以收敛到似然函数下界函数的极大值呢?具体原因见公式推导如下:
![](https://epubservercos.yuewen.com/5F7122/17526975206882706/epubprivate/OEBPS/Images/53_07.jpg?sign=1739271866-ONHaDa8brtiAjxSjmWGk4H15ItoYCWB8-0-def2fa225536ffe8bd202426741165a9)
为了更准确地解释EM算法,下面举一个例子:设某种实验共可能产生有4个结果发生的概率分别为,
,
,
其中θ∈(0,1),现进行了多次试验,4种结果的发生次数分别为n1,n2,n3,n4,求θ的MLE。
由于直接通过似然函数求解θ的MLE过程比较麻烦:
![](https://epubservercos.yuewen.com/5F7122/17526975206882706/epubprivate/OEBPS/Images/54_05.jpg?sign=1739271866-zEEkva7tF8ZDVoUbrDPFJWQJtlKcCAw4-0-5880b10d5acfba955b10a0aea2b0e318)
所以利用EM算法,具体步骤如下:
将第一种结果分成两种,发生的概率分别为和
,这样这两种方式发生的概率之和仍为
。设z1和n1-z1为这两种可能发生的的次数,此时则有
。再假设第三种结果分成两种,发生的概率分别为
和
,令z2和n3-z2为这两种可能发生的次数。此时则有
。
似然函数为:
![](https://epubservercos.yuewen.com/5F7122/17526975206882706/epubprivate/OEBPS/Images/54_13.jpg?sign=1739271866-XguWPPdDcg3wq9T13UGgmCGTOk5bKQJf-0-e45111e49707bcad535cc2dc10ea0070)
对数似然函数为:
l(θ;n,z)=(z2+n4)ln(θ)+(z1+n2)ln(1-θ)
下面利用EM算法分两步计算:
E步:在已有观测数据和第
步估计值θ(i)的条件下,求基于完全数据的对数似然函数的期望:
Q(θ|y,θ(i))=Ezl(θ;y,z)
M步:求Q(θ|y,θ(i))关于θ的最大值θ(i+1):
![](https://epubservercos.yuewen.com/5F7122/17526975206882706/epubprivate/OEBPS/Images/54_16.jpg?sign=1739271866-DALnqT1jt405nivl2aYMCigrZws2RC2j-0-a994a913ba81d8cccf98bd39f4f0a76e)
上两步反复迭代计算,收敛时即求得了θ的MLE。
3.3.2 利用EM算法进行Gauss混合分布的参数估计
混合高斯模型有M个部分,每个部分的权重为ak。则随机变量X的概率密度函数为:
![](https://epubservercos.yuewen.com/5F7122/17526975206882706/epubprivate/OEBPS/Images/54_17.jpg?sign=1739271866-91R6FGORlClvnus7QmH6TmvJDTYIRnk9-0-9fb7943087c470c5f20af33e7d5d9cd0)
其中θ=(α1,α2,…,αM,θ1,θ2,…,θM)
设样本观测值为X={x1,x2,…,xN},则GMM的对数似然函数为:
![](https://epubservercos.yuewen.com/5F7122/17526975206882706/epubprivate/OEBPS/Images/55_01.jpg?sign=1739271866-G1dSfIb4DJWP9fXX81SsQyKb81HpRBwi-0-d400cfec6ac2eca05856ad01f32d1289)
此时极大似然估计不易求得参数θ=(α1,α2,…,αM,θ1,θ2,…,θM)的估计,所以利用EM引入潜变量Y={y1,y2,…,yN},且yi∈{1, 2,…,M},i=1, 2,…,N。yi=k是指第i个观测样本是GMM的第k部分产生的,则引入潜变量后的对数似然函数为:
![](https://epubservercos.yuewen.com/5F7122/17526975206882706/epubprivate/OEBPS/Images/55_02.jpg?sign=1739271866-0g0FsRvZqCpvzFVEkUZ9ytN9bgaXZzBk-0-6a3cf3447b4aee7723372aec326c2fae)
下面用EM算法进行参数估计。
E步,求Q函数:
![](https://epubservercos.yuewen.com/5F7122/17526975206882706/epubprivate/OEBPS/Images/55_03.jpg?sign=1739271866-U6KBlIGuFGvM8IsSQVgQ8m4vgEFSlaXH-0-24b2bb54a431b94332a88273396bdfbf)
其中:
![](https://epubservercos.yuewen.com/5F7122/17526975206882706/epubprivate/OEBPS/Images/55_04.jpg?sign=1739271866-VmRL6sWo9Y89KsA8TXANZLqjDf3iHyra-0-360d3a5a8e69ccc55c634534e65dd72c)
M步:求Q(θ|θ(t-1))关于的最大值θ(t+1),更新参数:
![](https://epubservercos.yuewen.com/5F7122/17526975206882706/epubprivate/OEBPS/Images/55_06.jpg?sign=1739271866-MdkFD2v1Rp0ztlyFpCOkoy5PRyDnC28H-0-6ad6a6e2bae6855e63980c34600d2850)
对求偏导并令其为0,得到:
![](https://epubservercos.yuewen.com/5F7122/17526975206882706/epubprivate/OEBPS/Images/55_08.jpg?sign=1739271866-9owuGbLTQwAXdPYS8s1lClaLDF2SuIEG-0-9d42066f1e7dab7297d9ce90c9fda785)
求出的参数估计后即可求出:
![](https://epubservercos.yuewen.com/5F7122/17526975206882706/epubprivate/OEBPS/Images/55_10.jpg?sign=1739271866-dyOjIX8iJzu3CuOta4bq3mopeCoGeqXt-0-4811373e04f5f61aef57c3c873001023)
3.3.3 利用EM算法模拟两个正态分布的均值估计
3.3.2节介绍了如何利用EM算法做Gauss混合分布(GMM)的参数估计,而两个正态分布的均值估计即是这个问题的特殊情况,下面直接展示代码:
![](https://epubservercos.yuewen.com/5F7122/17526975206882706/epubprivate/OEBPS/Images/56_01.jpg?sign=1739271866-FkUkDO1MoThlg5VfsLDKXqe3Rk0Jd8lR-0-454480528f84df99df1b3a560af4da43)