机器学习 : 高斯混合模型及EM算法
Mixtures of Gaussian
这一讲,我们讨论利用EM (Expectation-Maximization)做概率密度的估计。假设我们有一组训练样本 x(1),x(2),...x(m) {x^{(1)}, x^{(2)},...x^{(m)}},因为是unsupervised的学习问题,所以我们没有任何y的信息。
我们希望利用一个联合分布 p(x(i),z(i))=p(x(i)|z(i))p(z(i)) p(x^{(i)}, z^{(i)})=p(x^{(i)}|z^{(i)})p(z^{(i)})来拟合这些数据, 其中 z(i)∼Multinomial(ϕ) z^{(i)} \sim \text{Multinomial} (\phi) ( ϕj⩾0 \phi_{j} \geqslant 0 , ∑kj=1ϕj=1 \sum_{j=1}^{k}\phi_{j}=1,参数 ϕj \phi_{j}给出了概率 p(z(i)=j) p(z^{(i)}=j)),并且 x(i)|z(i)=j∼N(μj,Σj) x^{(i)}|z^{(i)} =j \sim N(\mu_{j}, \Sigma_{j}),我们让k表示 z(i) z^{(i)}可能值的个数,因此在这个模型中,每一个训练样本 x(i) x^{(i)}是由随机取某一个值的变量 z(i) z^{(i)}生成的,所以 x(i) x^{(i)}是从k个的高斯分布中的一个(由 z(i) z^{(i)}指示)提取出来的。这个称为高斯混合模型,我们也要注意到 z(i) z^{(i)}是隐含的随机变量,高斯混合模型涉及的参数是 ϕ,μ,Σ \phi, \mu, \Sigma,为了估计这些变量,我们可以建立如下的表达式:
\begin{equation*} \begin{split} l(\phi, \mu, \Sigma) & =\sum_{i=1}^{m}\text{log} p(x^{(i)}; \phi, \mu, \Sigma) \\ & =\sum_{i=1}^{m} \text{log} \sum_{z^{(i)}=1}^{k} p(x^{(i)}|z^{(i)} ;\mu, \Sigma)p(z^{(i)}, \phi) \end{split} \end{equation*}
我们发现,通过求偏导数求极值的方法,无法得到这些参数的解,从上面的表达式可以看出,随机变量 z(i) z^{(i)}告诉了我们 x(i) x^{(i)}是从k个高斯分布中的其中一个生成的,如果我们知道是哪一个高斯分布,或者说如果知道 z(i) z^{(i)}的值,那我们可以利用最大似然估计的方法估计参数
ϕ,μ,Σ \phi, \mu,\Sigma,如果 z(i) z^{(i)}已知,那么上式可以写成:
l(\phi, \mu, \Sigma) = \sum_{i=1}^{m} \text{log} p(x^{(i)}|z^{(i)} ;\mu, \Sigma) + \text{log}p(z^{(i)}, \phi)
利用最大似然估计,可以求得这些参数为:
\begin{equation*} \begin{split} \phi_{j} & =\frac{1}{m} \sum_{i=1}^{m} 1\{z^{(i)}=j\} \\ \mu_{j}& =\frac{\sum_{i=1}^{m} 1\{z^{(i)}=j\} x^{(i)}} { \sum_{i=1}^{m} 1\{z^{(i)}=j\} } \\ \Sigma_{j} & = \frac{\sum_{i=1}^{m} 1\{z^{(i)}=j\}( x^{(i)}-\mu_{j}) ( x^{(i)}-\mu_{j})^{T}}{\sum_{i=1}^{m} 1\{z^{(i)}=j\}} \end{split} \end{equation*}
从上面的表达式可以看出,如果 z(i) z^{(i)}的值已知,那么参数 ϕ,μ,Σ \phi, \mu,\Sigma的估计与之前介绍的Gaussian discriminant analysis 模型对参数的估计是一样的,这里的 z(i) z^{(i)}就像Gaussian discriminant analysis 模型中的输出y一样。
但是遗憾的是,我们不知道 z(i) z^{(i)}的值,所以这里我们要介绍另外一种unsupervised的学习方法,称为EM算法,EM算法主要分为两步,在E-step,我们主要对 z(i) z^{(i)}的值做猜测,在M-step,我们在E-step假设的基础上,利用最大似然估计求参数 ϕ,μ,Σ \phi, \mu,\Sigma,算法主要流程如下:
Repeat until convergence {
E-step: 对于每一个i,j,设置:
w_{j}^{(i)}:=p(z^{(i)}=j| x^{(i)}; \phi, \mu, \Sigma)
M-step: 跟新如下参数:
\phi_{j} : =\frac{1}{m} \sum_{i=1}^{m} w_{j}^{(i)}
\mu_{j} : = \frac{\sum_{i=1}^{m} w_{j}^{(i)}x^{(i)}}{ \sum_{i=1}^{m} w_{j}^{(i)} }
\Sigma_{j} : = \frac{ \sum_{i=1}^{m} w_{j}^{(i)} ( x^{(i)}-\mu_{j}) ( x^{(i)}-\mu_{j})^{T} }{ \sum_{i=1}^{m} w_{j}^{(i)} }
}
在E-step,我们可以通过给定的 x(i) x^{(i)}和当前估计的参数计算 z(i) z^{(i)}的后验概率,利用贝叶斯估计,我们可以得到:
p(z^{(i)}=j| x^{(i)}; \phi, \mu, \Sigma)=\frac{ p(x^{(i)}|z^{(i)}=j ;\mu, \Sigma) p(z^{(i)}=j, \phi) }{ \sum_{l=1}^{k} p(x^{(i)}|z^{(i)}=l ;\mu, \Sigma) p(z^{(i)}=l, \phi) }
这里, p(x(i)|z(i)=j;μ,Σ) p(x^{(i)}|z^{(i)}=j ;\mu, \Sigma)通过计算一个均值为 μj \mu_{j},协方差为 Σj \Sigma_{j}的高斯分布在 x(i) x^{(i)}处的概率密度得到, p(z(i)=j,ϕ) p(z^{(i)}=j, \phi)
是由 ϕj \phi_{j}给出,在E-step计算的 w(i)j w_{j}^{(i)}的值,表示我们对 z(i) z^{(i)}的一种弱估计。
同样,我们也可以将M-step的参数跟新与知道 z(i) z^{(i)}确切值的参数估计的表达式进行对比,可以看出两者是一致的,只不过前面的表达式 1{z(i)=j} 1\{z^{(i)}=j\}指出了我们利用哪个高斯分布,而现在换成了 w(i)j w_{j}^{(i)}。
EM 算法同样会让人联想起k均值算法,k均值是硬聚类,将样本聚到某一类里,而EM算法是弱聚类,样本所属的高斯分布由 w(i)j w_{j}^{(i)}估计。
参考来源:
Andrew Ng, “Machine Learning”, Stanford University.
机器学习 : 高斯混合模型及EM算法相关推荐
- 详解高斯混合模型与EM算法
详解高斯混合模型与EM算法 详解高斯混合模型与EM算法 高斯混合模型 单高斯模型(Gaussian single model, GSM) 一维高斯分布 多维高斯分布 混合高斯模型(Gaussian m ...
- 高斯混合模型与EM算法求解
高斯混合模型 文章目录 高斯混合模型 EM算法 高斯混合模型参数估计 1.样本分类已知情况下的GMM 2.样本分类未知的情况下的GMM 混合模型是一个用来表示在总体分布中含有K个子分布的概率模型,也就 ...
- GMM高斯混合模型及EM算法(matlab实现)
单元 %绘制男女生身高的GMM clc clear all %男女生共取2000人,女生平均身高163,男声平均身高180 male=180+sqrt(10)*randn(1,1000); %产生均值 ...
- 机器学习 高斯混合模型
高斯混合模型 前言 高斯混合模型 高斯分布 混合模型 高斯模型 单高斯模型 高斯混合模型 高斯混合模型训练 EM算法 应用 图像背景的高斯混合模型 智能监控系统 参考 前言 之前在一次技术讨论当中,针 ...
- (转载)机器学习知识点(十四)EM算法原理
1.引言 以前我们讨论的概率模型都是只含观测变量(observable variable), 即这些变量都是可以观测出来的,那么给定数据,可以直接使用极大似然估计的方法或者贝叶斯估计的方法:但是当模型 ...
- ITK学习笔记(八) ITK高斯混合模型 GMM EM
ITK学习笔记(八) ITK高斯混合模型 GMM EM 1.高斯混合模型 2.变分贝叶斯高斯混合 3.ITK中的GMM.EM 1.高斯混合模型 sklearn.mixture是一个能够学习高斯混合模型 ...
- 机器学习系列-强填EM算法在理论与工程之间的鸿沟(下)
前言 在上一篇文章<机器学习系列-强填EM算法在理论与工程之间的鸿沟(上)>中,小夕用优(恐)雅(怖)的数学理论来向读者解释了EM算法的工作原理.那么从工程角度出发的EM算法又是怎样的呢? ...
- 《机器学习系列-强填EM算法在理论与工程之间的鸿沟(上)》
小夕曾经问一位做机器学习理论的学姐:"学姐学姐,EM算法是什么呢?" 学姐回答:"EM算法啊,就是解决包含隐变量的参数估计问题." 小夕: 然后小夕去问一位做工 ...
- 机器学习(八)——在线学习、K-Means算法、混合高斯模型和EM算法
http://antkillerfarm.github.io/ 贝叶斯统计和规则化(续) p(θ|S)p(\theta\vert S)可由前面的公式得到. 假若我们要求期望值的话,那么套用求期望的公式 ...
最新文章
- Lintcode 655解题思路和c++代码
- iOS之深入解析GCD的底层原理
- scala 方法、函数定义小结
- 认识数据分析_认识您的最佳探索数据分析新朋友
- 精品书籍-go go go
- 第一阶段冲刺 第八天
- 修改 JSON 对象的值
- 使用Spark分析拉勾网招聘信息(四): 几个常用的脚本与图片分析结果
- Java之美[从菜鸟到高手演变]之Exception
- JavaScript 高级教程
- termux 安装python3教程_termux怎么安装python
- matlab里直线拟合,matlab如何拟合直线
- 格雷码编码器 c语言,格雷码编码器功能实现
- python编写tftp服务器
- android内存脚本教程,安卓内存
- Excel2013 破解(编辑工作表受保护)密码
- php是什么水处理药剂,国内目前最主要水处理药剂分类及特点
- 上计会青少年算法竞赛3月月赛
- LeetCode.287 Find the Duplicate Number
- 全民一起VBA实战篇 专题3 第一回 格式化规定各人迥异,Format函数一招摆平
热门文章
- mysql 解压版启动失败_解压版mysql 错误-mysql启动失败
- 【canvas教程】实现画布拖动、定点缩放,支持手势与鼠标滚轮操作
- HTML中bold是多少像素,bold是什么字体样式
- 关于联想电脑使用AS时的证书问题
- 各类木材强度_木材各种特性
- Object类中的常用方法
- 微信小程序之在线任务发布与接单平台(3)
- 2022年10月中国数据库排行榜:达梦冲刺IPO热度不减,PolarDB立足创新夺锦才
- 21小时精通微信小程序开发(仿猫眼电影App、微信小程序问答)
- 用sql改oracle表结构,SQL server 表结构转Oracle SQL脚本