机器学习算法(优化)之二:期望最大化(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算法之一--问题引出中我们介绍了硬币的问题,给出了模型的目标函数,提到了这种 ...
随机推荐
- 《敏捷软件开发-原则、方法与实践》-Robert C. Martin读书笔记(转)
Review of Agile Software Development: Principles, Patterns, and Practices 本书主要包含4部分内容,这些内容对于今天的软件工程师 ...
- OEM无法启动:oracle/product/10.2.0/dbhome_1/oc4j/j2ee/OC4J_DBConsole_localhost.localdomain_orcl not found.
配置OEM环境变量 ORACLE_UNQNAME=$ORACLE_SID 要想打开OEM的web管理程序,必须先启动Database listener,再启动Datebase Control端口监控程 ...
- 在dropDownList中实现既能输入一个新值又能实现下拉选的代码
aspx: <div id="selDiv" style=" z-index:100; visibility:visible; clip:rect(0px 110p ...
- 去除 \ufeff
语言:python 编程工具:pycharm 硬件环境:win10 64位 读取文件过程中发现一个问题:已有记事本文件(非空),转码 UTF-8,复制到pycharm中,在开始位置打印结果会出现 \ ...
- 简单配置Nginx 指向本地端口,并开启SSL
简单配置Nginx 指向本地端口,并开启SSL,如果要开启SSL,必须使用域名去申请SSL key,一般是两个文件,一般是要收费的. # 在/etc/nginx/nginx.conf 的文件中有下面一 ...
- connect() failed (111: Connection refused) while connecting to upstream, cli
php-fpm没有运行 执行如下命令查看是否启动了php-fpm,如果没有则启动你的php-fpm即可 netstat -ant | grep 9000 没有运行为空,有运行显示 tcp 0 0 12 ...
- AWS CLI 【S3】
1.创建一个桶&删除一个桶 root@syavingc:~# aws s3 mb s3://syavingc #创建一个桶 make_bucket: syavingc root@syaving ...
- mySubmit.js
function mySubmit(theForm,url,result){ function default_callback(res){ result.html(res.info); if(res ...
- HTML5游戏制作完全指南
简介 创建画布 游戏循环 Hello world 创建player 键盘控制 a:使用jQuery Hotkeys b:移动player 添加更多游戏元素 炮弹 敌人 使用图片 碰撞检测 声音 简介 ...
- android开发环境之ADT安装,卸载,更新
http://hj198703.iteye.com/blog/1316991 1.官网:http://developer.android.com/sdk/index.html2.ADT组件在线安装 ...