一文让你完全入门EM算法

【大道至简】机器学习算法之EM算法(Expectation Maximization Algorithm)详解(附代码)---通俗理解EM算法。 通过上面的分析,我们终于可以总结一下EM算法啦!总的来说,EM算法分为E步和M步:(1)给参数θ即第0步赋初值;(2)如果是第一轮迭代,那么令θ=来计算Q函数;如果是>1轮迭代,则θ的值由上一次M步计算出的θ值决定。由于E步时θ已知,所以只需要计算Q,公式如下:也就是给定θ和已知的观测数据x的条件下,求一下隐变量z的条件概率。(3)根据E步计算出来的Q,按如下公式计算θ:也就是固定Q(z也固定)和已知的观测数据x,算一下θ。(4)重复(3)和(4)直至收敛。 阅读详情

EM(Expectation Maximum,期望最大化)是一种迭代算法,用于对含有隐变量概率参数模型的极大似然估计或极大后验估计。模型参数的每一次迭代,含有隐变量概率参数模型的似然函数都会增加,当似然函数不再增加或增加的值小于设置的阈值时,迭代结束。

 

EM算法在机器学习和计算机视觉的数据聚类领域有广泛的应用,只要是涉及到后验概率的应用,我们都可以考虑用EM算法去解决问题。EM算法更像是一种数值分析方法,正确理解了EM算法,会增强你机器学习的自学能力,也能让你对机器学习算法有新的认识,本文详细总结了EM算法原理。


目录

1. 只含有观测变量的模型估计

2. 含有观测变量和未观测变量的模型参数估计

3. EM算法流程

4. 抛硬币问题举例

5. 高斯混合模型的参数估计

6. 聚类蕴含的EM算法思想

7. 小结


1. 只含有观测变量的模型估计

我们首先考虑比较简单的情况,即模型只含有观测变量不含有隐藏变量,如何估计模型的参数?我们用逻辑斯蒂回归模型(logistic regression model)来解释这一过程。

假设数据集有d维的特征向量X和相应的目标向量Y,其中640?wx_fmt=png,640?wx_fmt=png。下图表示逻辑斯蒂回归模型:

640?wx_fmt=png


由之前的文章介绍,逻辑斯蒂回归模型的目标预测概率是S型函数计算得到,定义为:

640?wx_fmt=png

若640?wx_fmt=png,则目标预测变量为1;反之,目标预测变量为0。其中w是待估计的模型参数向量。


机器学习模型的核心问题是如何通过观测变量来构建模型参数w,最大似然方法是使观测数据的概率最大化,下面介绍用最大似然方法(Maximum Likelihood Approach)求解模型参数w。


假设数据集640?wx_fmt=png,样本数据640?wx_fmt=png,模型参数640?wx_fmt=png。

观测数据的对数似然函数可写为:

640?wx_fmt=png

由对数性质可知,上式等价于:

640?wx_fmt=png

式(1)代入式(2),得:

640?wx_fmt=png

其中:

640?wx_fmt=png

由于(3)式是各个样本的和且模型参数间并无耦合,因此用类似梯度上升的迭代优化算法去求解模型参数w。

因为:

640?wx_fmt=png

640?wx_fmt=png

由式(4)(5)(6)可得:

640?wx_fmt=png

因此,模型参数w的更新方程为:

640?wx_fmt=png

其中η是学习率。

根据梯度更新方程(7)迭代参数w,似然函数L(w)逐渐增加,当似然函数收敛时,模型参数w不再更新,这种参数估计方法称为最大似然估计。


2.含有观测变量和因变量的模型参数估计

上节介绍当模型只含有观测变量时,我们用极大似然估计方法计算模型参数w。但是当模型含有隐变量或潜在变量(latent)时,是否可以用极大似然估计方法去估计模型参数,下面我们讨论这一问题:


假设V是观测变量,Z是隐变量,640?wx_fmt=png是模型参数,我们考虑用极大似然估计方法去计算模型参数:

