如何理解EM算法

EM算法是极大似然解的一种算法。当使用基于极大似然估计的模型时,模型中存在隐变量,就要用到EM算法进行参数估计。

以投硬币为例说明:

现有两枚硬币1和2,随机投掷正面朝上的概率是P1和P2,然后为了估计这两个概率做了上面的实验,我们可以很容易得出

P1 = (3+1+2)/15 = 0.4

p2 = (2+3)/10 = 0.5

为了使用我们的EM算法,我们加入隐变量,即还是上面的实验,但是我们抹去每轮投掷的硬币标记,继续求P1和P2

这时我们怎么做呢?先随机初始化一个P1和P2,拿这个去估计新加入的隐变量z,这里可以认为是一个5维的向量(z1,z2,z3,z4,z5)

假设P1 = 0.2,P2 = 0.7,对于第一轮投掷,硬币1得到3正2反的概率是(0.2)^3 * (0.7)^2 = 0.00512, 硬币2得到3正2反的概率是(0.7)^3 * (0.3)^2 = 0.03087

重复上面操作得到5轮的概率,根据最大似然法则z应该是(2,1,1,2,1),然后根据新得到的z回去计算P1和P2,得到0.33和0.6,可以看出进一步逼近了真实的0.4和0.5。这样重复计算不断接近真实概率,但最后能不能收敛取决于我们给的初值。

EM算法的完全版则是,在用z估计P1和P2时加入权重:

0.14 = 0.00512 / (0.00512 + 0.03087)

这一步计算z的概率分布就是EM算法的E(Expectation)步,我们现在认为第一轮有0.14的概率是硬币1,0.86的概率是硬币2,而不是之前的非此即彼。

此时我们按照最大似然法则估计P1和P2,得(以估计P1为例):

第一轮三正两反:0.14 * 3 = 0.42   0.14 * 2 = 0.28

P1 = 4.22 / (4.22 + 7.98) = 0.35

由E步得到的z去用最大似然法则估计P1和P2,就是M(Maximization)步。

这么估计出来的P1和P2比之前要更接近真实的P1和P2。

参考:https://www.jianshu.com/p/1121509ac1dc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值