混合高斯模型(Mixtures of Gaussians)

http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006924.html

这篇讨论使用期望最大化算法(Expectation-Maximization)来进行密度估计(density estimation)。

与k-means一样,给定的训练样本是,我们将隐含类别标签用表示。与k-means的硬指定不同,我们首先认为是满足一定的概率分布的,这里我们认为满足多项式分布,,其中有k个值{1,…,k}可以选取。而且我们认为在给定后,满足多值高斯分布,即。由此可以得到联合分布

整个模型简单描述为对于每个样例,我们先从k个类别中按多项式分布抽取一个,然后根据所对应的k个多值高斯分布中的一个生成样例,。整个过程称作混合高斯模型。注意的是这里的仍然是隐含随机变量。模型中还有三个变量。最大似然估计为。对数化后如下:

这个式子的最大值是不能通过前面使用的求导数为0的方法解决的,因为求的结果不是close form。但是假设我们知道了每个样例的,那么上式可以简化为:

这时候我们再来对进行求导得到:

就是样本类别中的比率。是类别为j的样本特征均值,是类别为j的样例的特征的协方差矩阵。

实际上,当知道后,最大似然估计就近似于高斯判别分析模型(Gaussian discriminant analysis model)了。所不同的是GDA中类别y是伯努利分布,而这里的z是多项式分布,还有这里的每个样例都有不同的协方差矩阵,而GDA中认为只有一个。

之前我们是假设给定了,实际上是不知道的。那么怎么办呢?考虑之前提到的EM的思想,第一步是猜测隐含类别变量z,第二步是更新其他参数,以获得最大的最大似然估计。用到这里就是:


循环下面步骤,直到收敛: {

(E步)对于每一个i和j,计算

(M步),更新参数:

}

在E步中,我们将其他参数看作常量,计算的后验概率,也就是估计隐含类别变量。估计好后,利用上面的公式重新计算其他参数,计算好后发现最大化最大似然估计时,值又不对了,需要重新计算,周而复始,直至收敛。

的具体计算公式如下:

这个式子利用了贝叶斯公式。

这里我们使用代替了前面的,由简单的0/1值变成了概率值。

对比K-means可以发现,这里使用了“软”指定,为每个样例分配的类别是有一定的概率的,同时计算量也变大了,每个样例i都要计算属于每一个类别j的概率。与K-means相同的是,结果仍然是局部最优解。对其他参数取不同的初始值进行多次计算不失为一种好方法。

虽然之前再K-means中定性描述了EM的收敛性,仍然没有定量地给出,还有一般化EM的推导过程仍然没有给出。下一篇着重介绍这些内容。

时间: 2024-11-07 12:44:21

混合高斯模型(Mixtures of Gaussians)的相关文章

混合高斯模型(Mixtures of Gaussians)和EM算法

混合高斯模型(Mixtures of Gaussians)和EM算法 主要内容: 1. 概率论预备知识 2. 单高斯模型 3. 混合高斯模型 4. EM算法 5. K-means聚类算法 一.概率论预备知识 1. 数学期望/均值.方差/标准差 设离散型随机变量X的分布律为 则称为X的数学期望或均值 设连续型随机变量X的概率密度函数(pdf)为 则其数学期望定义为: 随机变量X的方差: 随机变量X的标准差: 2. 正态分布.协方差 正态分布: 概率密度函数: 设(X,Y)为二维随机变量,若存在,则

【转载】混合高斯模型(Mixtures of Gaussians)和EM算法

混合高斯模型(Mixtures of Gaussians)和EM算法 这篇讨论使用期望最大化算法(Expectation-Maximization)来进行密度估计(density estimation). 与k-means一样,给定的训练样本是,我们将隐含类别标签用表示.与k-means的硬指定不同,我们首先认为是满足一定的概率分布的,这里我们认为满足多项式分布,,其中,有k个值{1,…,k}可以选取.而且我们认为在给定后,满足多值高斯分布,即.由此可以得到联合分布. 整个模型简单描述为对于每个

混合高斯模型的EM求解(Mixtures of Gaussians)及Python实现源码

今天为大家带来混合高斯模型的EM推导求解过程. 全部代码如下! def NDimensionGaussian(X_vector,U_Mean,CovarianceMatrix): #X=numpy.mat(X_vector) X=X_vector D=numpy.shape(X)[0] #U=numpy.mat(U_Mean) U=U_Mean #CM=numpy.mat(CovarianceMatrix) CM=CovarianceMatrix Y=X-U temp=Y.transpose()

斯坦福ML公开课笔记13A——混合高斯模型、混合贝叶斯模型

本文对应公开课的第13个视频,这个视频仍然和EM算法非常相关,第12个视频讲解了EM算法的基础,本视频则是在讲EM算法的应用.本视频的主要内容包括混合高斯模型(Mixture of Gaussian, MoG)的EM推导.混合贝叶斯模型(Mixture of Naive Bayes,MoNB)的EM推导.因子分析模型(Factor Analysis Model)及其EM求解.由于本章内容较多,故而分为AB两篇,本篇介绍至混合模型的问题. 很久没有写这个系列的笔记了,各种事情加各种懒导致的.虽然慢

混合高斯模型

高斯分布有很多优点并且普遍存在,但是,它是单峰函数,所以对于复杂的分布表达能力比较差,我们可以用多个高斯分布的线性组合来逼近这些复杂的分布.高斯混合概率分布可以写成高斯分布的线性叠加的形式,如下所示: 写的不错:混合高斯模型

混合高斯模型聚类

混合高斯模型简介 混合高斯模型基于多变量正态分布.类gmdistribution通过使用EM算法来拟合数据,它基于各观测量计算各成分密度的后验概率. 高斯混合模型常用于聚类,通过选择成分最大化后验概率来完成聚类.与k-means聚类相似,高斯混合模型也使用迭代算法计算,最终收敛到局部最优.高斯混合模型在各类尺寸不同.聚类间有相关关系的的时候可能比k-means聚类更合适.使用高斯混合模型的聚类属于软聚类方法(一个观测量按概率属于各个类,而不是完全属于某个类),各点的后验概率提示了各数据点属于各个

EM算法与混合高斯模型

很早就想看看EM算法,这个算法在HMM(隐马尔科夫模型)得到很好的应用.这个算法公式太多就手写了这部分主体部分. 好的参考博客:最大似然估计到EM,讲了具体例子通熟易懂. JerryLead博客很不错 混合高斯模型算法

OpenCV运动目标检测——帧间差,混合高斯模型方法

一.简单的帧间差方法 帧差法是在连续的图像序列中两个或三个相邻帧间采用基于像素的时间差分并且闽值化来提取图像中的运动区域. 代码: int _tmain(int argc, _TCHAR* argv[]) { VideoCapture capture("bike.avi"); if(!capture.isOpened()) return -1; double rate = capture.get(CV_CAP_PROP_FPS); int delay = 1000/rate; Mat

混合高斯模型算法(转)

下面介绍一下几种典型的机器算法 首先第一种是高斯混合模型算法: 高斯模型有单高斯模型(SGM)和混合高斯模型(GMM)两种. (1)单高斯模型: 为简单起见,阈值t的选取一般靠经验值来设定.通常意义下,我们一般取t=0.7-0.75之间. 二维情况如下所示: (2)混合高斯模型: 对于(b)图所示的情况,很明显,单高斯模型是无法解决的.为了解决这个问题,人们提出了高斯混合模型(GMM),顾名思义,就是数据可以看作是从数个高 斯分布中生成出来的.虽然我们可以用不同的分布来随意地构造 XX Mixt