EM算法

作者:樱花猪

 

摘要:

本文为七月算法(julyedu.com)12月机器学习第十次次课在线笔记。EM算法全称为Expectation Maximization Algorithm,既最大期望算法。它是一种迭代的算法,用于含有隐变量的概率参数模型的最大似然估计和极大后验概率估计。EM算法经常用于机器学习和机器视觉的聚类领域,是一个非常重要的算法。而EM算法本身从使用上来讲并不算难,但是如果需要真正的理解则需要许多知识的相互串联。

引言:

     EM算法是机器学习十大经典算法之一。EM算法既简单有复杂,简单的在于他的思想而复杂则在于他的数学推理和复杂的概率公式。作为我这个新手来讲,决定先捡大的部分,因此文章我们会更加着重概念的理解,至于公式的推导,在上过课以后其实也不是那么的困难,主要一点是你需要有非常扎实的数学功底,EM算法的推导过程基本上涵盖了我们前面所有讲到的数学知识。因此,如果看不懂EM算法大概是因为基础知识太弱了需要补习。

预备知识:

贝叶斯网络、概率论与数理统计、凸优化

一、EM算法

实际问题:随机挑选10000位志愿者,测量他们的身高:若样本中存在男性和女性,身高分别服从N(μ1,σ1)和N(μ2,σ2)的分布,试估计μ1,σ1,μ2,σ2。

1、提出

假定有训练集,包含m个独立样本,希望从中找到该组主句的模型的参数。

2、建立目标函数

我们利用极大似然估计来建立目标函数:

z是隐随机变量,不方便直接找到参数估计。

策略:计算下界,求该下界的最大值;重复该过程,直到收敛到局部最大值。

利用Jesenbu不等式,寻找尽量紧的下界

是z的某一个分布,有:

LOG的曲线。

为了使等号成立:

有:

根据上述推导,有EM算法框架:

E-step(求条件分布)

M-step(求期望)

相互迭代,求的

 

二、高斯混合模型GMM

目的:随机变量X是有K个高斯分布混合而成,取各个高斯分布的概率为π1π2...πK,第i个高斯分布的均值为μi,方差为Σi。若观测到随机变量X的一系列样本x1,x2,...,xn,试估计参数π,μ,Σ。

1、直观求解:

对数似然函数:

由于在对数函数里面又有加和,我们没法直接用求导解方程的办法直接求得极大值。为了解决这个问题,我们分成两步。

 

第一步:估计数据由每个组份生成的概率

对于每个样本xi,它由第k个组份生成的概率为:

上式中的μ和Σ也是待估计的值,因此采样迭代法:在计算γ(i,k)时假定μ和Σ已知;γ(i,k)亦可看成组份k在生成数据xi时所做的贡献。

第二步:估计每个组份的参数

对于所有的样本点,对于组份k而言,可看做生成了这些点。组份k是一个标准的高斯分布,利用上面的结论:

2、EM方法求解:

E-step:

M-step:将多项分布和高斯分布的参数带入

对均值求偏导

令上式等于0,解的均值:

 

高斯分布的方差:求偏导,等于0

 

多项分布的参数:

考察M-step的目标函数,对于φ,删除常数项:

有:

由于多项分布的概率和为1,建立拉格朗日方程:

求偏导,等于0:

更加感观的讲解,参见:

http://blog.csdn.net/zouxy09/article/details/8537620

