高斯混合模型详解聚类的方法有很多种,k-means要数最简单的一种聚类方法了,其大致思想就是把数据分为多个堆,每个堆就是一类。每个堆都有一个聚类中心(学习的结果就是获得这k个聚类中心),这个中心就是这个类中所有数据的均值,而这个堆中所有的点到该类的聚类中心都小于到其他类的聚类中心(分类的过程就是将未知数据对这k个聚类中心进行比较的过程,离谁近就是谁)。其实k-means算的上最直观、最方便理解的一种聚类方式了,原则就是把最像的数据分在一起,而“像”这个定义由我们来完成,比如说欧式距离的最小,等等。想对k-means的具体算法过程了解的话,请看这里。而在这篇博文里,我要介绍的是另外一种比较流行的聚类方法----GMM(GaussianMixtureModel)。GMM和k-means其实是十分相似的,区别仅仅在于对GMM来说,我们引入了概率。说到这里,我想先补充一点东西。统计学习的模型有两种,一种是概率模型,一种是非概率模型。所谓概率模型,就是指我们要学习的模型的形式是P(Y|X),这样在分类的过程中,我们通过未知数据X可以获得Y取值的一个概率分布,也就是训练后模型得到的输出不是一个具体的值,而是一系列值的概率(对应于分类问题来说,就是对应于各个不同的类的概率),然后我们可以选取概率最大的那个类作为判决对象(算软分类softassignment)。而非概率模型,就是指我们学习的模型是一个决策函数Y=f(X),输入数据X是多少就可以投影得到唯一的一个Y,就是判决结果(算硬分类hardassignment)。回到GMM,学习的过程就是训练出几个概率分布,所谓混合高斯模型就是指对样本的概率密度分布进行估计,而估计的模型是几个高斯模型加权之和(具体是几个要在模型训练前建立好)。每个高斯模型就代表了一个类(一个Cluster)。对样本中的数据分别在几个高斯模型上投影,就会分别得到在各个类上的概率。然后我们可以选取概率最大的类所为判决结果。得到概率有什么好处呢?我们知道人很聪明,就是在于我们会用各种不同的模型对观察到的事物和现象做判决和分析。当你在路上发现一条狗的时候,你可能光看外形好像邻居家的狗,又更像一点点女朋友家的狗,你很难判断,所以从外形上看,用软分类的方法,是女朋友家的狗概率51%,是邻居家的狗的概率是49%,属于一个易混淆的区域内,这时你可以再用其它办法进行区分到底是谁家的狗。而如果是硬分类的话,你所判断的就是女朋友家的狗,没有“多像”这个概念,所以不方便多模型的融合。从中心极限定理的角度上看,把混合模型假设为高斯的是比较合理的,当然也可以根据实际数据定义成任何分布的MixtureModel,不过定义为高斯的在计算上有一些方便之处,另外,理论上可以通过增加Model的个数,用GMM近似任何概率分布。混合高斯模型的定义为:其中K为模型的个数,πk为第k个高斯的权重,则为第k个高斯的概率密度函数,其均值为μk,方差为σk。我们对此概率密度的估计就是要求πk、μk和σk各个变量。当求出的表达式后,求和式的各项的结果就分别代表样本x属于各个类的概率。在做参数估计的时候,常采用的方法是最大似然。最大似然法就是使样本点在估计的概率密度函数上的概率值最大。由于概率值一般都很小,N很大的时候这个联乘的结果非常小,容易造成浮点数下溢。所以我们通常取log,将目标改写成:也就是最大化log-likelyhoodfunction,完整形式则为:一般用来做参数估计的时候,我们都是通过对待求变量进行求导来求极值,在上式中,log函数中又有求和,你想用求导的方法算的话方程组将会非常复杂,所以我们不好考虑用该方法求解(没有闭合解)。可以采用的求解方法是EM算法——将求解分为两步:第一步是假设我们知道各个高斯模型的参数(可以初始化一个,或者基于上一步迭代结果),去估计每个高斯模型的权值;第二步是基于估计的权值,回过头再去确定高斯模型的参数。重复这两个步骤,直到波动很小,近似达到极值(注意这里是个极值不是最值,EM算法会陷入局部最优)。具体表达如下:1、对于第i个样本xi来说,它由第k个model生成的概率为:在这一步,我们假设高斯模型的参数和是已知的(由上一步迭代而来或由初始值决定)。(Estep)(Mstep)3、重复上述两步骤直到算法收敛(这个算法一定是收敛的,至于具体的证明请回溯到EM算法中去,而我也没有具体关注,以后补上)。最后总结一下,用GMM的优点是投影后样本点不是得到一个确定的分类标记,而是得到每个类的概率,这是一个重要信息。GMM每一步迭代的计算量比较大,大于k-means。GMM的求解办法基于EM算法,因此有可能陷入局部极值,这和初始值的选取十分相关了。GMM不仅可以用在聚类上,也可以用在概率密度估计上。第二篇:高斯混合模型的介绍高斯模型就是用高斯概率密度函数(正态分布曲线)精确地量化事物,将一个事物分解为若干的基于高斯概率密度函数(正态分布曲线)形成的模型。对图像背景建立高斯模型的原理及过程:图像灰度直方图反映的是图像中某个灰度值出现的频次,也可以以为是图像灰度概率密度的估计。如果图像所包含的目标区域和背景区域相差比较大,且背景区域和目标区域在灰度上有一定的差异,那么该图像的灰度直方图呈现双峰-谷形状,其中一个峰对应于目标,另一个峰对应于背景的中心灰度。对于复杂的图像,尤其是医学图像,一般是多峰的。通过将直方图的多峰特性看作是多个高斯分布的叠加,可以解决图像的分割问题。在智能监控系统中,对于运动目标的检测是中心内容,而在运动目标检测提取中,背景目标对于目标的识别和跟踪至关重要。而建模正是背景目标提取的一个重要环节。我们首先要提起背景和前景的概念,前景是指在假设背景为静止的情况下,任何有意义的运动物体即为前景。建模的基本思想是从当前帧中提取前景,其目的是使背景更接近当前视频帧的背景。即利用当前帧和视频序列中的当前背景帧进行加权平均来更新背景,但是由于光照突变以及其他外界环境的影响,一般的建模后的背景并非十分干净清晰,而高斯混合模型(GMM,Gaussianmixturemodel)是建模最为成功的方法之一,同时GMM可以用在监控视频索引与检索。混合高斯模型使用K(基本为3到5个)个高斯模型来表征图像中各个像素点的特征,在新一帧图像获得后更新混合高斯模型,用当前图像中的每个像素点与混合高斯模型匹配,如果成功则判定该点为背景点,否则为前景点。通观整个高斯模型,他主要是由方差和均值两个参数决定,对均值和方差的学习,采取不同的学习机制,将直接影响到模型的稳定性、精确性和收敛性。由于我们是对运动目标的背景提取建模,因此需要对高斯模型中方差和均值两个参数实时更新。为提高模型的学习能力,改进方法对均值和方差的更新采用不同的学习率;为提高在繁忙的场景下,大而慢的运动目标的检测效果,引入权值均值的概念,建立背景图像并实时更新,然后结合权值、权值均值和背景图像对像素点进行前景和背景的分类。具体更新公式如下:建模过程中,我们需要对混合高斯模型中的方差、均值、权值等一些参数初始化,并通过这些参数求出建模所需的数据,如马兹距离。在初始化过程中,一般我们将方差设置的尽量大些(如15),而权值则尽量小些(如0.001)。这样设置是由于初始化的高斯模型是一个并不准确,可能的模型,我们需要不停的缩小他的范围,更新他的参数值,从而得到最可能的高斯模型,将方差设置大些,就是为了将尽可能多的像素包含到一个模型里面,从而获得最有可能的模型。多维高斯分布讲解高斯分布高斯分布:1维高斯分布公式:多维高斯分布公式:对于1维的来说是期望,是方差;对于多维来说D表示X的维数,表示D*D的协方差矩阵,定义为,为该协方差的行列式的值。代码如下:m=[01]';S=eye(2);x1=[0.21.3]';x2=[2.2-1.3]';pg1=comp_gauss_dens_val(m,S,x1)pg2=comp_gauss_dens_val(m,S,x2)其中comp_gauss_dens_val函数文件的代码如下:function[z]=comp_gauss_dens_val(m,S,x)[l,c]=size(m);z=(1/((2*pi)^(l/2)*det(S)^0.5))*exp(-0.5*(x-m)'*inv(S)*(x-m));题目大致意思就是判断x是属于w1还是w2?代码如下:P1=0.5;P2=0.5;m1=[11]';m2=[33]';S=eye(2);x=[1.81.8]';p1=P1*comp_gauss_dens_val(m1,S,x)p2=P2*comp_gauss_dens_val(m2,S,x)题目大致意思就是:给出正态分布的期望和方差,构造出一些服从这个分布的数据点代码如下:%Generatethefirstdataset(case#1)randn('seed',0);m=[00]';S=[10;01];N=500;X=mvnrnd(m,S,N)';%Plotthefirstdatasetfigure(1),plot(X(1,:),X(2,:),'.');figure(1),axisequalfigure(1),axis([-77-77])%Generateandplottheseconddataset(case#2)m=[00]';S=[0.20;00.2];N=500;X=mvnrnd(m,S,N)';figure(2),plot(X(1,:),X(2,:),'.');figure(2),axisequalfigure(2),axis([-77-77])%Generateandplotthethirddataset(case#3)m=[00]';S=[20;02];N=500;X=mvnrnd(m,S,N)';figure(3),plot(X(1,:),X(2,:),'.');figure(3),axisequalfigure(3),axis([-77-77])%Generateandplotthefourthdataset(case#4)m=[00]';S=[0.20;02];N=500;X=mvnrnd(m,S,N)';figure(4),plot(X(1,:),X(2,:),'.');figure(4),axisequalfigure(4),axis([-77-77])%Generateandplotthefifthdataset(case#5)m=[00]';S=[20;00.2];N=500;X=mvnrnd(m,S,N)';figure(5),plot(X(1,:),X(2,:),'.');figure(5),axisequalfigure(5),axis([-77-77])%Generateandplotthesixthdataset(case#6)m=[00]';S=[10.5;0.51];N=500;X=mvnrnd(m,S,N)';figure(6),plot(X(1,:),X(2,:),'.');figure(6),axisequalfigure(6),axis([-77-77])%Generateandplottheseventhdataset(case#7)m=[00]';S=[.30.5;0.52];N=500;X=mvnrnd(m,S,N)';figure(7),plot(X(1,:),X(2,:),'.');figure(7),axisequalfigure(7),axis([-77-77])%Generateandplottheeighthdataset(case#8)m=[00]';S=[.3-0.5;-0.52];N=500;X=mvnrnd(m,S,N)';figure(8),plot(X(1,:),X(2,:),'.');figure(8),axisequalfigure(8),axis([-77-77])即生成了8副图像注:1、协方差在概率论和统计学中,协方差用于衡量两个变量的总体误差。而方差是协方差的一