机器学习算法(优化)之二:期望最大化(EM)算法
EM算法概述
(1)数学之美的作者吴军将EM算法称之为上帝的算法,EM算法也是大家公认的机器学习十大经典算法之一。EM是一种专门用于求解参数极大似然估计的迭代算法,具有良好的收敛性和每次迭代都能使似然函数值单调不减的优良性质。在统计机器学习、自然语言处理等领域应用非常广泛,许多统计学算法都是EM算法的体现,比如说隐含马尔科夫模型的训练方法Baum-Welch算法、最大熵模型的训练方法GIS算法、高斯混合模型EM算法、主题模型训练推理的pLSA方法,都是EM算法。甚至连聚类中的k-means算法,看似完全脱离了统计学,其实也可以看作是EM方法的体现。
(2)所以EM算法是统计学中非常核心的一个算法,主要是由于统计学中许多计算问题具有比较特殊的结构,可能数值计算的方法,优化理论算法在这里可能不好用,而这时候EM算法总能巧妙地予以解决。
(3)EM及其extension研究非常多,应用及其广泛。EM算法甚至可以说不仅仅是一个算法,而是一种思想,一个方法论,指导我们遇到某些问题时,如何去找到一个具备EM思想的迭代算法。
EM基本思想
(1)EM是一种专门用于求解参数极大似然估计的迭代算法。首先,提出这个算法,最开始是为有缺失数据条件下的参数估计提供了一个标准的理论框架。所以在最开始所研究的问题中确实存在数据的缺失。
(2)但是很快地,就延伸出去了,假设原始数据是完全的【注1】,但由于似然函数的求解十分困难,而额外添加一些数据就能将原来十分复杂的过程转化成一系列简单的似然函数优化问题,于是原始数据人为地变成了不完全数据【例1】。
上述两种情形,都可以看作是与缺失数据有关的问题,都会结合EM算法来分析,也难怪有学者称EM算法和缺失数据如同一对孪生姐妹一般总是如影随形。
(3)进一步延伸,用于含有隐变量(latent variable)的概率参数模型的最大似然估计或极大后验概率估计。
E、M过程
在一般性的问题中,如果有非常多的观测数据,让计算机不断迭代来学习一个模型,EM算法包含E、M两个过程。
(E):根据现有的模型,计算各个观测数据输入到模型中的计算结果,这个过程称为期望值计算过程(Expectation),即E过程;
(M):将(E)的计算作为输入,重新计算模型参数参数,以最大化(Maximization)某个我们定义的目标函数,即M过程。如此迭代,直到达到我们的预设条件。
上述两个过程被成为EM算法。
实例
(1)高斯混合模型
关于GMM(高斯混合模型),可以参考我的另一篇文章:http://www.cnblogs.com/itboys/p/8400207.html
GMM是理解EM算法比较简单的一个例子。
(2)K-means聚类:
(E)根据现有的聚类结果(比如说k个聚类中心点),可以按某个聚类的规则对所有的数据点重新进行划分。
(M)根据(E)重新划分的结果,以最大化某个目标函数,得到新的聚类结果,如果没有达到我们预设的条件,就重复(E)。
如k-means中,定义的聚类的规则是:最近原则,每个点归到最近距离的中心所在的类(可以理解为计算每个点的期望值)。
目标函数,同一类各个点到中心的平均距离d最近,即-d最大;同时不同类中心之间的平均距离D最远。按照使得D,-d最大化(每次迭代比前一次大)的原则,完成M过程,得到新的聚类中心。
参考文献
(1)CSDN博客 小硒—代码无疆 《 数据挖掘十大算法—-EM算法(最大期望算法)》 http://blog.csdn.net/u011067360/article/details/23702125?utm_source=tuicool&utm_medium=referral:以一个简单的例子演示了EM算法是如何推导出来的,例子中隐含变量是两个方差相同,均值不同的高斯分布,观测结果是一系列观测值x,例子很简单,适合演示EM过程.
(2)吴军《数学之美》第二版 《第27章 再谈文本自动分类问题——期望最大化算法》, 一如既往的,吴军的数学之美是学习一个算法首先推荐学习的一个材料,深入浅出,他往往先讲“道”,后讲或者少讲”术“,强调”术“应该尽量简单可靠的理念。在理解了算法的”道“之后,如果觉得细节还不够丰富,具体算法还无法落地,那么就需要看更多的材料了。
(3)K-means聚类算法与EM算法http://www.cnblogs.com/rong86/p/3517573.html
(4) GMM, Gaussian Mixture Model, 高斯混合模型http://blog.csdn.net/manji_lee/article/details/41335307
机器学习算法(优化)之二:期望最大化(EM)算法的更多相关文章
- 机器学习(二十七)— EM算法
1.EM算法要解决的问题 如果使用基于最大似然估计的模型,模型中存在隐变量,就要用EM算法做参数估计. EM算法解决这个的思路是使用启发式的迭代方法,既然我们无法直接求出模型分布参数,那么我们可以先猜 ...
- 机器学习之支持向量机(二):SMO算法
注:关于支持向量机系列文章是借鉴大神的神作,加以自己的理解写成的:若对原作者有损请告知,我会及时处理.转载请标明来源. 序: 我在支持向量机系列中主要讲支持向量机的公式推导,第一部分讲到推出拉格朗日对 ...
- EM(期望最大化)算法初步认识
不多说,直接上干货! 机器学习十大算法之一:EM算法(即期望最大化算法).能评得上十大之一,让人听起来觉得挺NB的.什么是NB啊,我们一般说某个人很NB,是因为他能解决一些别人解决不了的问题.神为什么 ...
- SIGAI机器学习第二十三集 高斯混合模型与EM算法
讲授高斯混合模型的基本概念,训练算法面临的问题,EM算法的核心思想,算法的实现,实际应用. 大纲: 高斯混合模型简介实际例子训练算法面临的困难EM算法应用-视频背景建模总结 高斯混合模型简写GMM,期 ...
- [算法系列之二十七]Kruskal最小生成树算法
简单介绍 求最小生成树一共同拥有两种算法,一个是就是本文所说的Kruskal算法,还有一个就是Prime算法. 在具体解说Kruskal最小生成树算法之前,让我们先回想一下什么是最小生成树. 我们有一 ...
- GMM及EM算法
GMM及EM算法 标签(空格分隔): 机器学习 前言: EM(Exception Maximizition) -- 期望最大化算法,用于含有隐变量的概率模型参数的极大似然估计: GMM(Gaussia ...
- python机器学习笔记:EM算法
EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域的基础,比如隐式马尔科夫算法(HMM),LDA主题模型的变分推断算法等等.本文对于E ...
- 机器学习-EM算法笔记
EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域算法的基础,比如隐式马尔科夫算法(HMM), LDA主题模型的变分推断,混合高斯模型 ...
- 详解十大经典机器学习算法——EM算法
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第14篇文章,我们来聊聊大名鼎鼎的EM算法. EM算法的英文全称是Expectation-maximization al ...
- EM算法浅析(二)-算法初探
EM算法浅析,我准备写一个系列的文章: EM算法浅析(一)-问题引出 EM算法浅析(二)-算法初探 一.EM算法简介 在EM算法之一--问题引出中我们介绍了硬币的问题,给出了模型的目标函数,提到了这种 ...
随机推荐
- mysql_windows解压包安装
WIN下安装64位的解压版mysql-5.6.24-winx64 参考如下安装步骤: 1.将解压缩后的文件放到自己想要的地方 并配置环境变量. 示例中存放的目录为:D:\Program Files\m ...
- 错题0920-java
1.java如何接受request域中的参数? A:request.getRequestURL() B:request. getAttribute() C:request.getParameter() ...
- Sencha Touch快速入门(译)
翻译自:http://www.sencha.com/learn/sencha-touch-quick-start/ 1.下载Sencha Touch SDK——下载链接 2.安装Safari或Chro ...
- 去死吧!USB转串口!!!
首先,这个题目有两种歧义:1.USB转232串口(严格说就是这种)! 2.USB转USART串口(通常都是这么叫,认为就是这,理论上是错误的,歧义所在)! USB转TTL.USB转232.USB转串口 ...
- 兔子--android中百度地图的开发
效果: API Key的申请地址:http://lbsyun.baidu.com/apiconsole/key 申请注意事项: 安全码:以下界面的SHA1 fingerprint值+;+包名 比如: ...
- uva 11381(神奇的构图、最小费用最大流)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=29821 思路:首先拆点,每个字符对应的位置拆成i和i+len,然后 ...
- Invalid property 'driverClassName' of bean class [com.mchange.v2.c3p0.ComboPooledDataSource]
spring配置文件中配置c3p0错误,错误原因在于c3p0连接池与DBCP连接池在驱动.连接.数据库用户名这些属性名称的差别
- Dubbo+Zookeeper视频教程
http://www.roncoo.com/course/view/f614343765bc4aac8597c6d8b38f06fd#boxTwo
- Android - ViewPager实现Gallery效果
RelativeLayout viewPagerContainer = (RelativeLayout) headerView.findViewById(R.id.content_pager_layo ...
- XStream中几个注解的含义和用法
转自:http://blog.csdn.net/robert_mm/article/details/8459879 XStream是个很强大的工具,能将java对象和xml之间相互转化.xstream ...