期望最大化(EM)算法的案列讲解

EM算法是一种用于处理含有隐变量的概率模型参数估计的方法。通过期望(E)和最大化(M)两个步骤,逐步逼近真实参数值。在极大似然估计中,算法首先根据现有数据估计参数,然后利用这些参数预测隐变量,接着更新参数,不断迭代直到收敛。通过实例展示了在有无隐变量时如何应用EM算法,揭示了其在处理数据缺失问题中的强大能力。
摘要由CSDN通过智能技术生成

目录

 

1.什么是EM呢?

2 EM算法的具体介绍

2.1 极大似然估计

2.1.1 问题描述

2.2 用数学知识解决现实问题

2.3 最大似然函数估计值的求解步骤

3 算法实例

3.1 一个超简单的案列

3.2 加入隐变量Z后的求解

3.2.1 EM初级版

3.2.2 EM进阶版


1.什么是EM呢?

EM算法也称期望最⼤化(Expectation-Maximum,简称EM) 算法,它是⼀个基础算法, 是很多机器学习领域算法的基础, 比如隐式⻢尔科夫算法(HMM) 等等。
它是⼀个基础算法, 是很多机器学习领域算法的基础, ⽐如隐式⻢尔科夫算法(HMM) 等等。

  • 其中⼀个为期望步(E步) 
  • 另⼀个为极大步(M步)

所以算法被称为EM算法(Expectation-Maximization Algorithm)。
 

EM算法受到缺失思想影响, 最初是为了解决数据缺失情况下的参数估计问题, 其算法基础和收敛有效性等问题在Dempster、 Laird和Rubin三⼈于1977年所做的⽂章《Maximum likelihood from incomplete data via the EM algorithm》中给出了详细的阐述。 其基本思想是:

  • ⾸先根据已经给出的观测数据, 估计出模型参数的值;
  • 然后再依据上⼀步估计出的参数值估计缺失数据的值, 再根据估计出的缺失数据加上之前⼰经观测到的数据重新再对参数值进行估计
  • 然后反复迭代, 直⾄最后收敛, 迭代结束。

EM算法计算流程:

2 EM算法的具体介绍

2.1 极大似然估计

2.1.1 问题描述

假如我们需要调查学校的男生和女生的身高分布,我们抽取100个男生和100个女生,将他们按照性别划分为两组。

然后统计抽样得到100个男生的身高数据和100个女生的身高数据

如果我们知道他们的身高服从正态分布,但是这个分布的均值和方差是不知道,这两个参数就是我们需要估计的。

问题:我们知道样本服从的概率分布模式和一些样本,我们需要求解该模型的参数

已知两个条件:1.样本服从的分布模型 2.随机抽取的样本。   需要解决的问题:求解模型的参数

总的来说:极大似然估计就是用来估计模型参数的统计学习方法

2.2 用数学知识解决现实问题

  • 概率密度是:  抽到第i个男生身高的概率密度
  • 由于100个样本之间独立同分布,所以同时抽到这个100个男生的概率是他们各自概率的乘积,也就是样本集X中的各个样本的联合概率,用下式表示:

    

  • 这个概率反映了在概率密度函数的参数是θ时, 得到X这组样本的概率
  • 我们需要找到⼀个参数θ, 使得抽到X这组样本的概率最⼤, 也就是说需要其对应的似然函数L(θ)最⼤
    满⾜条件的θ叫做θ的最⼤似然估计值, 记为:       

2.3 最大似然函数估计值的求解步骤

1.首先,写出似然函数:

2.其次,对似然函数取对数

3.然后, 对上式求导, 令导数为0, 得到似然⽅程。
4.最后, 解似然⽅程, 得到的参数值即为所求。
多数情况下, 我们是根据已知条件来推算结果, ⽽极⼤似然估计是已知结果, 寻求使该结果出现的可能性最⼤的条件,以此作为估计值。
 

3 算法实例

3.1 一个超简单的案列

假设现在有两枚硬币1和2, ,随机抛掷后正⾯朝上概率分别为P1, P2。 为了估计这两个概率, 做实验, 每次取⼀枚硬币, 连掷5下, 记录下结果, 如下:

可以很容易地估计出P1和P2, 如下:

到这里, ⼀切似乎很美好, 下⾯我们加大难度。


3.2 加入隐变量Z后的求解

还是上⾯的问题, 现在我们抹去每轮投掷时使⽤的硬币标记, 如下:

好了, 现在我们的⽬标没变, 还是估计P1和P2, 要怎么做呢?
显然, 此时我们多了⼀个隐变量z, 可以把它认为是⼀个5维的向量(z1,z2,z3,z4,z5), 代表每次投掷时所使⽤的硬币,⽐如z1, 就代表第⼀轮投掷时使⽤的硬币是1还是2。 但是, 这个变量z不知道, 就无法去估计P1和P2, 所以, 我们必须先估计出z, 然后才能进⼀步估计P1和P2。

  • 但要估计z, 我们⼜得知道P1和P2, 这样我们才能⽤最⼤似然概率法则去估计z, 这不是鸡⽣蛋和蛋⽣鸡的问题吗, 如何破?

           答案就是先随机初始化⼀个P1和P2, ⽤它来估计z, 然后基于z, 还是按照最⼤似然概率法则去估计新的P1和P2, 如果
    新的P1和P2和我们初始化的P1和P2⼀样, 请问这说明了什么? 
            这说明我们初始化的P1和P2是⼀个相当靠谱的估计!

             就是说, 我们初始化的P1和P2, 按照最⼤似然概率就可以估计出z, 然后基于z, 按照最⼤似然概率可以反过来估计出
      P1和P2, 当与我们初始化的P1和P2⼀样时, 说明是P1和P2很有可能就是真实的值。 这⾥⾯包含了两个交互的最⼤似然估计。
      如果新估计出来的P1和P2和我们初始化的值差别很⼤, 怎么办呢? 就是继续⽤新的P1和P2迭代, 直⾄收敛。这就是下⾯的EM初级版。

