猪猪的机器学习笔记(十四)EM算法
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算法的更多相关文章
- 机器学习笔记—混合高斯和 EM 算法
本文介绍密度估计的 EM(Expectation-Maximization,期望最大). 假设有 {x(1),...,x(m)},因为是无监督学习算法,所以没有 y(i). 我们通过指定联合分布 p( ...
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...
- 《C++游戏开发》笔记十四 平滑过渡的战争迷雾(二) 实现:真正的迷雾来了
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9712321 作者:七十一雾央 新浪微博:http:/ ...
- Python机器学习笔记:异常点检测算法——LOF(Local Outiler Factor)
完整代码及其数据,请移步小编的GitHub 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/MachineLearningNote 在数据挖掘方面,经常需 ...
- 机器学习笔记(十)EM算法及实践(以混合高斯模型(GMM)为例来次完整的EM)
今天要来讨论的是EM算法.第一眼看到EM我就想到了我大枫哥,EM Master,千里马.RUA!!!不知道看这个博客的人有没有懂这个梗的. 好的,言归正传.今天要讲的EM算法,全称是Expectati ...
- SIGAI机器学习第二十四集 聚类算法1
讲授聚类算法的基本概念,算法的分类,层次聚类,K均值算法,EM算法,DBSCAN算法,OPTICS算法,mean shift算法,谱聚类算法,实际应用. 大纲: 聚类问题简介聚类算法的分类层次聚类算法 ...
- 猪猪的机器学习笔记(十七)隐马尔科夫模型HMM
隐马尔科夫模型HMM 作者:樱花猪 摘要: 本文为七月算法(julyedu.com)12月机器学习第十七次课在线笔记.隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来 ...
- Stanford机器学习---第十四讲.机器学习应用举例之Photo OCR
http://blog.csdn.net/l281865263/article/details/50278745 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归.Oc ...
- Coursera 机器学习笔记(四)
主要为第六周内容机器学习应用建议以及系统设计. 下一步做什么 当训练好一个模型,预测未知数据,发现结果不如人意,该如何提高呢? 1.获得更多的训练实例 2.尝试减少特征的数量 3.尝试获得更多的特征 ...
随机推荐
- IOS 特定于设备的开发:使用加速器启动屏幕上的对象
借助一点编程工作,iPhone的机载加速计就可以使对象在屏幕上四处“移动”,实时响应用户倾斜手机的方式.下面的代码就是创建一个动画式的蝴蝶,用户可以使之快速移过屏幕. 使之工作的秘密在于:向程序中添加 ...
- Tensorflow的CNN教程解析
之前的博客我们已经对RNN模型有了个粗略的了解.作为一个时序性模型,RNN的强大不需要我在这里重复了.今天,让我们来看看除了RNN外另一个特殊的,同时也是广为人知的强大的神经网络模型,即CNN模型.今 ...
- sqlserver、mysql、oracle各自的默认端口号
sqlserver默认端口号为:1433 URL:"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dbname" D ...
- Groovy在不同JDK版本下的性能差异
Groovy作为一种动态语言,性能和JAVA比肯定是差不少,根据网友的测试,由于测试环境,场景和编译参数的不同,大概有差2到7倍的差距 那么同样的Groovy,在不同的JDK版本下,会有着怎样的差异呢 ...
- karma note
karma 简介 karma不是一个测试框架,仅仅是启动了一个httpServer karma仅仅是一个跑测试的平台(runner), 我们可以使用各种测试框架, 如: Jasmine Mocha Q ...
- 转: requestAnimationFrame,Web中写动画的另一种选择
HTML5/CSS3时代,我们要在web里做动画选择其实已经很多了: 你可以用CSS3的animattion+keyframes; 你也可以用css3的transition; 你还可以用通过在canv ...
- [PHP] PHP初学者想了解"伪静态",必须看这个贴 [复制链接] [推荐]
一.何为“伪静态”? 以传智播客bbs论坛为例,这篇帖子的链接地址原本应该是“http://bbs.itcast.cn/forum.php?mod=post&action=newthread& ...
- [HDU 4741]Save Labman No.004[计算几何][精度]
题意: 求两条空间直线的距离,以及对应那条距离线段的两端点坐标. 思路: 有一个参数方程算最短距离的公式, 代入求即可. 但是这题卡精度... 用另外的公式(先算出a直线上到b最近的点p的坐标, 再算 ...
- Google Maps 学习笔记(二)地图天气预报服务 2014.06.04
地图天气预报服务:一,获取天气预报信息:二,解析天气预报信息:三,在地图上加载天气预报信息: Yahoo!提供的天气预报服务采用流行的RSS输出结果,接口地址如下: http://weather.ya ...
- URAL 1081 Binary Lexicographic Sequence
第13个位置第5个Bit :13>num[4] =>1 第四个bit 13-num[4]=5 :5<num[3] =>0 ,3-1 第三个Bit 5>num[2](3) ...