EM(Expectation Maximization)算法原理

一个简单的例子

在讲EM算法之前,我们先看一个简单的例子。假设我们有两个硬币,分别叫A和B,A和B不是一般的硬币,它们投掷出正面和反面的概率是不一定一样的,我们假设A和B投掷出正面的概率分别是 θA θB

现在我们重复下面的过程5次:
- 从A和B中随机取1枚出来
- 将选出的硬币投掷10次
- 记录投掷出正面的次数

在这之后我们得到了投掷的结果如下表所示:

选中的硬币正面次数反面次数
B55
A91
A82
B46
A73



我们想通过上面的实验来估计 θA θB 。其实这很简单,针对硬币A来说,总共投掷了30次,投掷出正面的次数为9+8+7=24次,那么我们可以算出A投掷出正面的概率 θA=24/30=0.8 ,同理针对硬币B来说,共投掷了20次,投掷出正面的次数为5+4=9次,那么我们可以估计B投掷出正面的概率 θA=9/20=0.45

EM算法思想

前面的那个问题很简单,假设我们把问题稍微改变一下,即现在我们只知道每次有几次投掷出正面,但是不知道每次投掷的是哪个硬币,也就是说我们只知道上表中第二列和第三列,那么我们怎么去估计 θA θB 呢?

这个问题其实就是不完整数据的参数估计,为什么不完整呢,因为现在我们只能观察到正面反面,而观察不到是哪个硬币了。我们能观察到的参数叫做可观察变量,我们观察不到的就叫隐含变量。那么到底怎么解决这个问题呢?
这里写图片描述

  1. 我们不知道 θA θB 没关系,我们一开始就随便猜, θ(0)A=0.6 θ(0)B=0.5
  2. 根据这个猜测出的初始值和观测值,我们去估计每次选中A和B的概率。例如第一次投掷5个正面和5个反面,那么如果这个硬币是A,那么投掷出这个结果的概率是 C510θ(0)A5(1θ(0)A)5=2520.077760.01024=0.2007 ,如果这个硬币是B,那么投掷出这个结果的概率是 C510θ(0)B5(1θ(0)B)5=2520.031250.03125=0.2461 。所以这枚硬币是A的概率是 0.2007/(0.2007+0.2461)=0.4490.45 ,我们记为 Q(A) ,而这枚硬币是B的概率是 10.45=0.55 ,我们记为 Q(B) ,根据我们算出来的 Q(A) Q(B) ,我们来算投掷硬币的期望,即 Q(A)×5=0.45×5=0.2250.22 ,如上图中的表格所示。在得到了所有的期望之后,我们再根据这些期望值,重新推导出A投掷出正面和反面的概率,即 21.3/(21.3+8.4) 得出新一轮的 θA ,同理得出新一轮的 θB 。之后再根据得出的新一轮的 θA θB 再去估计硬币是A或者B的概率,如此重复,直到收敛。这里,根据 θA θB 去估计 Q(A) Q(B) 就是E-step,而根据 Q(A) Q(B) 重新去估计 θA θB 就是M-step,重复E-step,M-step直到收敛就是EM算法的思想。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值