EM算法之求解三硬币模型

  看了好几天的EM算法,还是看的一头雾水。借由三硬币模型,尝试使用EM算法。

1、EM算法流程

  1. E步:对完全数据的对数似然函数 log(P(Y,Z|θ)) l o g ( P ( Y , Z | θ ) ) 求关于 P(Z|Y,θ(i)) P ( Z | Y , θ ( i ) ) 的数学期望。
     EZ|Y,θ(i)[log(P(Y,Z|θ))] E Z | 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;独立重复 n n 次实验,观测记为Y=y1,y2,...,yn

3、EM算法求解

3.1)符号标记:

     yj y j 为第 j j 次实验的观测
    Z为隐变量,表示掷硬币A出现的结果。该变量只有两个取值0,1
     zj z j 为第 j j 次实验时,掷硬币A出现的结果,同样的,zj=1表示硬币A掷出正面
     θ θ 表示参数集合 π,p,q π , p , q
     θ(i) θ ( i ) 为第 i i 次迭代时,π,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 = 1 n p ( y j , z j | θ ) ) = ∑ j = 1 n log ⁡ ( p ( y j , z j | θ ) )

    期望为:
    
EZ|Y,θ(i)[log(P(Y,Z|θ))]=j=1nzj[p(zj|yj,θ(i))log(p(yj,zj|θ))]=j=1nzj[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|θ))]} E Z | Y , θ ( i ) [ log ⁡ ( P ( Y , Z | θ ) ) ] = ∑ j = 1 n ∑ z j [ p ( z j | y j , θ ( i ) ) log ⁡ ( p ( y j , z j | θ ) ) ] = ∑ j = 1 n ∑ z j [ p ( z j | y j , θ ( i ) ) log ⁡ ( p ( y j , z j | θ ) ) ] = ∑ j = 1 n { [ p ( z j = 1 | y j , θ ( i ) ) log ⁡ ( p ( y j , z j = 1 | θ ) ) ] + [ p ( z j = 0 | y j , θ ( i ) ) log ⁡ ( p ( y j , z j = 0 | θ ) ) ] }

    对于后验概率 p(zj|yj,θ(i)) p ( z j | y j , θ ( 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(1p(i))1yjπ(i)(p(i))yj(1p(i))1yjπ(i)+(q(i))yj(1q(i))1yj(1π(i)) μ j ( i + 1 ) = p ( z j = 1 | y j ; θ ( i ) ) = p ( y j , z j = 1 ) p ( y j ) = p ( y j | z j = 1 ) p ( z j = 1 ) ∑ z j p ( y j , z j ) = p ( y j | z j = 1 ) p ( z j = 1 ) p ( y j , z j = 1 ) + p ( y j , z j = 0 ) = ( p ( i ) ) y j ( 1 − p ( i ) ) 1 − y j ∗ π ( i ) ( p ( i ) ) y j ( 1 − p ( i ) ) 1 − y j ∗ π ( i ) + ( q ( i ) ) y j ( 1 − q ( i ) ) 1 − y j ∗ ( 1 − π ( i ) )

    对于联合概率 p(zj,yj|θ) p ( z j , y j | θ ) :
    

p(yj,zj=1|θ)=p(yj|zj=1,θ)p(zj=1|θ)=πpyj(1p)1yjp(yj,zj=0|θ)=p(yj|zj=0,θ)p(zj=0|θ)=(1π)qyj(1q)1yj p ( y j , z j = 1 | θ ) = p ( y j | z j = 1 , θ ) p ( z j = 1 | θ ) = π p y j ( 1 − p ) 1 − y j p ( y j , z j = 0 | θ ) = p ( y j | z j = 0 , θ ) p ( z j = 0 | θ ) = ( 1 − π ) q y j ( 1 − q ) 1 − y j

    所以最终结果:
    
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)jlog(πpyj(1p)1yj)+(1μ(i+1)j)log((1π)qyj(1q)1yj) E Z | Y , θ ( i ) [ log ⁡ ( P ( Y , Z | θ ) ) ] = ∑ j = 1 n { [ p ( z j = 1 | y j , θ ( i ) ) log ⁡ ( p ( y j , z j = 1 | θ ) ) ] + [ p ( z j = 0 | y j , θ ( i ) ) log ⁡ ( p ( y j , z j = 1 | θ ) ) ] } = ∑ j = 1 n { μ j ( i + 1 ) ∗ log ⁡ ( π p y j ( 1 − p ) 1 − y j ) + ( 1 − μ j ( i + 1 ) ) ∗ log ⁡ ( ( 1 − π ) q y j ( 1 − q ) 1 − y j ) }

3.3) M-Step

3.3.1 估计参数pi

    对E-Step的式子求极值,对参数求偏导,令其为0即可。其中 μ(i+1) μ ( i + 1 ) 为一个定值,相当于常数。
    对 π π 的求偏导:

fπ=j=1n{μ(i+1)j1π(1μ(i+1)j)11π}=j=1n{πμ(i+1)jπ(1π)}=nπj=1nμ(i+1)jπ(1π)=0 ∂ f ∂ π = ∑ j = 1 n { μ j ( i + 1 ) ∗ 1 π − ( 1 − μ j ( i + 1 ) ) ∗ 1 1 − π } = ∑ j = 1 n { π − μ j ( i + 1 ) π ( 1 − π ) } = n π − ∑ j = 1 n μ j ( i + 1 ) π ( 1 − π ) = 0

    所以 π π 的估计为:
π=1nj=1nμ(i+1)j π = 1 n ∑ j = 1 n μ j ( i + 1 )

3.3.2 估计参数p

    对 p p 求偏导:

fp=j=1nμj(i+1)π{yjpyj1(1p)1yj+pyj[(1yj)(1p)yj]}πpyj(1p)1yj=j=1nμj(i+1){yjpyj1(1p)yj(1p)+pyj1p[(yj1)(1p)yj]}pyj(1p)1yj=j=1nμj(i+1){yj(1p)+p(yj1)}p(1p)=j=1nμj(i+1){yj(1p)+p(yj1)}p(1p)=j=1nμj(i+1){yjp}p(1p)=0

     p p 的估计为:
p=j=1nμj(i+1)yjj=1nμj(i+1)

3.3.3 估计参数q

    对 q q 求偏导:

fq=j=1n(1μj(i+1))(1π){yjqyj1(1q)1yj+qyj[(1yj)(1q)yj]}(1π)qyj(1q)1yj=j=1n(1μj(i+1)){yjqyj1(1q)yj(1q)+qyj1q[(yj1)(1q)yj]}qyj(1q)1yj=j=1n(1μj(i+1)){yj(1q)+q(yj1)}q(1q)=j=1n(1μj(i+1)){yj(1q)+q(yj1)}q(1q)=j=1n(1μj(i+1)){yjq}p(1q)=0

     q q 的估计为:
p=j=1n(1μj(i+1))yjj=1n(1μj(i+1))

4、Ending

  除了求 p(zj|yj,θ(i)) p ( z j | y j , θ ( i ) ) 时, θ(i) θ ( i ) 的处理不太确定,其他的应该还算明白。

4.1 Ref

[1] 李航《统计学习方法》

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值