【EM算法】

简单的掷二枚硬币

假设现在有两枚硬币A和B,,随机抛掷后正面朝上概率分别为 a a a b b b。为了估计这两个概率,做实验。硬币正反用随机变量 x x x表示,正面 x = 1 x=1 x=1,反面 x = 0 x=0 x=0

问题1:已知每次使用哪个硬币,求硬币A和硬币B的参数

A A A B B

硬币A和B的参数就是 p p p q q q

  • 使用频率统计方法计算
    a = 2 3 a=\frac{2}{3} a=32
    b = 1 2 b=\frac{1}{2} b=21
  • 使用极大似然方法求参数
    极大似然函数表示法 l ( θ , D ) l(\theta,D) l(θ,D),这里参数 θ = { a , b } \theta=\left\{a,b\right\} θ={a,b},用数学方式表示数据 D = { x 1 , x 2 , x 3 , x 4 , x 5 } D=\left\{x_1,x_2,x_3,x_4,x_5\right\} D={x1,x2,x3,x4,x5}
    投硬币的结果服从伯努利分布,第 i i i 次使用硬币 A A A 投掷结果概率表示为 p i A = a x i ( 1 − a ) 1 − x i p_{iA} = a^{x_i}(1-a)^{1-x_i} piA=axi(1a)1xi。同样第 i i i 次使用硬币 B B B 投掷结果概率表示为 p i B = b x i ( 1 − b ) 1 − x i p_{iB} = b^{x_i}(1-b)^{1-x_i} piB=bxi(1b)1xi。同样是进行第i次实验,实验结果表示使用两个数学表达式好像有点冗余了,有啥办法表示成一个呢?先使用把参数求出来在考虑。
    因此根据上表其实验结果出现的概率为 P ( D ∣ θ ) = P ( X ∣ θ ) = p i A 3 p i B 2 (0) P(D|\theta) = P(X|\theta)=p_{iA} ^{3} p_{iB}^{2} \tag{0} P(Dθ)=P(Xθ)=piA3piB2(0)
    上式展开后并将随机变量 x x x 具体数值带入可得 P ( X ∣ θ ) = a 2 ( 1 − a ) b ( 1 − b ) (1) P(X|\theta)=a^{2}(1-a)b(1-b)\tag{1} P(Xθ)=a2(1a)b(1b)(1)
    最大似然估计,分别对参数 a a a b b b 求偏导可得 a = 2 3 a = \frac{2}{3} a=32 , b = 1 2 b=\frac{1}{2} b=21
    同样是进行第i次实验,实验结果表示使用两个数学表达式好像有点冗余了,从使用 x x x 表示投掷硬币结果联想。如果添加一个随机变量表示第 i i i 次实验是使用 A A A 还是 B B B 就行了。假如使用 Z i Z_i Zi 表示第 i i i 次实验使用了什么硬币。规定使用硬币 A A A Z i = 1 Z_i = 1 Zi=1 , 使用硬币 B B B Z i = 0 Z_i = 0 Zi=0 , 是不可以把 Z i Z_i Zi 理解为使用硬币 A A A 的概率呢?只不过这个概率在这个场景下非 0 即 1 。那么第 i i i 次实验结果可表示为 p i = z i a x i ( 1 − a ) 1 − x i + ( 1 − z i ) b x i ( 1 − b ) 1 − x i (2) p_i=z_ia^{x_i}(1-a)^{1-x_i} +(1-z_i) b^{x_i}(1-b)^{1-x_i}\tag{2} pi=ziaxi(1a)1xi+(1zi)bxi(1b)1xi(2)
    因此上表可以拓展为
A A A B B
z 1 = 1 z_1=1 z1=1 z 2 = 1 z_2=1 z2=1 z 3 = 1 z_3=1 z3=1 z 4 = 0 z_4=0 z4=0 z 5 = 0 z_5=0 z5=0

把公式 2 带入 0 式得到的结果和 1 是一样的

问题2:未知每次使用哪个硬币,求硬币A和硬币B的参数

未知 未知 未知 未知 未知
z 1 = ? z_1=? z1=? z 2 = ? z_2=? z2=? z 3 = ? z_3=? z3=? z 4 = ? z_4=? z4=? z 5 = ? z_5=? z5=?

