机器学习:EM算法

一、初识EM算法

EM算法也称期望最大化(Expectation-Maximum,简称EM)算法。

它是一个基础算法,是很多机器学习领域算法的基础,比如隐式马尔科夫算法(HMM)等等。

EM算法是一种迭代优化策略,由于它的计算方法中每一次迭代都分两步,

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

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

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

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

EM算法计算流程:
在这里插入图片描述

二、EM算法介绍

1 极大似然估计

1.1 问题描述

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

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

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

问题:我们知道样本所服从的概率分布模型和一些样本,我们需要求解该模型的参数.
在这里插入图片描述
我们已知的条件有两个:

  • 样本服从的分布模型
  • 随机抽取的样本。

我们需要求解模型的参数。

根据已知条件,通过极大似然估计,求出未知参数。

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

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

在这里插入图片描述

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

在这里插入图片描述

2 EM算法实例描述

我们目前有100个男生和100个女生的身高,但是我们不知道这200个数据中哪个是男生的身高,哪个是女生的身高, 即抽取得到的每个样本都不知道是从哪个分布中抽取的。

这个时候,对于每个样本,就有两个未知量需要估计:

(1)这个身高数据是来自于男生数据集合还是来自于女生?

(2)男生、女生身高数据集的正态分布的参数分别是多少?

具体问题如下图:
在这里插入图片描述
对于具体的身高问题使用EM算法求解步骤如下:
在这里插入图片描述
(1)初始化参数: 先初始化男生身高的正态分布的参数:如均值=1.65,方差=0.15;

(2)计算分布: 计算每一个人更可能属于男生分布或者女生分布;

(3)重新估计参数: 通过分为男生的n个人来重新估计男生身高分布的参数(最大似然估计),女生分布也按照相同的方式估计出来,更新分布。

(4)这时候两个分布的概率也变了,然后重复步骤(1)至(3),直到参数不发生变化为止。

3 EM算法流程

在这里插入图片描述

三、EM算法实例

1 一个超级简单的案例

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

硬币结果统计
1正正反正反3正-2反
2反反正正反2正-3反
1正反反反反1正-4反
2正反反正正3正-2反
1反正正反反2正-3反

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

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

P2= (2+3)/10 = 0.5

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

2 加入隐变量z后的求解

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

硬币结果统计
Unknown正正反正反3正-2反
Unknown反反正正反2正-3反
Unknown正反反反反1正-4反
Unknown正反反正正3正-2反
Unknown反正正反反2正-3反

好了,现在我们的目标没变,还是估计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一样,请问这说明了什么?(此处思考1分钟)

这说明我们初始化的P1和P2是一个相当靠谱的估计!

就是说,我们初始化的P1和P2,按照最大似然概率就可以估计出z,然后基于z,按照最大似然概率可以反过来估计出P1和P2,当与我们初始化的P1和P2一样时,说明是P1和P2很有可能就是真实的值。这里面包含了两个交互的最大似然估计。

如果新估计出来的P1和P2和我们初始化的值差别很大,怎么办呢?就是继续用新的P1和P2迭代,直至收敛。

这就是下面的EM初级版。

2.1 EM初级版

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 EM进阶版

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3 小结

EM算法的实现思路:

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

上一篇:机器学习:支持向量机
下一篇:机器学习:HMM模型

  • 5
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
EM算法(Expectation-Maximization algorithm)是一种常用的统计学习算法,用于估计含有隐变量的概率模型参数。它由两个步骤组成,通常称为E步和M步。 在E步中,通过对隐变量的条件概率分布进行估计,计算模型的期望对数似然函数。这个步骤主要利用已知的观测数据和当前参数估计,来估计不可观测的隐变量对观测数据的影响程度。 在M步中,通过最大化在E步中计算得到的期望对数似然值关于参数的函数,更新模型的参数估计值。这个步骤主要是通过迭代来提高参数估计的准确性,使模型更加拟合于观测数据。 EM算法的步骤经过多次迭代后,当算法收敛时,得到的参数估计值能够使模型的最大似然估计近似地接近真实参数。因为EM算法在每次迭代时都在增大对数似然函数的期望值,所以可以保证EM算法的收敛。 在MATLAB中,可以通过编写相应的代码来实现EM算法。一般的步骤是先根据已知的观测数据和初始参数估计值进行E步的计算,得到期望值。然后再利用这个期望值进行M步的计算,更新参数估计值。将这两个步骤迭代进行,直到算法收敛为止。MATLAB提供了丰富的数学和统计函数以及编程工具,可以方便地进行矩阵运算和迭代计算,从而实现EM算法。 总之,EM算法是一种基于期望和最大化的统计学习算法,用于估计具有隐变量的概率模型参数。在MATLAB中可以通过编写相应的代码来实现这个算法,从而方便地应用于实际问题的求解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

GeniusAng丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值