EM(Expectation Maximization)算法原理

本文通过一个硬币抛掷实验的例子,介绍了如何使用EM算法来估计不完整数据集中的参数。首先给出了一个简单的情况,随后引入未知硬币的问题,并详细解释了如何通过EM算法的E-step和M-step迭代求解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个简单的例子

在讲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算法的思想。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值