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)算法的更多相关文章

  1. 机器学习(二十七)— EM算法

    1.EM算法要解决的问题 如果使用基于最大似然估计的模型,模型中存在隐变量,就要用EM算法做参数估计. EM算法解决这个的思路是使用启发式的迭代方法,既然我们无法直接求出模型分布参数,那么我们可以先猜 ...

  2. 机器学习之支持向量机(二):SMO算法

    注:关于支持向量机系列文章是借鉴大神的神作,加以自己的理解写成的:若对原作者有损请告知,我会及时处理.转载请标明来源. 序: 我在支持向量机系列中主要讲支持向量机的公式推导,第一部分讲到推出拉格朗日对 ...

  3. EM(期望最大化)算法初步认识

    不多说,直接上干货! 机器学习十大算法之一:EM算法(即期望最大化算法).能评得上十大之一,让人听起来觉得挺NB的.什么是NB啊,我们一般说某个人很NB,是因为他能解决一些别人解决不了的问题.神为什么 ...

  4. SIGAI机器学习第二十三集 高斯混合模型与EM算法

    讲授高斯混合模型的基本概念,训练算法面临的问题,EM算法的核心思想,算法的实现,实际应用. 大纲: 高斯混合模型简介实际例子训练算法面临的困难EM算法应用-视频背景建模总结 高斯混合模型简写GMM,期 ...

  5. [算法系列之二十七]Kruskal最小生成树算法

    简单介绍 求最小生成树一共同拥有两种算法,一个是就是本文所说的Kruskal算法,还有一个就是Prime算法. 在具体解说Kruskal最小生成树算法之前,让我们先回想一下什么是最小生成树. 我们有一 ...

  6. GMM及EM算法

    GMM及EM算法 标签(空格分隔): 机器学习 前言: EM(Exception Maximizition) -- 期望最大化算法,用于含有隐变量的概率模型参数的极大似然估计: GMM(Gaussia ...

  7. python机器学习笔记:EM算法

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

  8. 机器学习-EM算法笔记

    EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域算法的基础,比如隐式马尔科夫算法(HMM), LDA主题模型的变分推断,混合高斯模型 ...

  9. 详解十大经典机器学习算法——EM算法

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第14篇文章,我们来聊聊大名鼎鼎的EM算法. EM算法的英文全称是Expectation-maximization al ...

  10. EM算法浅析(二)-算法初探

    EM算法浅析,我准备写一个系列的文章: EM算法浅析(一)-问题引出 EM算法浅析(二)-算法初探 一.EM算法简介 在EM算法之一--问题引出中我们介绍了硬币的问题,给出了模型的目标函数,提到了这种 ...

随机推荐

  1. JS 数组以及对象的深拷贝总结

    javascript 数组以及对象的深拷贝(复制数组或复制对象)的方法 前言 在js中,数组和对象的复制如果使用=号来进行复制,那只是浅拷贝.如下图演示:  如上,arr的修改,会影响arr2的值,这 ...

  2. MS SQL Server2012中的EOMONTH函数

    MS SQL Server2012中的EOMONTH函数   这个函数是获取一个指定日期所在月份最后一天的日期.可以得到某一个月月份的最后一天 如: declare @orderdate date=' ...

  3. 【转】社区O2O的增量与存量,机会在哪?

    在[O2凹凸社]的前一篇<社区O2O创业百态:三教九流>中总结过目前社区O2O行业的创业氛围,那更进一步看为何有这么多创业者想进入社区O2O市场呢?社区O2O的吸引力在哪?机会又在哪? 一 ...

  4. GUI的广泛应用是当今计算机发展的重大成就之一

    GUI的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用.人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口.菜单.按键等方式来方便地进行操作.而嵌入式GUI具有下面几 ...

  5. [转]seajs详解

    [转]seajs详解 SeaJS 是一个遵循commonJS规范的javascript模块加载框架,可以实现javascript的模块化开发和模块化加载(kk:模块可按需加载或全部加载). SeaJS ...

  6. Linux性能分析top iostat vmstat free

    最近看到一大牛的分析报告,才知道笔者认识这4个命令是多么肤浅,其实要读懂内存的信息,是要一些功力的.1.top   VIRT           虚拟内存总量,VIRT=SWAP+RESSWAP    ...

  7. Angular2 表单(一) 用户输入

    绑定到用户输入事件 等号左边的 (click) 表示把按钮的点击事件作为绑定目标. 等号右边引号中的文本是模板语句,通过调用组件的 onClickMe 方法来响应这个点击事件. <button ...

  8. Android笔记——Activity中的回传数据案例(装备选择)

    1.创建程序: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns: ...

  9. jquery 判断ul下是否存在li

    $("ul").has("li").length > 0;$("ul > li").length > 0;$(" ...

  10. HDU1080(DP)

    我用的dp是n^3的, dp[i][j] 表示在s串的i个前和t串的j个前,s[i],t[j]为最末端的两个串得到的最大值. 状态转移方程为: 之前将s和t串最尾端添加'-' ;i<=n;i++ ...