EM算法 学习笔记
转载请注明出处: http://www.cnblogs.com/gufeiyang
首先考虑这么一个问题。操场东边有100个男生,他们的身高符合高斯分布。操场西边有100个女生,她们的身高也符合高斯分布。 如果告诉了男生的身高,我们很容易用极大似然估计求出正态分布的参数。 同理,给出了女生的身高,我们也很容易得到高斯分布的参数。 接下来事情发生了, 男生跑入女生队伍中, 然后统计了200个人的身高,但是却不知道每个身高是男的还是女生的。 这样的话就很纠结了。 如果我们要是知道了每个人的性别改多好啊, 知道了性别就可以用极大似然得到两个高斯分布的参数了。 如果我们知道了高斯分布的参数,那么我就可以估计出来每个身高属于男女的概率。 忽然间我们发现这是一个“先有鸡还是先有蛋” 的问题。
EM算法基本思想:假设我们想估计的参数为A,B。 开始的时候A和B都未知, 但是如果我们知道了A,就能得到B。 我们得到了B就可以得到A。 EM会给A一个初始值,然后得到B,再由B得到A, 再得到B,一直迭代到收敛为止。
说完了EM算法的基本思想, 下面我讲详细介绍EM算法的公式推导。
现在有样本集 X1,X2......Xm, 一共m个样本, 每个样本都有一个隐变量Zi,但是这个变量却不知道(隐变量嘛)。 我们需要估计的概率模型为P(X|Z)的参数θ。针对上一个例子,X为身高,Z给男女,θ为高斯分布的参数。

由于函数 f(x)=log(x)是一个凹函数,所有(2)式到(3)式可以利用jeson不等式。 其实l(θ)使我们的目标函数(如果Zi确定的话).我们这个时间找到了l(θ)的下界。 我们可以调整θ,然后再极大化下界,再调整θ......一直迭代到收敛为止。
这个时候我们不禁会想两个问题。 (a)上边 的推导中用了不等号,什么时间可以取等号呢? (b)真的一定会收敛吗?
我们先讨论第一个问题,由于
,( Q(Zi)是Zi的概率密度函数),当
为常数时, 不等式就变成了等式。我们令这个常数为
,那么

我们在给定了参数θ后,使下界拉升的Q(Zi)就能计算了。 给定了Q(Zi)后,又能调整θ,接着极大化新θ的下界......
因此EM算法的步骤为:
E步骤:根据参数初始值或上一次迭代的模型参数计算隐变量的后验概率:

M步骤:将似然函数极大化,以获得新的参数值:

一直重复这两个步骤。
接着讨论第二个问题:这样的迭代会收敛吗?

