机器学习算法(优化)之二:期望最大化(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算法之一--问题引出中我们介绍了硬币的问题,给出了模型的目标函数,提到了这种 ...
随机推荐
- Enlish相关术语
APM 自动编程机(Automatic Programming Machine) 高级电源管理(Advanced Power Management) OSD 屏幕显示(On Screen Displa ...
- C++ c++与C语言的区别(三目运算符,const修饰符)
//区别⑦:三目运算符(C++版本) #include<iostream> using namespace std; //三目运算符 C语言返回变量的值 C++语言是返回变量本身 void ...
- 【BZOJ】1679: [Usaco2005 Jan]Moo Volume 牛的呼声(数学)
http://www.lydsy.com/JudgeOnline/problem.php?id=1679 水题没啥好说的..自己用笔画画就懂了 将点排序,然后每一次的点到后边点的声音距离和==(n-i ...
- pydoc介绍
Ka-Ping Yee 曾创建了一个相当著名的模块,名叫 pydoc (比较而言: pydoc 可以做到 perldoc 所能做的任何事,并且做得更好.更漂亮:-).对于 Python 2.1 来说, ...
- 小谈js原型链和继承
原型(prototype)在js中可是担当着举足轻重的作用,原型的实现则是在原型链的基础上,理解原型链的原理后,对原型的使用会更加自如,也能体会到js语言的魅力. 本文章会涉及的内容 原型及原型对象 ...
- Hive将txt、csv等文本文件导入hive表
1.将txt文本文件放置hdfs目录下 2.登录hive并进入到指定数据库 3.创建表 create external table if not exists fun_user_external ( ...
- iOS开发之--FMDB的使用
在很多时候,我们会用到数据库,我们移动端使用的数据库,一般都是嵌入型数据库,是一种较轻型的数据库, 一般很多时候,大牛封装的FMDB的第三方,已经足够满足我们的需求了! 现在分享一下自己的学习心得,希 ...
- XStream别名;元素转属性;去除集合属性(剥皮);忽略不需要元素
city package xstream; public class City { private String name; private String description; public St ...
- QQ空间的文艺打开方法
QQ空间被限制?打不开? 看看这里 第一种:http://user.qzone.qq.com/627911903 第二种:http://627911903.qzone.qq.com 第三种:http: ...
- R中实现脚本调用,以及函数调用
R中实现脚本调用,以及函数调用 这里的列子是test.R调用mysql_con.R中的函数 mysql_con.R # 使用RMySQL操作数据库 # 载入DBI和RMySQL包 #library(D ...