铺垫了这么一些,才真正引入到本文正题 E M ( E x p e c t i o n − M a x i m i z a t i o n ) EM(Expection-Maximization) EM(ExpectionMaximization)算法
引入了 Z Z Z 之后,在 Z Z Z未知的情况下 ,0 式为
P ( D ∣ θ ) = P ( X ∣ θ ) = ∑ Z P ( X , Z ∣ θ ) = ∏ i = 1 5 ( z i a x i ( 1 − a ) 1 − x i + ( 1 − z i ) b x i ( 1 − b ) 1 − x i ) (3) P(D|\theta) = P(X|\theta)= \sum_ZP(X,Z|\theta)=\prod_{i=1}^{5}(z_ia^{x_i}(1-a)^{1-x_i} +(1-z_i) b^{x_i}(1-b)^{1-x_i})\tag{3} P(Dθ)=P(Xθ)=ZP(XZθ)=i=15(ziaxi(1a)1xi+(1zi)bxi(1b)1xi)(3)
如果将 z i z_i zi具体值带入可以得到上式 0
如果直接应用最大似然因为有 z z z的存在,求不来。那如果 z z z 已知不就可以了么,这就用到了EM算法。E指的是隐变量 z z z 的expectaion,用E的expectation代替真是的 z z z 带入极大似然函数就可以求出来模型参数 θ \theta θ 。因为 θ \theta θ 已知,又可以反过来求出 z z z 的expectation,从而迭代下去可能直至收敛到真实值。

  • EM初探
    设定参数初始值 a = 0.7 , b = 0.4 a=0.7,b=0.4 a=0.7,b=0.4。当然,可以设定其他的,那样就可能不一定收敛到真实值。
    第一次实验结果为正,在假设 a = 0.7 , b = 0.4 a=0.7,b=0.4 a=0.7,b=0.4 的情况下,使用硬币 A 的概率为? 0.7 0.7 + 0.4 \frac{0.7}{0.7 +0.4} 0.7+0.40.7 ,使用硬币 B 的概率为 ? 0.4 0.7 + 0.4 \frac{0.4}{0.7 +0.4} 0.7+0.40.4

    • 可以使用统计方法
      使用硬币 A 的概率为 0.7 0.7 + 0.4 \frac{0.7}{0.7 +0.4} 0.7+0.40.7 ,使用硬币 B 的概率为 0.4 0.7 + 0.4 \frac{0.4}{0.7 +0.4} 0.7+0.40.4
    • 其实这个统计方法来源于条件概率和贝叶斯公式
      根据条件概率和贝叶斯公式 P ( A ∣ 正 ) = P ( A ) P ( 正 ∣ A ) P ( 正 ) P(A|正) =\frac{P(A)P(正|A)}{P(正)} P(A)=P()P(A)P(A) P ( B ∣ 正 ) = P ( B ) P ( 正 ∣ B ) P ( 正 ) P(B|正) =\frac{P(B)P(正|B)}{P(正)} P(B)=P()P(B)P(B)
      从而可以看出使用硬币 A 的概率要大于使用硬币 B的概率,粗糙点直接判定改次实验就是使用硬币 A了。同理将其他四组实验估计完可以将 z i z_i zi填上,如下表
A A A B B
z 1 = 1 z_1=1 z1=1 z 2 = 1 z_2=1 z2=1 z 3 = 1 z_3=1 z3=1 z 4 = 0 z_4=0 z4=0 z 5 = 0 z_5=0 z5=0

这不就转换为了问题1么。。。然后根据极大似然求出来 a = 2 3 , b = 1 2 a=\frac{2}{3},b=\frac{1}{2} a=32,b=21,别忘了EM是迭代算法,最终结束条件是收敛未知。因此将参数 a = 2 3 , b = 1 2 a=\frac{2}{3},b=\frac{1}{2} a=32,b=21带入再次估计使用硬币 A 的概率为? 0.7 0.7 + 0.4 \frac{0.7}{0.7 +0.4} 0.7+0.40.7 ,使用硬币 B 的概率为 ? 0.4 0.7 + 0.4 \frac{0.4}{0.7 +0.4} 0.7+0.40.4 ,啊 。。。收敛了

  • EM进阶
    在EM初探中,有一步是使用 A 的概率大于使用 B 的概率,就直接把 z i z_i zi 写成1了,其实完全可以用一个小于 1 的概率来表示,通常我们把这个概率叫 Expectation,这就是EM中E的由来吧
    因此此时 z i = 7 11 z_i=\frac{7}{11} zi=117,带入上式 3,又一次回到了问题1。然后求出来下一迭代时刻的参数 a a a, b b b,这个步骤不就是Maximization么,这一边完成了一次EM,然后根据 a a a, b b b,又可以求出来 z i zi zi。。。就迭代吧

你可能感兴趣的:(机器学习)