640?wx_fmt=png

由于隐变量在log内部求和,造成不同参数间相互耦合,因此用极大似然方法估计模型参数非常难。(8)式不能估计模型参数的主要原因是隐变量,若隐变量Z已知,完全数据的似然函数为640?wx_fmt=png,为了书写方便,观测变量V,Y统一用V表示,即640?wx_fmt=png。


那么问题来了,如何通过已观测变量估计隐变量Z的值?这个时候我们想到了后验概率:640?wx_fmt=png


EM算法最大化完全数据在隐变量分布的对数似然函数期望,得到模型参数640?wx_fmt=png,即:

640?wx_fmt=png


现在我们总结EM算法的流程:

1)初始化模型参数640?wx_fmt=png;

2)E步估计隐变量的后验概率分布:

640?wx_fmt=png

3)M步估计模型参数640?wx_fmt=png:

640?wx_fmt=png

4)当模型参数640?wx_fmt=png或对数似然函数收敛时,迭代结束;反之640?wx_fmt=png,返回第(2)步,继续迭代。


3.EM算法的更深层分析

上节我们介绍了EM算法的模型参数估计过程,相信大家会有个疑问:为什么最大化下式来构建模型参数。


640?wx_fmt=png

下面我给大家解释这一算法的推导过程以及其中蕴含的含义:

假设隐藏变量的理论分布为640?wx_fmt=png,观测数据的对数似然函数可以分解为下式:


640?wx_fmt=png

由贝叶斯理论可知:

640?wx_fmt=png

(9)式得:

640?wx_fmt=png

分子分母除q(Z),得:


640?wx_fmt=png


(10)式第二项表示相对熵,含义为隐变量后验概率分布与理论概率分布的差异,相对熵的一个性质是:

640?wx_fmt=png

根据(10)式我们推断:


640?wx_fmt=png

因此观测数据的对数似然函数的下界为640?wx_fmt=png,如果我们能够极大化这个下界,那么同时也极大化了可观测数据的对数似然函数。


当相对熵等于0时,即:

640?wx_fmt=png

由上式得到隐藏变量的后验概率分布与理论分布相等,即:


640?wx_fmt=png

进而(11)式等号成立,即:


640?wx_fmt=png

640?wx_fmt=png取得上界,现在我们需要最大化640?wx_fmt=png的上界,即:


640?wx_fmt=png

当相对熵等于0时,式(12)代入式(13)得到640?wx_fmt=png的上界为:


640?wx_fmt=png

式(15)的第二项对应隐变量的熵,可看成是常数,因此最大化(15)式等价于最大化640?wx_fmt=png,其中:


640?wx_fmt=png


最大化(16)式对应上节介绍EM算法的M步。


是不是对EM算法有了新的认识,本节重新整理算法EM的流程:

1)初始化模型参数为640?wx_fmt=png;

2)当等式(12)成立时,640?wx_fmt=png取得上界,最大化640?wx_fmt=png等价于最大化下式:


640?wx_fmt=png

3)最大化640?wx_fmt=png,返回参数640?wx_fmt=png;

4)当640?wx_fmt=png收敛时,迭代结束;否则640?wx_fmt=png,算法返回到第(2)步继续迭代;


为了大家清晰理解这一算法流程,下面用图形表示EM算法的含义。


E步:模型参数是640?wx_fmt=png时,由(13)式可知640?wx_fmt=png,用黑色实心点标记;

M步:最大化640?wx_fmt=png,返回参数640?wx_fmt=png,用红色实心点标记;

令640?wx_fmt=png,重复E步和M步,当640?wx_fmt=png收敛时,迭代结束。

640?wx_fmt=png

4.抛硬币问题举例

