em算法怎么对应原有分类_机器学习基础-EM算法

EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域算法的基础,比如隐式马尔科夫算法(HMM), LDA主题模型的变分推断等等。本文就对EM算法的原理做一个总结。

EM算法要解决的问题

我们经常会从样本观察数据中,找出样本的模型参数。 最常用的方法就是极大化模型分布的对数似然函数。

但是在一些情况下,我们得到的观察数据有未观察到的隐含数据,此时我们未知的有隐含数据和模型参数,因而无法直接用极大化对数似然函数得到模型分布的参数。怎么办呢?这就是EM算法可以派上用场的地方了。

EM算法解决这个的思路是使用启发式的迭代方法,既然我们无法直接求出模型分布参数,那么我们可以先猜想隐含数据(EM算法的E步),接着基于观察数据和猜测的隐含数据一起来极大化对数似然,求解我们的模型参数(EM算法的M步)。由于我们之前的隐藏数据是猜测的,所以此时得到的模型参数一般还不是我们想要的结果。不过没关系,我们基于当前得到的模型参数,继续猜测隐含数据(EM算法的E步),然后继续极大化对数似然,求解我们的模型参数(EM算法的M步)。以此类推,不断的迭代下去,直到模型分布参数基本无变化,算法收敛,找到合适的模型参数。

从上面的描述可以看出,EM算法是迭代求解最大值的算法,同时算法在每一次迭代时分为两步,E步和M步。一轮轮迭代更新隐含数据和模型分布参数,直到收敛,即得到我们需要的模型参数。

一个最直观了解EM算法思路的是K-Means算法,见之前写的K-Means聚类算法原理。在K-Means聚类时,每个聚类簇的质心是隐含数据。我们会假设K个初始化质心,即EM算法的E步;然后计算得到每个样本最近的质心,并把样本聚类到最近的这个质心,即EM算法的M步。重复这个E步和M步,直到质心不再变化为止,这样就完成了K-Means聚类。

当然,K-Means算法是比较简单的,实际中的问题往往没有这么简单。上面对EM算法的描述还很粗糙,我们需要用数学的语言精准描述。

EM算法的推导

对于m个样本观察数据

396c1bcfc852459da2aa8020bc2c6e48.png

,找出样本的模型参数

0416e0950c0b1500d813da93a1b2b18c.png

,极大化模型分布的对数似然函数如下:

37da5223957edb70d763b50b3889925e.png

如果我们得到的观察数据有未观察到的隐含数据

b5fe6663c74f0c5a596692eb7f106fe7.png

,此时我们的极大化模型分布的对数似然函数如下:

9d2b19bfcd1b51feb8a82120f54857a5.png

上面这个式子是没有 办法直接求出

0416e0950c0b1500d813da93a1b2b18c.png

的。因此需要一些特殊的技巧,我们首先对这个式子进行缩放如下:

9f99b1239f161d6863168b936c2fc989.png

上面第(1)式引入了一个未知的新的分布

ae99bd4bd2d2070bb04a8d00fd3e41be.png

,第(2)式用到了Jensen不等式:

4216637139878ece8e1eddd6888ff74f.png

或者说由于对数函数是凹函数,所以有:

8fed8c6b010eff7c99563c01d571b00a.png

此时如果要满足Jensen不等式的等号,则有:

d886f34336458cf731771060899e756c.png

由于

ae99bd4bd2d2070bb04a8d00fd3e41be.png

是一个分布,所以满足:

53fdc98fe48b35a00788fe75caec5f02.png

从上面两式,我们可以得到:

06d47ad17bc42cf5a764cde7d91a6d7e.png

如果

f2295153f5026ce24053f7844b923b46.png

, 则第(2)式是我们的包含隐藏数据的对数似然的一个下界。如果我们能极大化这个下界,则也在尝试极大化我们的对数似然。即我们需要最大化下式:

7a8e705436583e11f74768ccc8b46a09.png

去掉上式中为常数的部分,则我们需要极大化的对数似然下界为:

672e1031d154eaab94301ee5333cc0ef.png

上式也就是我们的EM算法的M步,那E步呢?注意到上式中

ae99bd4bd2d2070bb04a8d00fd3e41be.png

是一个分布,因此

c166a9cef4021b21d4c7d354061b141e.png

可以理解为

0aaf0762c25d8845c46af05d474e0086.png

基于条件概率分布

ae99bd4bd2d2070bb04a8d00fd3e41be.png

的期望。

至此,我们理解了EM算法中E步和M步的具体数学含义。

EM算法流程

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

输入:观察数据

396c1bcfc852459da2aa8020bc2c6e48.png

,联合分布

725a37f4c683032a2223847b5de90db9.png

,条件分布

d762bc3e2dba5bde42d32988c9883bdb.png

,最大迭代次数J。

1) 随机初始化模型参数

0416e0950c0b1500d813da93a1b2b18c.png

的值

382034391ec0f9d700531f75be39ad61.png

2) for j from 1 to J开始EM算法迭代:

a) E步:计算联合分布的条件概率期望:

