看了好几天的EM算法,还是看的一头雾水。借由三硬币模型,尝试使用EM算法。
1、EM算法流程
1. E步:对完全数据的对数似然函数log(P(Y,Z|θ))log(P(Y,Z|θ))求关于P(Z|Y,θ(i))P(Z|Y,θ(i))的数学期望。
EZ|Y,θ(i)[log(P(Y,Z|θ))]EZ|Y,θ(i)[log(P(Y,Z|θ))]
其中θ(i)θ(i)是第i次迭代时,θθ的估计值
2. M步:对E步的结果求极值
2、案例:三硬币模型
假设有3枚硬币,分别记作A,B,C。这些硬币正面出现的概率分别是π,p,qπ,p,q,进行如下掷硬币实验:先掷硬币A,根据其结果选出硬币B或C,正面选B,反面选C,然后掷选出的硬币,掷硬币的结果,出现正面记作1,反面记作0;独立重复nn次实验,观测记为Y=y1,y2,...,yn。
3、EM算法求解
3.1)符号标记:
yjyj为第jj次实验的观测
Z为隐变量,表示掷硬币A出现的结果。该变量只有两个取值0,1
zjzj为第jj次实验时,掷硬币A出现的结果,同样的,zj=1表示硬币A掷出正面
θθ表示参数集合π,p,qπ,p,q
θ(i)θ(i)为第ii次迭代时,π,p,q的估计值
3.2)E-Step
完全数据的对数似然函数为:
log(P(Y,Z|θ))=log(∏j=1np(yj,zj|θ))=∑j=1nlog(p(yj,zj|θ))log(P(Y,Z|θ))=log(∏j=1np(yj,zj|θ))=∑j=1nlog(p(yj,zj|θ))
期望为:
EZ|Y,θ(i)[log(P(Y,Z|θ))]=∑j=1n∑zj[p(zj|yj,θ(i))log(p(yj,zj|θ))]=∑j=1n∑zj[p(zj|yj,θ(i))log(p(yj,zj|θ))]=∑j=1n{[p(zj=1|yj,θ(i))log(p(yj,zj=1|θ))]+[p(zj=0|yj,θ(i))log(p(yj,zj=0|θ))]}EZ|Y,θ(i)[log(P(Y,Z|θ))]=∑j=1n∑zj[p(zj|yj,θ(i))log(p(yj,zj|θ))]=∑j=1n∑zj[p(zj|yj,θ(i))log(p(yj,zj|θ))]=∑j=1n{[p(zj=1|yj,θ(i))log(p(yj,zj=1|θ))]+[p(zj=0|yj,θ(i))log(p(yj,zj=0|θ))]}
对于后验概率p(zj|yj,θ(i))p(zj|yj,θ(i)),此时θ(i)θ(i) 为一个定值,对后验概率本身可以直接计算,所以可以不考虑。(不知道这样解释合不合理)
μ(i+1)j=p(zj=1|yj;θ(i))=p(yj,zj=1)p(yj)=p(yj|zj=1)p(zj=1)∑zjp(yj,zj)=p(yj|zj=1)p(zj=1)p(yj,zj=1)+p(yj,zj=0)=(p(i))yj(1−p(i))1−yj∗π(i)(p(i))yj(1−p(i))1−yj∗π(i)+(q(i))yj(1−q(i))1−yj∗(1−π(i))μj(i+1)=p(zj=1|yj;θ(i))=p(yj,zj=1)p(yj)=p(yj|zj=1)p(zj=1)∑zjp(yj,zj)=p(yj|zj=1)p(zj=1)p(yj,zj=1)+p(yj,zj=0)=(p(i))yj(1−p(i))1−yj∗π(i)(p(i))yj(1−p(i))1−yj∗π(i)+(q(i))yj(1−q(i))1−yj∗(1−π(i))
对于联合概率p(zj,yj|θ)p(zj,yj|θ):
p(yj,zj=1|θ)=p(yj|zj=1,θ)p(zj=1|θ)=πpyj(1−p)1−yjp(yj,zj=0|θ)=p(yj|zj=0,θ)p(zj=0|θ)=(1−π)qyj(1−q)1−yjp(yj,zj=1|θ)=p(yj|zj=1,θ)p(zj=1|θ)=πpyj(1−p)1−yjp(yj,zj=0|θ)=p(yj|zj=0,θ)p(zj=0|θ)=(1−π)qyj(1−q)1−yj
所以最终结果:
EZ|Y,θ(i)[log(P(Y,Z|θ))]=∑j=1n{[p(zj=1|yj,θ(i))log(p(yj,zj=1|θ))]+[p(zj=0|yj,θ(i))log(p(yj,zj=1|θ))]}=∑j=1n⎧⎩⎨⎪⎪μ(i+1)j∗log(πpyj(1−p)1−yj)+(1−μ(i+1)j)∗log((1−π)qyj(1−q)1−yj)⎫⎭⎬⎪⎪EZ|Y,θ(i)[log(P(Y,Z|θ))]=∑j=1n{[p(zj=1|yj,θ(i))log(p(yj,zj=1|θ))]+[p(zj=0|yj,θ(i))log(p(yj,zj=1|θ))]}=∑j=1n{μj(i+1)∗log(πpyj(1−p)1−yj)+(1−μj(i+1))∗log((1−π)qyj(1−q)1−yj)}
3.3) M-Step
3.3.1 估计参数pi
对E-Step的式子求极值,对参数求偏导,令其为0即可。其中μ(i+1)μ(i+1)为一个定值,相当于常数。
对ππ的求偏导:
∂f∂π=∑j=1n{μ(i+1)j∗1π−(1−μ(i+1)j)∗11−π}=∑j=1n{π−μ(i+1)jπ(1−π)}=nπ−∑j=1nμ(i+1)jπ(1−π)=0∂f∂π=∑j=1n{μj(i+1)∗1π−(1−μj(i+1))∗11−π}=∑j=1n{π−μj(i+1)π(1−π)}=nπ−∑j=1nμj(i+1)π(1−π)=0
所以
ππ的估计为:
π=1n∑j=1nμ(i+1)jπ=1n∑j=1nμj(i+1)
3.3.2 估计参数p
对pp求偏导:
∂f∂p=∑j=1nμ(i+1)j∗π{yjpyj−1(1−p)1−yj+pyj[−(1−yj)(1−p)−yj]}πpyj(1−p)1−yj=∑j=1nμ(i+1)j∗{yjpyj−1(1−p)−yj∗(1−p)+pyj−1∗p[(yj−1)(1−p)−yj]}pyj(1−p)1−yj=∑j=1nμ(i+1)j∗{yj(1−p)+p∗(yj−1)}p(1−p)=∑j=1nμ(i+1)j∗{yj(1−p)+p∗(yj−1)}p(1−p)=∑j=1nμ(i+1)j∗{yj−p}p(1−p)=0
pp的估计为:
p=∑j=1nμ(i+1)jyj∑j=1nμ(i+1)j
3.3.3 估计参数q
对qq求偏导:
∂f∂q=∑j=1n(1−μ(i+1)j)∗(1−π){yjqyj−1(1−q)1−yj+qyj[−(1−yj)(1−q)−yj]}(1−π)qyj(1−q)1−yj=∑j=1n(1−μ(i+1)j)∗{yjqyj−1(1−q)−yj∗(1−q)+qyj−1∗q[(yj−1)(1−q)−yj]}qyj(1−q)1−yj=∑j=1n(1−μ(i+1)j)∗{yj(1−q)+q∗(yj−1)}q(1−q)=∑j=1n(1−μ(i+1)j)∗{yj(1−q)+q∗(yj−1)}q(1−q)=∑j=1n(1−μ(i+1)j)∗{yj−q}p(1−q)=0
qq的估计为:
p=∑j=1n(1−μ(i+1)j)yj∑j=1n(1−μ(i+1)j)
4、Ending
除了求p(zj|yj,θ(i))p(zj|yj,θ(i))时,θ(i)θ(i)的处理不太确定,其他的应该还算明白。
4.1 Ref
[1] 李航《统计学习方法》