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 ...
随机推荐
- 浅析JavaScript异步
一直以来都知道JavaScript是一门单线程语言,在笔试过程中不断的遇到一些输出结果的问题,考量的是对异步编程掌握情况.一般被问到异步的时候脑子里第一反应就是Ajax,setTimseout...这 ...
- ActiveMQ 认证与授权
使用ActiveMQ自带simpleAuthenticationPlugin 1.直接将用户名密码写入activemq.xml文件 <plugins> <simpleAuthenti ...
- django同一个项目中连接多个数据库
一.场景与思路 同一个项目中需要连接多个数据库. 二.代码 代码中主要是三个部分,settings.models以及自己写的一个类. 1.自己写的文件:database_app_router.py ...
- Centos 端口被占用,kill被占用的进程
1.yum install lsof 2.输入netstat -tln,查看系统当前所有被占用端口 3.根据端口查询进程,输入lsof -i :9555,切记不要忘了添加冒号 4. 既然知道进程号了, ...
- python接口测试之新手篇
嗨,大家好,我是小白,好久没写博客了,最近公司搞什么python的接口测试,心里一阵狂喜,在公司上百个接口里拿出一个主要接口一顿乱搞,好在搞通了 但是在这过程中也碰到了好多的问题,决定将问题分享出来能 ...
- atoi()和itoa()函数详解以及C语言实现
atoi()函数 atoi()原型: int atoi(const char *str ); 函数功能:把字符串转换成整型数. 参数str:要进行转换的字符串 返回值:每个函数返回 int 值,此值 ...
- WLAN实验1:划分不同VLAN及Acess配置
实验环境 公司是一个较大的局域网,二层交换机S1放置在一楼,一楼有IT部门和人事部门.二层交换机S2放置在二楼,二楼有市场部和研发部.公司的策略是:不同部门的主机之间不能相互通信,同一部门的主机才可以 ...
- python蟒蛇绘制的代码以及目前还不知道怎么用的RGB颜色对照表
#PythonDraw.py import turtle#引入海龟库 turtle.setup(650,350,200,200)#确定窗口大小,长650,高350,确定窗口位置,距离电脑左上角200, ...
- docker安装之mariadb
https://hub.docker.com/_/mariadb?tab=description Supported tags and respective Dockerfile links 10.4 ...
- k8s安装之grafana.yaml
这个作展示,够用. 为了使用nginx统一管理, 这里将grafana放在子目录下. - name: GF_SERVER_ROOT_URL value: "%(protocol)s://% ...