我们有两种硬币A和B,选择硬币A和硬币B的概率分别为π和(1-π),硬币A和硬币B正面向上的概率分别为p和q,假设观测变量为640?wx_fmt=png,1,0表示正面和反面,i表示硬币抛掷次数;隐变量640?wx_fmt=png,1,0表示选择硬币A和硬币B进行抛掷。

问题:硬币共抛掷n次,观测变量已知的情况下求模型参数640?wx_fmt=png的更新表达式。

根据EM算法,完全数据的对数似然函数的期望:

640?wx_fmt=png

其中640?wx_fmt=png表示观测数据640?wx_fmt=png来自掷硬币A的概率,用640?wx_fmt=png表示:

640?wx_fmt=png


最大化640?wx_fmt=png,得到如下更新表达式:


640?wx_fmt=png


现在我们知道了模型参数640?wx_fmt=png的更新方程,假设共抛掷硬币10次,观测结果如下:1,1,0,1,0,0,1,0,1,1。

初始化模型参数为:

640?wx_fmt=png

由式(18)得:

640?wx_fmt=png

利用模型参数更新得:

640?wx_fmt=png

由式(18),得:

640?wx_fmt=png

模型参数继续更新:

640?wx_fmt=png

因此,640?wx_fmt=png收敛时,最终的模型参数为:

640?wx_fmt=png

640?wx_fmt=png表示选择硬币A和硬币B的概率是一样的,如果模型参数的初始值不同,得到的最终模型参数也可能不同,模型参数的初始化和先验经验有关。


5.高斯混合模型的参数估计

一维变量的高斯分布:

640?wx_fmt=png

其中u和640?wx_fmt=png分别表示均值和标准差。

n维变量的高斯分布:

640?wx_fmt=png

其中u是n维均值向量,640?wx_fmt=png是n×n的协方差矩阵。

n维变量的混合高斯分布:

640?wx_fmt=png

该分布共由k个混合成分组成,每个混合成分对应一个高斯分布,其中640?wx_fmt=png与640?wx_fmt=png是第k个高斯混合成分的均值和协方差。

640?wx_fmt=png是归一化混合系数,含义为选择第k个高斯混合成分的概率,满足以下条件:

640?wx_fmt=png

下图为k=3的高斯混合成分的概率分布图(红色):

640?wx_fmt=png

假设由高斯混合分布生成的观测数据640?wx_fmt=png,其对数似然函数:


640?wx_fmt=png

我们用EM算法估计模型参数,其中隐变量对应模型的高斯混合成分,即对于给定的数据x,计算该数据属于第k个高斯混合分布生成的后验概率,记为640?wx_fmt=png。


根据贝叶斯定律:

640?wx_fmt=png

最大化式(19),令

640?wx_fmt=png

由式(20)(21)(22)(23)可得模型参数:

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

下面小结EM算法构建高斯混合模型的流程:

1)初始化高斯混合模型的均值640?wx_fmt=png,协方差640?wx_fmt=png和混合系数640?wx_fmt=png,计算完全数据的对数似然值(式(19));

2)E步:使用当前的参数值,通过下式计算均值:

640?wx_fmt=png

640?wx_fmt=png表示观测数据x属于第k个高斯混合成分的后验概率;

3)M步:最大化对数似然函数,得到式(24)(25)(26)的模型更新参数;

4)根据更新的参数值,重新计算完全数据的对数似然函数:

640?wx_fmt=png

若收敛,则得到最终的模型参数值;反之,回到算法第(2)步继续迭代。


6.聚类蕴含的EM算法思想

我们可以把聚类理解为:计算观测数据x属于不同簇类的后验概率,记为640?wx_fmt=png,其中j是簇类个数(j=1,2,...,K),观测数据x所属的簇标记640?wx_fmt=png由如下确定:

640?wx_fmt=png


我们可以用EM算法计算每个样本由不同高斯混合成分生成的后验概率,步骤可参考上一节。


【例】 如下的观测数据,假设簇类个数K=2,初始化每个高斯混合参数得到640?wx_fmt=png,根据式(27)得到聚类结果:

