EM算法的引入
引入EM算法的原因:
概率模型有时候既含有观测变量,又含有隐变量或者潜在变量。如果概率模型的变量都是观测变量,那么给定数据,可以直接用极大似然估计法,或者贝叶斯估计法估计模型参数。但是当模型含有隐变量时,就不能简单地使用这些估计方法。EM算法就是含有隐变量的概率模型参数的极大似然估计法。
EM算法的例子
《统计学习方法》例9.1(三硬币模型):
假设有3枚硬币,分别记作A,B,C。这些硬币正面出现的概率分别是 π\piπ ,ppp 和 qqq 。进行如下掷硬币试验: 先掷硬币A,根据其结果选出硬币B或硬币C,正面选硬币B,反面选硬币C;然后掷选出的硬币,掷硬币的结果,出现正面记作1,出现反面记作0;独立地重复n次实验(这里,n=10),观测结果如下
1,1,0,1,0,0,1,0,1,1 1,1,0,1,0,0,1,0,1,1 1,1,0,1,0,0,1,0,1,1
假设只能观测到掷硬币的结果,不能观测掷硬币的过程。问如何估计三硬币正面出现的概率,即三硬币模型的参数。
对于每一次实验可以进行如下建模:
P(y∣θ)=∑zP(y,z∣θ)=∑zP(z∣θ)P(y∣z,θ) P(y \mid \theta)=\sum_{z} P(y, z \mid \theta)=\sum_{z} P(z \mid \theta) P(y \mid z, \theta) P(y∣θ)=z∑P(y,z∣θ)=z∑P(z∣θ)P(y∣z,θ)
随机变量y是观测变量,表示一次试验观测的结果是1或0;随机变量z是隐变量,表示未观测到的掷硬币A的结果。这里其实利用了P(A)=∑BP(A,B)P(A)=\sum_{B}P(A, B)P(A)=∑BP(A,B),以及P(A,B)=P(A)⋅P(A∣B)P(A, B)=P(A)\cdot P(A|B)P(A,B)=P(A)⋅P(A∣B)。然后我们有
P(y∣θ)=∑zP(y,z∣θ)=∑zP(z∣θ)P(y∣z,θ)=P(z=1∣θ)P(y∣z=1,θ)+P(z=0∣θ)P(y∣z=0,θ)={
πp+(1−π)q, if y=1π(1−p)+(1−π)(1−q), if y=0=πpy(1−p)1−y+(1−π)qy(1−q)1−y \begin{aligned} P(y \mid \theta) &=\sum_{z} P(y, z \mid \theta)=\sum_{z} P(z \mid \theta) P(y \mid z, \theta) \\ &=P(z=1 \mid \theta) P(y \mid z=1, \theta)+P(z=0 \mid \theta) P(y \mid z=0, \theta) \\ &= \begin{cases}\pi p+(1-\pi) q, & \text { if } y=1 \\ \pi(1-p)+(1-\pi)(1-q), & \text { if } y=0\end{cases} \\ &=\pi p^{y}(1-p)^{1-y}+(1-\pi) q^{y}(1-q)^{1-y} \end{aligned} P(y∣θ)=z∑P(y,z∣θ)=z∑P(z∣θ)P(y∣z,θ)=P(z=1∣θ)P(y∣z=1,θ)+P(z=0∣θ)P(y∣z=0,θ)={
πp+(1−π)q,π(1−p)+(1−π)(1−q), if y=1 if y=0=πpy(1−p)1−y+(1−π)qy(1−q)1−y
这里θ=(π,p,q)\theta=(\pi, p, q)θ=(π,p,q)是模型参数。将观测数据表示为Y=(Y1,Y2,…,Yn)TY=\left(Y_{1}, Y_{2}, \ldots, Y_{n}\right)^{T}Y=(Y1,Y2,…,Yn)T,未观测数据表示为Z=(Z1,Z2,…,Zn)TZ=\left(Z_{1}, Z_{2}, \ldots, Z_{n}\right)^{T}Z=(Z1,Z2,…,Zn)T,则观测数据的似然函数为每次实验累乘的结果:
P(Y∣θ)=∑ZP(Z∣θ)P(Y∣Z,θ)=∏j=1nP(yj∣θ)=∏j=1n[πpyj(1−p)1−yj+(1−π)qyj(1−q)1−yj] P(Y \mid \theta)=\sum_{Z} P(Z \mid \theta) P(Y \mid Z, \theta)=\prod_{j=1}^{n} P\left(y_{j} \mid \theta\right)\\ =\prod_{j=1}^{n}\left[\pi p^{y_{j}}(1-p)^{1-y_{j}}+(1-\pi) q^{y_{j}}(1-q)^{1-y_{j}}\right] P(Y∣θ)=Z∑P(Z∣θ)P(Y∣Z,θ)=j=1∏nP(yj∣θ)=j=1∏n[πpyj(1−p)1−yj+(1−π)qyj(1−q)1−yj]
考虑求模型参数θ=(π,p,q)\theta=(\pi, p, q)θ=(π,p,q)的极大似然估计,也就是使用对数似然函数来进行参数估计可得:
θ^=argmaxθlnP(Y∣θ)=argmaxθln∏j=1n[πpyj(1−p)1−yj+(1−π)qyj(1−q)1−yj]=argmaxθ∑j=1nln[πpyj(1−p)1−yj+(1−π)qyj(1−q)1−yj] \begin{aligned} \hat{\theta} &=\arg \max _{\theta} \ln P(Y \mid \theta) \\ &=\arg \max _{\theta} \ln \prod_{j=1}^{n}\left[\pi p^{y_{j}}(1-p)^{1-y_{j}}+(1-\pi) q^{y_{j}}(1-q)^{1-y_{j}}\right] \\ &=\arg \max _{\theta} \sum_{j=1}^{n} \ln \left[\pi p^{y_{j}}(1-p)^{1-y_{j}}+(1-\pi) q^{y_{j}}(1-q)^{1-y_{j}}\right] \end{aligned} θ^=argθmaxlnP(Y∣θ)=argθmaxlnj=1∏n