猪猪的机器学习笔记(十四)EM算法的更多相关文章

  1. 机器学习笔记—混合高斯和 EM 算法

    本文介绍密度估计的 EM(Expectation-Maximization,期望最大). 假设有 {x(1),...,x(m)},因为是无监督学习算法,所以没有 y(i). 我们通过指定联合分布 p( ...

  2. python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例

    python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...

  3. 《C++游戏开发》笔记十四 平滑过渡的战争迷雾(二) 实现:真正的迷雾来了

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9712321 作者:七十一雾央 新浪微博:http:/ ...

  4. Python机器学习笔记:异常点检测算法——LOF(Local Outiler Factor)

    完整代码及其数据,请移步小编的GitHub 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/MachineLearningNote 在数据挖掘方面,经常需 ...

  5. 机器学习笔记(十)EM算法及实践(以混合高斯模型(GMM)为例来次完整的EM)

    今天要来讨论的是EM算法.第一眼看到EM我就想到了我大枫哥,EM Master,千里马.RUA!!!不知道看这个博客的人有没有懂这个梗的. 好的,言归正传.今天要讲的EM算法,全称是Expectati ...

  6. SIGAI机器学习第二十四集 聚类算法1

    讲授聚类算法的基本概念,算法的分类,层次聚类,K均值算法,EM算法,DBSCAN算法,OPTICS算法,mean shift算法,谱聚类算法,实际应用. 大纲: 聚类问题简介聚类算法的分类层次聚类算法 ...

  7. 猪猪的机器学习笔记(十七)隐马尔科夫模型HMM

    隐马尔科夫模型HMM 作者:樱花猪 摘要: 本文为七月算法(julyedu.com)12月机器学习第十七次课在线笔记.隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来 ...

  8. Stanford机器学习---第十四讲.机器学习应用举例之Photo OCR

    http://blog.csdn.net/l281865263/article/details/50278745 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归.Oc ...

  9. Coursera 机器学习笔记(四)

    主要为第六周内容机器学习应用建议以及系统设计. 下一步做什么 当训练好一个模型,预测未知数据,发现结果不如人意,该如何提高呢? 1.获得更多的训练实例 2.尝试减少特征的数量 3.尝试获得更多的特征 ...

随机推荐

  1. github--新手使用错误分析

    先上去github 或者任意托管的网站.注册账号,新建仓库, 在本地运行Xcode 新建工程,新建工程的时候 勾上本地 的仓库,然后 在本地的项目根目录执行下边的命令: git remote add ...

  2. ObjectiveC 文件操作二

    10,文件委托,以便操作文件.头部看起来像是这样. @interface MyFileManager : NSObject @property(strong)NSFileManager *fileMa ...

  3. MySQL、You are using safe update mode

    MySQL默认模式是sql_safe_updates=1的.在这个模式下不管你是update还是delete一行where 条件都要指定主键.如果where条件只出现的不是主键就会出错. 例子: se ...

  4. 替换bmp图片中的颜色 good

    工作中,经常需要将bmp图片中的某个颜色修改为另外一种颜色.比如:将图片中的所有白色均修改成灰色. 平时都是拿画图板中的油漆桶工具一点一点的刷,费时又费力.(这么干好几年了 :( ) 今天抽空编了一个 ...

  5. 排序算法 - 快速排序(Quick Sort)

    算法思想 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序.它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod). (1) 分治法的基本思想  ...

  6. 一步一步学数据结构之1--n(通用树)

    今天来看大家介绍树,树是一种非线性的数据结构,树是由n个结点组成的有限集合,如果n=0,称为空树:如果n>0,则:有一个特定的称之为根的结点,它只有直接后继,但没有直接前驱:除根以外的其他结点划 ...

  7. 视频主观质量评价工具:MSU Perceptual Video Quality tool

    MSU Perceptual Video Quality tool是莫斯科国立大学(Moscow State University)的Graphics and Media Lab制作的一款视频主观评价 ...

  8. word排版论文小结

    毕业论文如何用WORD排版 本人折腾了一晚上看别人的百度经验,做个总结,方便后人看懂,其实特别简单 用WORD自动生成页码 第一种情况:从第一页或者从第二页开始设置页码 这种情况只要“插入-> ...

  9. HDU1171:Big Event in HDU(多重背包分析)

    通过分析,要使A>=B并且差值最小.所以只要使sum/2的容量下,B最大就Ok了 #include<iostream> #include<cstdio> #include ...

  10. Eclipse怎么全局搜索替换(整个项目)

    链接地址:http://jingyan.baidu.com/article/3ea51489c1c0d752e61bba2e.html 我们用Eclipse编程,有时候需要将整个项目的某个字符串替换成 ...