EM算法(期望最大算法、Expectation Maximization Algorithm)

在这里插入图片描述

EM算法(期望最大算法、Expectation Maximization Algorithm)

引言

EM算法,全称为期望最大(Expectation Maximization)算法,是一种从不完全数据或有数据丢失的数据集(存在隐含变量)中求解概率模型参数的最大似然估计方法。
我们采用Nature Biotech中EM tutorial中掷硬币的例子来对EM算法进行一个具体化的解释。

我们假设有两枚硬币A与B,他们随机抛掷的结果如图,当我们知道了每次抛的是A还是B就可以直接进行估计。
在这里插入图片描述

那么根据图中的计算,我们可以得到,两枚硬币抛出正面的概率分别为 θ ^ A = 0.80 \hat \theta_A = 0.80 θ^A=0.80, θ ^ B = 0.45 \hat \theta_B = 0.45 θ^B=0.45
但如果此时不知道抛掷的硬币是A还是B,也就是隐藏了图中表格里的Coin ACoin B,将所有结果存到一列表格中。此时相当于添加了隐变量。只能观测到5轮循环,每轮循环10次,共计50次投币。这个时候就无法直接估计A和B的正面概率,因为不知道哪一轮循环是哪个硬币投掷的。最后,图中的表格就变为下面的形式:

Coin Statistics
Unknown 5H,5T
Unknown 9H,1T
Unknown 8H,2T
Unknown 4H,6T
Unknown 7H,3T

此时我们的目标没有变,仍旧是估计A和B正面的概率。虽然此时我们失去了A和B的标号,但是我们多了一个硬币种类的隐变量,设为Z,Z是一个5维的向量,可以表示为:
Z = ( z 1 , z 2 , z 3 , z 4 , z 5 ) Z=(z_1,z_2,z_3,z_4,z_5) Z=(z1,z2,z3,z4,z5),代表每一轮所使用的硬币。但是,对于Z并不知晓,就无法去估计 θ A \theta_A θA θ B \theta_B θB,那么我们就必须先得出Z,然后才能进一步估计P(A)和P(B),要得出Z又必须先知道 θ A \theta_A θA θ B \theta_B θB,然后采用最大似然去预测,那么就会陷入一个死循环。

为了解决上述问题,我们可以先随机初始化 θ A \theta_A θA θ B \theta_B θB,然后去估计Z,基于估计出来的Z按照最大似然去估计新的 θ A \theta_A θA θ B \theta_B θB,直至最后收敛,这就是EM算法的思想,下图给出了E-step和M-step。
在这里插入图片描述

下面计算引用【机器学习】EM——期望最大(非常详细)

随机初始化 θ A = 0.6 \theta_A = 0.6 θA=0.6 θ B = 0.5 \theta_B = 0.5 θB=0.5,那么第一轮循环中,如果Unknown的硬币是A,得出5H5T的概率就是 0. 6 5 ∗ 0. 4 5 0.6^5*0.4^5 0.650.45;如果是B,概率为 0. 5 5 ∗ 0. 5 5 0.5^5*0.5^5 0.550.55。那么就有,Unknown为硬币A和B的概率分别是
P A = 0. 6 5 ∗ 0. 4 5 0. 6 5 ∗ 0. 4 5 + 0. 5 5 ∗ 0. 5 5 = 0.45 P B = 0. 5 5 ∗ 0. 5 5 0. 6 5 ∗ 0. 4 5 + 0. 5 5 ∗ 0. 5 5 = 0.55 P_A = \frac{0.6^5*0.4^5}{0.6^5*0.4^5+0.5^5*0.5^5} = 0.45\\ P_B = \frac{0.5^5*0.5^5}{0.6^5*0.4^5+0.5^5*0.5^5 } = 0.55 PA=0.650.45+0.550.550.650.45=0.45PB=0.650.45+0.550.550.550.55=0.55

5个轮次我们都依照上面进行计算,可以得到如下情况

Coin A Coin B
0.45 0.55
0.80 0.20
0.73 0.27
0.35 0.65
0.65 0.35

这一步对应了E-step

结合硬币A的概率和上面的投掷结果情况,我们可以利用期望求出硬币A和硬币B的贡献。

Coin Statistics
Unknown 5H,5T
Unknown 9H,1T
Unknown 8H,2T
Unknown 4H,6T
Unknown 7H,3T
Coin A Coin B
0.45 0.55
0.80 0.20
0.73 0.27
0.35 0.65
0.65 0.35

以第一轮硬币A为例,计算方式为:
H : 0.45 ∗ 5 = 2.25 T : 0.45 ∗ 5 = 2.25 H:0.45*5 = 2.25 T:0.45*5 = 2.25 H

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

czijin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值