3.2.1 EM初级版

我们不妨这样, 先随便给P1和P2赋⼀个值, 比如:P1 = 0.2、P2 = 0.7
然后, 我们看看第⼀轮抛掷最可能是哪个硬币

  • 如果是硬币1, 得出3正2反的概率为 0.2 ∗ 0.2 ∗ 0.2 ∗ 0.8 ∗ 0.8 = 0.00512
  • 如果是硬币2, 得出3正2反的概率为0.7 ∗ 0.7 ∗ 0.7 ∗ 0.3 ∗ 0.3 = 0.03087

然后依次求出其他4轮中的相应概率。 做成表格如下:

按照最⼤似然法则:

  • 第1轮中最有可能的是硬币2
  • 第2轮中最有可能的是硬币1
  • 第3轮中最有可能的是硬币1
  • 第4轮中最有可能的是硬币2
  • 第5轮中最有可能的是硬币1
     

我们就把上⾯的值作为z的估计值。 然后按照最⼤似然概率法则来估计新的P1和P2。
P1 = (2+1+2) /15 = 0.33
P2=(3+3) /10 = 0.6
设想我们是全知的神, 知道每轮抛掷时的硬币就是如标示的那样, 那么, P1和P2的最⼤似然估计就是
0.4和0.5(下⽂中将这两个值称为P1和P2的真实值) 。 那么对⽐下我们初始化的P1和P2和新估计出的P1和P2:

看到没? 我们估计的P1和P2相⽐于它们的初始值, 更接近它们的真实值了!
可以期待, 我们继续按照上⾯的思路, ⽤估计出的P1和P2再来估计z, 再⽤z来估计新的P1和P2, 反复迭代下去, 就可以最终得到P1 = 0.4, P2=0.5, 此时⽆论怎样迭代, P1和P2的值都会保持0.4和0.5不变, 于是乎, 我们就找到了P1和P2的最⼤似然估计。
这⾥有两个问题:
1、 新估计出的P1和P2⼀定会更接近真实的P1和P2?
答案是: 没错, ⼀定会更接近真实的P1和P2, 数学可以证明, 但这超出了本⽂的主题, 请参阅其他书籍或⽂章。
2、 迭代⼀定会收敛到真实的P1和P2吗?
答案是: 不⼀定, 取决于P1和P2的初始化值, 上⾯我们之所以能收敛到P1和P2, 是因为我们幸运地找到了好的初始化值。
 

3.2.2 EM进阶版

下面, 我们思考下, 上⾯的⽅法还有没有改进的余地?
我们是⽤最⼤似然概率法则估计出的z值, 然后再⽤z值按照最⼤似然概率法则估计新的P1和P2。 也就是说, 我们使⽤了⼀个最可能的z值, ⽽不是所有可能的z值。
如果考虑所有可能的z值, 对每⼀个z值都估计出⼀个新的P1和P2, 将每⼀个z值概率大小作为权重, 将所有新的P1和P2分别加权相加, 这样的P1和P2应该会更好⼀些。
所有的z值有多少个呢?

显然, 有2^5 = 32种, 需要我们进⾏32次估值? ?
不需要, 我们可以⽤期望来简化运算。

利⽤上⾯这个表, 我们可以算出每轮抛掷中使⽤硬币1或者使⽤硬币2的概率。
⽐如第1轮, 使⽤硬币1的概率是:
0.00512/(0.00512 + 0.03087) = 0.14
使⽤硬币2的概率是1-0.14=0.86
依次可以算出其他4轮的概率, 如下:

上表中的右两列表示期望值。 看第⼀⾏, 0.86表示, 从期望的⻆度看, 这轮抛掷使⽤硬币2的概率是0.86。 相⽐于前⾯
的⽅法, 我们按照最⼤似然概率, 直接将第1轮估计为⽤的硬币2, 此时的我们更加谨慎, 我们只说, 有0.14的概率是硬
币1, 有0.86的概率是硬币2, 不再是⾮此即彼。
这样我们在估计P1或者P2时, 就可以⽤上全部的数据, ⽽不是部分的
数据, 显然这样会更好⼀些。
这⼀步, 我们实际上是估计出了z的概率分布, 这步被称作E步。
结合下表:

我们按照期望最⼤似然概率的法则来估计新的P1和P2:
以P1估计为例, 第1轮的3正2反相当于
0.14*3=0.42正
0.14*2=0.28反
依次算出其他四轮, 列表如下:

P1=4.22/(4.22+7.98)=0.35
可以看到, 改变了z值的估计⽅法后, 新估计出的P1要更加接近0.4。 原因就是我们使⽤了所有抛掷的数据, ⽽不是之前只使⽤了部分的数据。
这步中, 我们根据E步中求出的z的概率分布, 依据最⼤似然概率法则去估计P1和P2, 被称作M步。
 

参考:黑马程序员课程

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值