又看了一次EM 算法,还有高斯混合模型,最大似然估计
先列明材料:
高斯混合模型的推导计算(英文版):
http://www.seanborman.com/publications/EM_algorithm.pdf
这位翻译写成中文版:
http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html
高斯混合模型的流程:
http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006924.html
最大似然估计:
http://blog.csdn.net/yanqingan/article/details/6125812
http://blog.csdn.net/abcjennifer/article/details/8198352
一个高斯混合模型(GMM) 包含多个一维的高斯分布(GM),按例子来说,如果班级上同学的性别是知道的,身高也是知道的,那么对班级同学构建的GMM 可以这样,GM 的个数取2,分别表示男生身高高斯分布和女生的身高高斯分布,首先通过男生女生来划分 单个 GM 的权重,即男生\女生占班的比重,然后 男生的身高数据 计算出高斯分布,女生的也是,这样 就构建好一个GMM 了。
当然上面的例子是理想化的计算,假如对一组样本 n-by-d 进行聚类,n 表示样本数,d 表示样本的维度。
对一个GMM 的训练通过EM 和最大似然估计计算,需要确定的是 GMM 中各GM 的权重w,和各GM 里面样本均值 u 和 协方差矩阵 ∑ (d-by-d matrix),即GM 分布的两个参数。同属一个GM 的样本就是同一个类,所以多少类变有多少个GM.
通过最大似然估计作为GMM 训练的结束判断,最大似然估计根据 X 在GMM 分布中的期望作为判断(这句话不准确,看上面GMM推导).
对于一个样本点,其在GMM中的概率p(x)如下,其中K 为GM 的个数,样本x 在K 个GM 中的概率p(x|k) 的叠加,p(k)为 k-th GM 的权重:
然后利用最大似然估计,N 个样本点的p(x)之积最大的时候,则参数确定了,因为多项式之积难算,去了log 之后变成了之和,N() 是一维高斯分布,如下:
下面是另外一种表达,参考上上式中第一个等号,下面的m 等同上面的N,zi 是类标号即上面的k,下面公式第二等号有两个p,后p 等同于GM 的权重,前者p 就是一个上面公式的N ()一维高斯分布,注意下式第二个累加的变量是类标号,不是样本标号:
为了使上面的L 取最大值,那么使两个p 都取最大便可以了,这需要用到em算法,固定A,更新B,然后换过来,固定B,更新A,迭代到L的变化低于阀值。
初始化:
因为我们有初始化的标号,所以可以初始化各GM 的权重w(π),样本均值u 和协方差∑。初始化完成后,便可以进入EM迭代过程。
e-step:
先进行 e-step,这一步是假设知道了个GM 3个参数,即假设这个GMM 模型已经训练好了,那么将N个训练样本当作新样本输入,便可以求各样本到各GM 的概率,一个 N-by-K matrix,然后就知道了各样本的类标号,一行中的概率最大值咯,下面就是这个矩阵的计算公式:
注意的是这里运算的x 是d-by-1 矩阵,即一个sample,与前面的x 矩阵有点不同。
好了,问题来了,这个γ 究竟对应于上面公式的哪一部分呢?答案是 都不对应!
既然这样,为什么计算呢?为了更新类标号!
注意到这个γ 是小数来的,如果不进行上面的一行中概率最大值修改为1,其他修改为0,则一个sample 的类标号将是权重0.xx了,不再是1、0,正常操作时这样,在迭代过程中一直保持权重类标号,到正真需要的时候,例如判断样本的归宿时候,则给出1、0类标号。
ps:
注意到 γ 的分子是不是跟L 很像? 这其实实际计算上面,N() 是一样的,但π 不一样阿!这需要看e-step 的假设了,GMM 模型已经知道,输入的样本标号不知道,那么这个π 是训练数据得出来的π,不是输入样本的π(虽然数值数值上一样但逻辑上不同)!所以需要求出γ 才能够知道样本的标号,然后计算出GM 的权重,才是L 中的π值,想省事的就先判断后进行m-step,毕竟m-step才是意义上计算π的地方。
e-step结束了,其实我们已经可以知道了L 的右边的p,将γ 每行叠加生成 1-by-k 矩阵,便是各GM 的标号叠加,除以样本数便是权重了,进入m-step.
m-step:
进入M-step,则是看作已经到了输入样本的类标号,这就跟初始化很类似了,已知标号然后求GM的参数,区别是 初始化时候的标号为1、0,现在可能成小数了,计算公式如下:
解释下,第一条就是k-th GM 的样本均值,γ则是e-step 计算得出的值。
第二条是协方差计算公式了。
权重的更新藏在第三行,计算可以看上面几行有写。
收敛判断:
当前的log-likehood 就是用e-step 中的N(),和m-step 中的π,计算下式,与上一步的做对比。
又看了一次EM 算法,还有高斯混合模型,最大似然估计的更多相关文章
- 统计学习方法c++实现之八 EM算法与高斯混合模型
EM算法与高斯混合模型 前言 EM算法是一种用于含有隐变量的概率模型参数的极大似然估计的迭代算法.如果给定的概率模型的变量都是可观测变量,那么给定观测数据后,就可以根据极大似然估计来求出模型的参数,比 ...
- EM 算法求解高斯混合模型python实现
注:本文是对<统计学习方法>EM算法的一个简单总结. 1. 什么是EM算法? 引用书上的话: 概率模型有时既含有观测变量,又含有隐变量或者潜在变量.如果概率模型的变量都是观测变量,可以直接 ...
- 斯坦福大学机器学习,EM算法求解高斯混合模型
斯坦福大学机器学习,EM算法求解高斯混合模型.一种高斯混合模型算法的改进方法---将聚类算法与传统高斯混合模型结合起来的建模方法, 并同时提出的运用距离加权的矢量量化方法获取初始值,并采用衡量相似度的 ...
- 机器学习第三课(EM算法和高斯混合模型)
极大似然估计,只是一种概率论在统计学的应用,它是参数估计的方法之一.说的是已知某个随机样本满足某种概率分布,但是其中具体的参数不清楚,参数估计就是通过若干次试验,观察其结果,利用结果推出参数的大概值. ...
- 机器学习算法总结(六)——EM算法与高斯混合模型
极大似然估计是利用已知的样本结果,去反推最有可能(最大概率)导致这样结果的参数值,也就是在给定的观测变量下去估计参数值.然而现实中可能存在这样的问题,除了观测变量之外,还存在着未知的隐变量,因为变量未 ...
- EM算法求高斯混合模型參数预计——Python实现
EM算法一般表述: 当有部分数据缺失或者无法观察到时,EM算法提供了一个高效的迭代程序用来计算这些数据的最大似然预计.在每一步迭代分为两个步骤:期望(Expectation)步骤和最大化( ...
- EM算法和高斯混合模型GMM介绍
EM算法 EM算法主要用于求概率密度函数参数的最大似然估计,将问题$\arg \max _{\theta_{1}} \sum_{i=1}^{n} \ln p\left(x_{i} | \theta_{ ...
- 含隐变量模型求解——EM算法
1 EM算法的引入1.1 EM算法1.2 EM算法的导出2 EM算法的收敛性3EM算法在高斯混合模型的应用3.1 高斯混合模型Gaussian misture model3.2 GMM中参数估计的EM ...
- EM算法(Expectation Maximization Algorithm)初探
1. 通过一个简单的例子直观上理解EM的核心思想 0x1: 问题背景 假设现在有两枚硬币Coin_a和Coin_b,随机抛掷后正面朝上/反面朝上的概率分别是 Coin_a:P1:-P1 Coin_b: ...
随机推荐
- ajax400错误
在用ajax向后台传递参数时,页面一直显示错误400 bad request. 出现这个问题的原因是,要传递的VO类里一个实体bean里面的两个字段名称与前台表单序列化之后的name名称不匹配. 解决 ...
- 【CodeBase】PHP转换编码,读写文件/网页内容的防乱码方法
核心代码: //检查字符串的编码 $charset=mb_detect_encoding($doc,['ASCII','GB2312','GBK','BIG5','UTF8'],TRUE); //字符 ...
- 【CSS】CSS 的优先级总结
样式的优先级 多重样式(Multiple Styles):如果外部样式.内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况. 一般情况下,优先级如下: (外部样式)External styl ...
- javascript sprintf方法
转载自: http://demon.tw/programming/javascript-sprintf.html function str_repeat(i, m) { for (var o = [] ...
- js操作地址栏
//判断地址里是否有?号,如果没有就从最后一个/截到最后,如果有?就从最后一个/截至?号处 listTable.url = location.href.lastIndexOf("?" ...
- [译]The Python Tutorial#11. Brief Tour of the Standard Library — Part II
[译]The Python Tutorial#Brief Tour of the Standard Library - Part II 第二部分介绍更多满足专业编程需求的高级模块,这些模块在小型脚本中 ...
- Codeforces Round #461 (Div. 2) A. Cloning Toys
A. Cloning Toys time limit per test 1 second memory limit per test 256 megabytes Problem Description ...
- [USACO]Bovine Genomics
Description 给定两个字符串集合A,B,均包含N个字符串,长度均为M,求一个最短的区间[l,r],使得不存在字符串\(a\in A,b\in B,\)且\(a[l,r]=b[l,r]\) , ...
- Diycode开源项目 Glide图片加载分析
1.使用Glide前的准备 1.1.首先要build.gradle中添加 github原地址点击我. 参考博客:Glide-开始! 参考博客:android图片加载库Glide的使用介绍. 参考博 ...
- “帮你APP”团队冲刺8
1.整个项目预期的任务量 (任务量 = 所有工作的预期时间)和 目前已经花的时间 (所有记录的 ‘已经花费的时间’),还剩余的时间(所有工作的 ‘剩余时间’) : 所有工作的预期时间:88h 目前已经 ...