从上边的推到来看,EM算法是收敛的。具体推导参看 Andrew Ng《The EM algorithm》。
至此EM算法就介绍完了。 需要指出EM算法不能保证全局最优。不同的初始值, 得到最后的结果可能不一样。
参考资料:
《统计学习方法》 李航著
zouxy09博客 http://blog.csdn.net/zouxy09/article/details/8537620
EM算法 学习笔记的更多相关文章
- C / C++算法学习笔记(8)-SHELL排序
原始地址:C / C++算法学习笔记(8)-SHELL排序 基本思想 先取一个小于n的整数d1作为第一个增量(gap),把文件的全部记录分成d1个组.所有距离为dl的倍数的记录放在同一个组中.先在各组 ...
- Manacher算法学习笔记 | LeetCode#5
Manacher算法学习笔记 DECLARATION 引用来源:https://www.cnblogs.com/grandyang/p/4475985.html CONTENT 用途:寻找一个字符串的 ...
- Johnson算法学习笔记
\(Johnson\)算法学习笔记. 在最短路的学习中,我们曾学习了三种最短路的算法,\(Bellman-Ford\)算法及其队列优化\(SPFA\)算法,\(Dijkstra\)算法.这些算法可以快 ...
- 某科学的PID算法学习笔记
最近,在某社团的要求下,自学了PID算法.学完后,深切地感受到PID算法之强大.PID算法应用广泛,比如加热器.平衡车.无人机等等,是自动控制理论中比较容易理解但十分重要的算法. 下面是博主学习过程中 ...
- Johnson 全源最短路径算法学习笔记
Johnson 全源最短路径算法学习笔记 如果你希望得到带互动的极简文字体验,请点这里 我们来学习johnson Johnson 算法是一种在边加权有向图中找到所有顶点对之间最短路径的方法.它允许一些 ...
- EM算法学习资料备忘
将学习EM算法过程中看到的好的资料汇总在这里,供以后查询.也供大家參考. 1. 这是我学习EM算法最先看的优秀的入门文章,讲的比較通俗易懂,并且举了样例来说明当中的原理.不错! http://blog ...
- 算法学习笔记——sort 和 qsort 提供的快速排序
这里存放的是笔者在学习算法和数据结构时相关的学习笔记,记录了笔者通过网络和书籍资料中学习到的知识点和技巧,在供自己学习和反思的同时为有需要的人提供一定的思路和帮助. 从排序开始 基本的排序算法包括冒泡 ...
- Expectation maximization - EM算法学习总结
原创博客,转载请注明出处 Leavingseason http://www.cnblogs.com/sylvanas2012/p/5053798.html EM框架是一种求解最大似然概率估计的方法.往 ...
- R语言实现关联规则与推荐算法(学习笔记)
R语言实现关联规则 笔者前言:以前在网上遇到很多很好的关联规则的案例,最近看到一个更好的,于是便学习一下,写个学习笔记. 1 1 0 0 2 1 1 0 0 3 1 1 0 1 4 0 0 0 0 5 ...
随机推荐
- 【转载】C#使用Math.Sqrt方法进行开平方操作
在C#的数学数值运算中,有时候需要进行对数值进行开平方操作,C#的数值计算类Math类中内置了开平方操作的方法Sqrt,直接调用此方法可计算出相应的平方值,Math.Sqrt方法签名为:double ...
- 【阅读笔记:散列表】Javascript任何对象都是一个散列表(hash表)!
什么是散列表? 散列表是Dictionary(字典)的一种散列表实现方式,字典传送门 一个很常见的应用是使用散列表来表示对象.Javascript语言内部就是使用散列表来表示每个对象.此时,对象的每个 ...
- uboot使用脚本
使用mkimage命令 # mkimage -A ARM -O linux -T script -C none -n "script" -d *.sh *.img # tftp x ...
- 实战OpenGLES--iOS平台使用OpenGLES渲染YUV图片
上一篇文章 实战FFmpeg--iOS平台使用FFmpeg将视频文件转换为YUV文件 演示了如何将视频文件转换为yuv文件保存,现在要做的是如何将yuv文件利用OpenGLES渲染展示出图像画面.要将 ...
- python 解析命令行选项
问题: 程序如何能够解析命令行选项 解决方案 argparse 模块可被用来解析命令行选项 argparse 模块 argparse 模块是标准库中最大的模块之一,拥有大量的配置选项 dest 参数指 ...
- http状态码记录
一些常见的状态码为: 200 - 服务器成功返回网页404 - 请求的网页不存在503 - 服务不可用详细分解: 1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码. 代码 说明100 ...
- Python_Class
1.创建类的关键字:class 2.构造函数__init__(),自动初始化属性值 class Cup: #构造函数,初始化属性值 def __init__(self,capacity,color): ...
- IP和网络互联
IP和网络互联 IP网络互连机制: IP地址分类方法及原因: CIDR地址(无分类地址): IP分组首部格式: 数据分片方法: IP分组传输思路:
- python实现抖音多线程下载无水印视频【附源码】
昨天发了一个无水印解析,评论说想要多线程下载,还是比较简单的. py文件同目录下创建url.txt,把链接一行一行复制进去,就能批量下载. 代码中的延时不能去掉,由于是多线程,速度较快,延时很重要. ...
- 圆柱模板价格计算器V1.0版本
因很多客户需求,就做了一个初始版本的产品圆柱模板面积和价格的计算器,界面非常简单,做工粗糙,但是功能是可以运行.后期会在界面和功能上进行升级,打算出一个微信小程序版本.这个程序仅供参考. 演示地址:h ...