74360c11ed75f2aad63bcd9cff9f869b.png

b) M步:极大化

11c8eba3472940c6bc16ace72045c88f.png

,得到

ac20217e1198b98ca4cde67af7a7a04c.png

c5b2b60aae9d2df0c5828c921196a415.png

c) 如果

ac20217e1198b98ca4cde67af7a7a04c.png

已收敛,则算法结束。否则继续回到步骤a)进行E步迭代。

输出:模型参数

0416e0950c0b1500d813da93a1b2b18c.png

EM算法收敛性思考

EM算法的流程并不复杂,但是还有两个问题需要我们思考:

1) EM算法能保证收敛吗?

2) EM算法如果收敛,那么能保证收敛到全局最大值吗?

首先我们来看第一个问题, EM算法的收敛性。要证明EM算法收敛,则我们需要证明我们的对数似然函数的值在迭代的过程中一直在增大。即:

836b86651e92564bd328703e39cb3cd8.png

由于

5e310db26d86f603cb342ad78c4f87c7.png

令:

109c4b0d2f39e4a87cf64d5083edcfb5.png

上两式相减得到:

93dcd5bcc7f75d2c4ae60c4bb449c5d7.png

在上式中分别取

0416e0950c0b1500d813da93a1b2b18c.png

083111b7857da3eb29bb4f5a413f8ae9.png

ac20217e1198b98ca4cde67af7a7a04c.png

,并相减得到:

fa82fed5ba5112ecd097e06b458f1068.png

要证明EM算法的收敛性,我们只需要证明上式的右边是非负的即可。

由于

ac20217e1198b98ca4cde67af7a7a04c.png

使得

11c8eba3472940c6bc16ace72045c88f.png

极大,因此有:

bab99dab6b3689e6c136fe836ba9c969.png

而对于第二部分,我们有:

8620229bc14bf3b74248e3f8ffb352e1.png

其中第(4)式用到了Jensen不等式,只不过和第二节的使用相反而已,第(5)式用到了概率分布累积为1的性质。

至此,我们得到了:

7f363fae2e2f71d18bf66ae227b0a966.png

证明了EM算法的收敛性。

从上面的推导可以看出,EM算法可以保证收敛到一个稳定点,但是却不能保证收敛到全局的极大值点,因此它是局部最优的算法,当然,如果我们的优化目标

6f82d1bd2e46a2981380b93e50c227dc.png

是凸的,则EM算法可以保证收敛到全局最大值,这点和梯度下降法这样的迭代算法相同。至此我们也回答了上面提到的第二个问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556968.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从mysql到大数据(二)--数据库的认识

一、数据库的认识 数据库顾名思义,是存放数据的库房。 二、数据库的分类(了解) 可以分为两大类:关系型数据库和非关系型数据库。 关系型数据库: 关系型数据库,存储的格式可以直观地反映实体间的关系。…

postman插件下载、安装教程

这里只讲如何在Chrome 中安装postman插件 下载链接:https://pan.baidu.com/s/1vampHeD0UiDNbrB3G8j_hA 提取码:wqdl 方法/步骤 1.在Chrome输入地址:[chrome://extensions/] 2.将压缩包直接拖拽至Chrome中 3.运行在Chrome输入地址&#xff…

得力条码扫描器怎么用_广东智能物流控制系统怎么选

广东智能物流控制系统怎么选,东莞智库,东莞智库(SmartWarehouse),专注电子制造SMT智能仓库,致力于帮助电子制造企业提高物流仓储效率和效能。广东智能物流控制系统怎么选, 旭日东自动分拣系统是个集机械、电气、计算机…

从mysql到大数据(三)--mysql数据库建模一常用数据类型及引擎

数据库的安装请自行百度。如果你想直捣黄龙练查询,没有表没有数据是不能实现的。我们从建表开始学习。但要知道,我们所有东西都是了解,学习不要有压力,不要必须要求记什么,当然,如果你不累可以记&#xff0…

Postman用法简介-Http请求模拟工具

Postman用法简介-Http请求模拟工具 在我们平时开发中,特别是需要与接口打交道时,无论是写接口还是用接口,拿到接口后肯定都得提前测试一下,这样的话就非常需要有一个比较给力的Http请求模拟工具,现在流行的这种工具也…

matlab多元函数_函数的计算机处理8(1)_1MATLAB

计算机语言运用--数值计算8-函数的计算机处理8(1)_1MATLAB计算机:电子线路组成的计算机器。人与计算机则是通过计算机语言-符号系统说给计算机听而交流。计算机语言有低级语言-机器语言、汇编、高级语言-C/C/C#/VB/PASCAL/LISP/JAVA/PYTHON/……成百上千种之多。 作…

(一)MySQL优化之索引优化

一、索引的概念 我们知道,在查询过程中,如果被查询的表没有索引,数据库会进行全表扫描,而如果添加了相应的索引,数据库会根据索引直接查找符合条件的数据。因此,索引的存在会大大提高查询效率。而索引其实…

Gson的fromJson()方法