640?wx_fmt=png

根据上一节介绍的EM算法步骤,迭代1次后得到640?wx_fmt=png,根据式(27)得到聚类结果:

640?wx_fmt=png

迭代5次后得到640?wx_fmt=png,根据式(27)得到聚类结果:

640?wx_fmt=png

迭代20次后的640?wx_fmt=png,根据式(27)得到聚类结果:

640?wx_fmt=png

k均值聚类是高斯混合聚类的特例,k均值假设各个维是相互独立的,其算法过程也可用EM思想去理解:

1)初始化簇类中心;

2)E步:通过簇类中心计算每个样本所属簇类的后验概率640?wx_fmt=png;

3)M步:最大化当前观测数据的对数似然函数,更新簇类中心

4)当观测数据的对数似然函数不再增加时,迭代结束;反之,返回(2)步继续迭代;


7.小结

EM算法在各领域应用极广,运用了后验概率,极大似然方法和迭代思想构建最优模型参数,后续文章会介绍EM算法在马尔科夫模型的应用,希望通过这篇文章能让读者对EM算法不再陌生。


参考

https://towardsdatascience.com

推荐阅读

k-means聚类算法原理总结

640?wx_fmt=other

超详细EM算法举例及推导 先学习一下极大似然 1 EM算法理解 1.1 问题描述 上面我们先假设学校所有学生的身高服从正态分布 N(μ,σ2)N(\mu,\sigma^2)N(μ,σ2) 。实际情况并不是这样的,男生和女生分别服从两种不同的正态分布,即男生 ∈N(μ1,σ12)\in N(\mu_1,\sigma_1^2)∈N(μ1​,σ12​) ,女生 ∈N(μ2,σ22)\in N(\mu_2,\sigma_2^2)∈N(μ2​,σ22​) ,(注意:EM算法和极大似然估计的前提是一样的,都要假设数据总体的分布,如果不知道数据分 阅读详情

相关推荐

EM算法的学习笔记

EM算法说起来很简单,给定一个要估计的参数的初值,计算隐含变量分布,再根据隐含变量的分布更新要估计的参数值,之后在这两个步骤之间进行迭代。但是其中的数学原理,GMM的推导等等其实并不简单,难想更难算。这篇博客主要基于翻译我看过的好材料,对其中做出些许的解释。以下便从最简单的例子说起投硬币的例子 出自http://www.cmi.ac.in/~madhavan/courses/datamining

littleorange6的博客 5082

EM算法详解+通俗例子理解

文章目录1、总述2、定义3、感性例子:例子简介:加入隐变量zEM初级版EM进阶版例子总结4、Jensen不等式(前置知识)5、EM思想6、EM推导7、应用8、参考文献 1、总述 期望最大算法是一种从不完全数据或有数据丢失的数据集(存在隐含变量)中求解概率模型参数的最大似然估计方法。EM算法是机器学习十大算法之一,或许确实是因它在实际中的效果很好吧。下面先来说说它的定义。 gif演示 2、定义 EM...

呆呆象呆呆的博客 4万+

数据挖掘的EM算法

1.  什么是EM算法? EM算法是机器学习中一个很重要的算法,即期望最大化算法,主要包括以下两个步骤: E步骤:estimate the expected values M步骤:re-estimate parameters 这个算法的主要作用在于对参数的估计上。虽然EM算法也可以进行数据聚类,并且基于混合高斯分布进行数据拟合,但是由于EM算法进行迭代速度很慢,比kmeans性能差很多

litong09282039的博客 1978

EM算法推导及案例演示

因为这一组样本出现的概率比较大,如果这一组观测值出现的概率比较小我们很可能就观测不到这组样本。基于以上理论,我们先将这组样本出现的概率求出来,前面提到这组样本出现的概率比较大我们才能观测到这组样本,那么多大的概率才算是概率比较大呢?我们没有概念,但是我们可以求出现这组样本的最大概率,这个最大概率的值是多少我们并不关心,在求概率最大的过程中就可以将概率分布中的参数θ求出来。总结:最大似然估计就是令观测到的样本出现的概率最大,在求概率最大值的过程中对参数θ求导,令导数为零,进而求出参数θ。

醉糊涂仙的博客 2249

【Python程序开发】湖南省职业院校技能大赛python程序开发赛项样题二

【Python程序开发】湖南省职业院校技能大赛python程序开发赛项样题二

况老师话竞赛&blog 2206

[AHK] 自动化获取通达信股票代码:从消息钩子到数据提取

本文详细介绍了如何使用AHK(AutoHotkey)通过Windows消息钩子技术自动化获取通达信股票代码,实现高效数据提取和交易自动化。文章涵盖消息机制原理、AHK脚本开发、性能优化及安全注意事项,为股票交易者提供了一套完整的解决方案。

weixin_42614269的博客 618

EM算法:数学推导+实例演示

EM算法:数学推导+实例演示

Axlsss的博客 2330

一篇教你杰理63系列蓝牙双设备主从连接传输数据过程及配置

首先打开632sdk的app_config.h文件,将宏CONFIG_APP_SPP_LE写0,将宏CONFIG_APP_MULTI写1,对应的CONFIG_BT_GATT_CLIENT_NUM写1代表我只连接一个主机设备。属性都可以修改为自己想要的属性,然后关掉文件,双击gatt_inc_generator.exe文件运行,就会自动弹出生成/更新后的gatt_profile_cfg.h文件,然后里面就是我们代码里面所需要的配置,都是十六进制表示,找到我们刚刚添加的服务属性配置,复制到代码里面去。

xiaolizaixian的博客 1379

EM算法

1.EM算法,称为期望-最大化,它用于求解MLE的一种迭代算法2.它的主要思想是把一个难于处理的似然函数最大化问题用一个易于最大化的序列取代,而其极限是原始问题的解3.EM算法分两步走:...

咔咔响 1万+

《LabVIEW ZYNQ实战指南》第6章>>案例解析:基于USB WiFi模块的ZYNQ无线通信部署与Linux RT开发

本文详细解析了如何为ZYNQ开发板部署USB WiFi模块,实现无线通信。通过LabVIEW Linux RT环境,利用封装好的驱动VI,开发者可轻松配置ZYNQ连接无线网络,摆脱网线束缚,实现程序无线部署与远程调试,为工业物联网应用奠定基础。

app77的博客 756

CANoe:入门介绍

CANoe网络通信分析:CANoe用户可以在台架上或者车辆中分析ECU和整个系统的多总线通信。Trace窗口:用于列出所有总线活动,例如消息或错误帧。对于每条消息,都可以显示单独的信号值Graphics窗口:用于在时间轴上以图形方式在线显示消息和诊断请求中传输的值,例如rpm或温度值Statistics窗口:用于显示有用的网络和节点统计信息,例如节点和帧级别的总线负载、突发计数器/持续时间、帧和错误的计数器/速率、控制器状态Data窗口:用于显示预选数据,例如数字或条形图数据。

jasonj333 9755

EM算法整理及其python实现

此文转载以供以后查阅学习方便,参考原文请移步链接 http://www.hankcs.com/ml/em-algorithm-and-its-generalization.html另外,参考李航老师的《统计学习方法》和周志华老师的《机器学习》如果概率模型的变量都是观测变量(数据中可见的变量),则可以直接用极大似然估计,或者用贝叶斯估计模型参数。但是,当模型含有隐变量(数据中看不到的变量)时,就不能...

brave_stone的博客 1万+

【雷达】基于matlab合成孔径雷达干涉测量(InSAR)时序分析【含Matlab源码 9037期】

合成孔径雷达干涉测量(InSAR)时序分析 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 159

一文详尽系列之EM算法

点击上方“Datawhale”,选择“星标”公众号第一时间获取价值内容EM 算法,全称 Expectation Maximization Algorithm。期望最大算法...

Datawhale 4627

把开源 Skills 集成到 LangGraph 项目

1. 定义智能体状态(必须包含 messages,其他字段按需扩展)messages: List[HumanMessage | AIMessage | ToolMessage] # 消息流(核心)skill_output: Optional[str] # 存储 Skill 执行结果next_node: str # 控制流程跳转# 2. 定义智能体决策节点(决定是否调用 Skill)"""智能体决策逻辑:根据用户输入判断是否调用开源 Skill"""# 获取最后一条用户消息。

lpfasd123的博客 908

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【Sklearn-驯化】一文搞懂很难的EM算法以及实践

高斯混合模型(Gaussian Mixture Model, GMM)是一种概率模型,它假设数据点是从多个高斯分布中生成的。GMM在聚类分析中非常有用,特别是当数据集包含多个子群体且每个子群体具有不同的特征分布时。在贝叶斯学派,如果知道观测变量以及其分布函数,我们可以通过极大似然或者极大后验的方式去求取相关的分布函数的参数θ\thetaθ,但是当观测数据中含有未知的隐变量时,此时无法通过上述的方式直接去求取相关的分布参数,而EM算法就是为了去解决这个问题的。

志在创建优质博客、通俗易懂、助力大家提高学习效率! 1286

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

EM算法的证明

上篇文章说了一些EM算法的原理性东西以及简单的应用,在平时的学习中,确实感觉EM算法太重要了,所以本文将对EM算法的合理性作一个解释,并给出其收敛性的证明。 在上一篇文章中,我们提到了EM算法是解决含有隐变量的概率模型参数极大似然估计的方法。不过我们可能会问,为什么在求解完全数据的对数似然函数的期望时要用到隐变量Z的后验概率?为什么EM算法就一定能够保证收敛?下面我们来解决这些问题。 这里,我

陈志杰的专栏 2813

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

EM算法 --入门级详解

前段时间在机器学习课上学习了em算法,看了很多博主大大的讲解,再加上自己的理解,把对em算法的简单认识概括一下。 EM算法简单来说就是一种迭代优化策略,由于它的计算方法中每一次迭代都分两步,其中一个为求期望步(E步),另一个为求极大值步M步),所以算法被称为EM算法(Expectation Maximization Algorithm)。EM算法适用于求解那些含有隐变量的问题,也就是说你待求解的样本中含有无法观测到的记录值。要学习EM算法,我们需要先了解两个概念:极大似然估计和Jensen不等式。 .

qq_45116974的博客 3322

什么是EM算法

EM算法是机器学习中一个很重要的算法,即期望最大化算法,主要包括以下两个步骤:E步骤:estimate the expected valuesM步骤:re-estimate parameters迭代使用EM步骤,直至收敛。我觉得可以有一些比较形象的比喻说法把这个算法讲清楚。比如说食堂的大师傅炒了一份菜,要等分成两份给两个人吃,显然没有必要拿来天平一点一点的精确的去称分量,最简单的办法是

咖啡豆 1413

em算法详细例子及推导_EM算法入门教程

EM(Expectation Maximum,期望最大化)是一种迭代算法,用于对含有隐变量概率参数模型的极大似然估计或极大后验估计。模型参数的每一次迭代,含有隐变量概率参数模型的似然函数都会增加,当似然函数不再增加或增加的值小于设置的阈值时,迭代结束。EM算法在机器学习和计算机视觉的数据聚类领域有广泛的应用,只要是涉及到后验概率的应用,我们都可以考虑用EM算法去解决问题。EM算法更像是一...

weixin_39608680的博客 1760
上一篇: 比较全面的Adaboost算法总结(二)
下一篇: Android开发调用C++算法库完全指南(亲测可用)
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值