Gson提供了fromJson()方法来实现从Json相关对象到Java实体的方法。 在日常应用中,我们一般都会碰到两种情况,转成单一实体对象和转换成对象列表或者其他结构。 先来看第一种: 比如json字符串为:[{“name”:”name0”,”age”:0…

java 怎么通过url获取远程服务器上某个文件夹下的所有文件_JMX远程代码漏洞研究...

前言:前一段时间apace solr JMX因为配置不当出现远程代码执行漏洞,最近自己在看一套java系统时,发现该系统也存在JMX远程代码漏洞,于是乎就想研究下JMX这种通用型漏洞,下面我就从原理到利用对该漏洞做一个简单的梳理。…

Java注解的Retention和RetentionPolicy

一 源码赏析 1 源码 Documented Retention(RetentionPolicy.RUNTIME) Target(ElementType.ANNOTATION_TYPE) public interface Retention {RetentionPolicy value(); }public enum RetentionPolicy {//此注解类型的信息只会记录在源文件中,编译时将被编译器丢弃&a…

hive UDF函数取最新分区

hive UDF函数取最新分区 1.pom文件 <dependencies><!-- https://mvnrepository.com/artifact/org.apache.hive/hive-exec --><dependency><groupId>org.apache.hive</groupId><artifactId>hive-exec</artifactId><version>1…

app每秒并发数_性能测试连载 (38) jmeter 线程数与性能测试的负载模式

点击跳转>>jmeter--由浅入深学性能系列需求下面有3个场景&#xff0c;思考一下在jmeter里面如何设计场景1&#xff1a;有一个项目&#xff0c;500用户同时登录&#xff0c;响应时间能达到多少场景2&#xff1a;考勤打卡&#xff0c;最大吞吐量能达到多少(每秒最大能完成多…

用自定义注解做点什么——自定义注解有什么用

用自定义注解做点什么 前言 你不一定听过注解&#xff0c;但你一定对Override不陌生。 当我们重写父类方法的时候我们就看到了Override。我们知道它表示父类方法被子类重写了。 现在告诉你&#xff0c;Override就是一个注解。 也许你会疑惑注解是什么&#xff1f; 注解&…

HIVE 优化浅谈

HIVE 优化浅谈 hive不怕数据量大&#xff0c;导致运行慢的主要原因是数据倾斜。hive的运行机制这里就不再赘述&#xff0c;咱们直入正题&#xff0c;聊一下hive的优化方法。 优化点一&#xff1a;业务逻辑优化 1.去除冗余逻辑 对于复杂业务逻辑来说&#xff0c;在非数据倾斜…

c++ 查找文件夹下最新创建的文件_云计算开发总结:搜索Linux文件和文件夹的方法...

当下&#xff0c;随着Linux在物联网、云技术、超级计算和人工智能等领域扮演关键角色&#xff0c;各种会议和新版本的发布令人应接不暇&#xff0c;Linux将迎来一个激动人心的“云时代”。如果你想把握这个风口&#xff0c;现在是学习Linux技术的最佳时期。今天千锋广州云计算培…

RSA 非对称加密原理

RSA 加密原理 步骤说明描述备注1找出质数P 、Q-2计算公共模数N P * Q-3欧拉函数φ(N) (P-1)(Q-1)-4计算公钥E1 < E < φ(N)E的取值必须是整数 E 和 φ(N) 必须是互质数5计算私钥DE * D % φ(N) 1-6加密C &#xff1d; M E mod NC&#xff1a;密文 M&#xff1a;明文7…

HIVE 数据倾斜浅谈

HIVE 数据倾斜浅谈 一、数据倾斜现象 map100%,reduce一直卡在一个值&#xff0c;如99%。 二、数据倾斜的原因 数据按key的hash值分配到reduce中&#xff0c;如果有的key值比较集中&#xff0c;就会导致某个或某些reduce分配的数据量太大&#xff0c;这样当其他reduce运行完毕…

es6 依赖循环_require 和 import 的循环依赖详解

说到前端模块化&#xff0c;就不得不说到循环加载&#xff0c;就像混乱背后隐藏着的清晰地秩序。什么叫循环加载&#xff1f;我们来看一段代码。12345678910111213const b require(./b);b();module.exports function(){console.log(This is a.js);}//b.jsconst a require(./…

浅谈对称加密与非对称加密

在数字加密算法中&#xff0c;通过可划分为对称加密和非对称加密。 一&#xff1a;什么是对称加密&#xff1f; 在对称加密算法中&#xff0c;加密和解密使用的是同一把钥匙&#xff0c;即&#xff1a;使用相同的密匙对同一密码进行加密和解密&#xff1b; 加密过程如下&…

ios跨线程通知_一种基于Metal、Vulkan多线程渲染能力的渲染架构

快手Y-tech 原创最新技术干货分享随着3D渲染场景规模越来越复杂&#xff0c;单线程渲染架构在满足业务性能要求时已经捉襟见肘&#xff0c;因此&#xff0c;多线程渲染显得愈发重要。本文首先介绍了新一代图形渲染接口Metal、Vulkan&#xff0c;以及它们的多线程渲染特性&…