完整word版高斯混合模型聚类.docx

上传人:b****1 文档编号:2151509 上传时间:2023-05-02 格式:DOCX 页数:16 大小:324.42KB
下载 相关 举报
完整word版高斯混合模型聚类.docx_第1页
第1页 / 共16页
完整word版高斯混合模型聚类.docx_第2页
第2页 / 共16页
完整word版高斯混合模型聚类.docx_第3页
第3页 / 共16页
完整word版高斯混合模型聚类.docx_第4页
第4页 / 共16页
完整word版高斯混合模型聚类.docx_第5页
第5页 / 共16页
完整word版高斯混合模型聚类.docx_第6页
第6页 / 共16页
完整word版高斯混合模型聚类.docx_第7页
第7页 / 共16页
完整word版高斯混合模型聚类.docx_第8页
第8页 / 共16页
完整word版高斯混合模型聚类.docx_第9页
第9页 / 共16页
完整word版高斯混合模型聚类.docx_第10页
第10页 / 共16页
完整word版高斯混合模型聚类.docx_第11页
第11页 / 共16页
完整word版高斯混合模型聚类.docx_第12页
第12页 / 共16页
完整word版高斯混合模型聚类.docx_第13页
第13页 / 共16页
完整word版高斯混合模型聚类.docx_第14页
第14页 / 共16页
完整word版高斯混合模型聚类.docx_第15页
第15页 / 共16页
完整word版高斯混合模型聚类.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

完整word版高斯混合模型聚类.docx

《完整word版高斯混合模型聚类.docx》由会员分享,可在线阅读,更多相关《完整word版高斯混合模型聚类.docx(16页珍藏版)》请在冰点文库上搜索。

完整word版高斯混合模型聚类.docx

完整word版高斯混合模型聚类

高斯混合模型详解

聚类的方法有很多种,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.2 1.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)

 

题目大致意思就是:

给出正态分布的期望和方差,构造出一些服从这个分布的数据点

代码如下:

%Generate the first dataset (case #1)

randn('seed',0);

m=[0 0]';

S=[1 0;0 1];

N=500;

X=mvnrnd(m,S,N)';

%Plotthefirstdataset

figure

(1),plot(X(1,:

),X(2,:

),'.');

figure

(1),axisequal

figure

(1),axis([-77-77])

% Generate and plot the second dataset (case #2)

m=[0 0]';

S=[0.2 0;0 0.2];

N=500;

X = mvnrnd(m,S,N)';

figure

(2), plot(X(1,:

),X(2,:

),'.');

figure

(2), axis equal

figure

(2), axis([-7 7 -7 7])

 

% Generate and plot the third dataset (case #3)

m=[0 0]';

S=[2 0;0 2];

N=500;

X = mvnrnd(m,S,N)';

figure(3), plot(X(1,:

),X(2,:

),'.');

figure(3), axis equal

figure(3), axis([-7 7 -7 7])

 

% Generate and plot the fourth dataset (case #4)

m=[0 0]';

S=[0.2 0;0 2];

N=500;

X = mvnrnd(m,S,N)';

figure(4), plot(X(1,:

),X(2,:

),'.');

figure(4), axis equal

figure(4), axis([-7 7 -7 7])

 

% Generate and plot the fifth dataset (case #5)

m=[0 0]';

S=[2 0;0 0.2];

N=500;

X = mvnrnd(m,S,N)';

figure(5), plot(X(1,:

),X(2,:

),'.');

figure(5), axis equal

figure(5), axis([-7 7 -7 7])

 

% Generate and plot the sixth dataset (case #6)

m=[0 0]';

S=[1 0.5;0.5 1];

N=500;

X = mvnrnd(m,S,N)';

figure(6), plot(X(1,:

),X(2,:

),'.');

figure(6), axis equal

figure(6), axis([-7 7 -7 7])

 

% Generate and plot the seventh dataset (case #7)

m=[0 0]';

S=[.3 0.5;0.5 2];

N=500;

X = mvnrnd(m,S,N)';

figure(7), plot(X(1,:

),X(2,:

),'.');

figure(7), axis equal

figure(7), axis([-7 7 -7 7])

 

% Generate and plot the eighth dataset (case #8)

m=[0 0]';

S=[.3 -0.5;-0.5 2];

N=500;

X = mvnrnd(m,S,N)';

figure(8), plot(X(1,:

),X(2,:

),'.');

figure(8), axis equal

figure(8), axis([-7 7 -7 7])

即生成了8副图像

注:

1、协方差

在概率论和统计学中,协方差用于衡量两个变量的总体误差。

而方差是协方差的一种特殊情况,即当两个变量是相同的情况。

期望值分别为E[X]与E[Y]的两个实数随机变量X与Y之间的协方差定义为:

直观上来看,协方差表示的是两个变量总体误差的期望。

如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值时另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值;如果两个变量的变化趋势相反,即其中一个变量大于自身的期望值时另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。

如果X与Y是统计独立的,那么二者之间的协方差就是0,因为两个独立的随机变量满足E[XY]=E[X]E[Y]。

但是,反过来并不成立。

即如果X与Y的协方差为0,二者并不一定是统计独立的。

协方差Cov(X,Y)的度量单位是X的协方差乘以Y的协方差。

而取决于协方差的相关性,是一个衡量线性独立的无量纲的数。

协方差为0的两个随机变量称为是不相关的。

2、期望

定义1:

按照定义,离散随机变量的一切可能值与其对应的概率P的乘积之和称为数学期望,记为咐.如果随机变量只取得有限个值:

x,、π

随机变量的数学期望值

在概率论和统计学中,一个离散性随机变量的期望值(或数学期望、或均值,亦简称期望)是试验中每次可能结果的概率乘以其结果的总和。

换句话说,期望值是随机试验在同样的机会下重复多次的结果计算出的等同“期望”的平均值。

需要注意的是,期望值并不一定等同于常识中的“期望”——“期望值”也许与每一个结果都不相等。

(换句话说,期望值是该变量输出值的平均数。

期望值并不一定包含于变量的输出值集合里。

单独数据的数学期望值算法

对于数学期望的定义是这样的。

数学期望

E(X)=X1*p(X1)+X2*p(X2)+……+Xn*p(Xn)

X1,X2,X3,……,Xn为这几个数据,p(X1),p(X2),p(X3),……p(Xn)为这几个数据的概率函数。

在随机出现的几个数据中p(X1),p(X2),p(X3),……p(Xn)概率函数就理解为数据X1,X2,X3,……,Xn出现的频率f(Xi).则:

E(X)=X1*p(X1)+X2*p(X2)+……+Xn*p(Xn)=X1*f1(X1)+X2*f2(X2)+……+Xn*fn(Xn)

很容易证明E(X)对于这几个数据来说就是他们的算术平均值。

3、浅谈协方差矩阵

今天看论文的时候又看到了协方差矩阵这个破东西,以前看模式分类的时候就特困扰,没想到现在还是搞不清楚,索性开始查协方差矩阵的资料,恶补之后决定马上记录下来,嘿嘿~本文我将用自认为循序渐进的方式谈谈协方差矩阵。

统计学的基本概念

学过概率统计的孩子都知道,统计里最基本的概念就是样本的均值,方差,或者再加个标准差。

首先我们给你一个含有n个样本的集合

,依次给出这些概念的公式描述,这些高中学过数学的孩子都应该知道吧,一带而过。

均值:

标准差:

方差:

很显然,均值描述的是样本集合的中间点,它告诉我们的信息是很有限的,而标准差给我们描述的则是样本集合的各个样本点到均值的距离之平均。

以这两个集合为例,[0,8,12,20]和[8,9,11,12],两个集合的均值都是10,但显然两个集合差别是很大的,计算两者的标准差,前者是8.3,后者是1.8,显然后者较为集中,故其标准差小一些,标准差描述的就是这种“散布度”。

之所以除以n-1而不是除以n,是因为这样能使我们以较小的样本集更好的逼近总体的标准差,即统计上所谓的“无偏估计”{这个要用到统计学的知识,因为这个标准差是样本的标准差是对总体的估计,而对总体的估计的要求当中,有个标准是无偏性,除以n-1是无偏估计,而除以n不是。

所以都用n-1,具体证明可参看数理统计的教材,}。

而方差则仅仅是标准差的平方。

为什么需要协方差?

上面几个统计量看似已经描述的差不多了,但我们应该注意到,标准差和方差一般是用来描述一维数据的,但现实生活我们常常遇到含有多维数据的数据集,最简单的大家上学时免不了要统计多个学科的考试成绩。

面对这样的数据集,我们当然可以按照每一维独立的计算其方差,但是通常我们还想了解更多,比如,一个男孩子的猥琐程度跟他受女孩子欢迎程度是否存在一些联系啊,嘿嘿~协方差就是这样一种用来度量两个随机变量关系的统计量,我们可以仿照方差的定义:

来度量各个维度偏离其均值的程度,标准差可以这么来定义:

协方差的结果有什么意义呢?

如果结果为正值,则说明两者是正相关的(从协方差可以引出“相关系数”的定义),也就是说一个人越猥琐就越受女孩子欢迎,嘿嘿,那必须的~结果为负值就说明负相关的,越猥琐女孩子越讨厌,可能吗?

如果为0,也是就是统计上说的“相互独立”。

从协方差的定义上我们也可以看出一些显而易见的性质,如:

协方差多了就是协方差矩阵

上一节提到的猥琐和受欢迎的问题是典型二维问题,而协方差也只能处理二维问题,那维数多了自然就需要计算多个协方差,比如n维的数据集就需要计算

个协方差,那自然而然的我们会想到使用矩阵来组织这些数据。

给出协方差矩阵的定义:

这个定义还是很容易理解的,我们可以举一个简单的三维的例子,假设数据集有

三个维度,则协方差矩阵为

可见,协方差矩阵是一个对称的矩阵,而且对角线是各个维度上的方差。

Matlab协方差实战

上面涉及的内容都比较容易,协方差矩阵似乎也很简单,但实战起来就很容易让人迷茫了。

必须要明确一点,协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的。

这个我将结合下面的例子说明,以下的演示将使用Matlab,为了说明计算原理,不直接调用Matlab的cov函数(蓝色部分为Matlab代码)。

首先,随机产生一个10*3维的整数矩阵作为样本集,10为样本的个数,3为样本的维数。

1MySample=fix(rand(10,3)*50)

根据公式,计算协方差需要计算均值,那是按行计算均值还是按列呢,我一开始就老是困扰这个问题。

前面我们也特别强调了,协方差矩阵是计算不同维度间的协方差,要时刻牢记这一点。

样本矩阵的每行是一个样本,每列为一个维度,所以我们要按列计算均值。

为了描述方便,我们先将三个维度的数据分别赋值:

1dim1=MySample(:

1);2dim2=MySample(:

2);3dim3=MySample(:

3);

计算dim1与dim2,dim1与dim3,dim2与dim3的协方差:

 1sum((dim1-mean(dim1)).*(dim2-mean(dim2)))/(size(MySample,1)-1)%得到 74.53332sum((dim1-mean(dim1)).*(dim3-mean(dim3)))/(size(MySample,1)-1)%得到 -10.08893sum((dim2-mean(dim2)).*(dim3-mean(dim3)))/(size(MySample,1)-1)%得到 -106.4000

搞清楚了这个后面就容易多了,协方差矩阵的对角线就是各个维度上的方差,下面我们依次计算:

1std(dim1)^2%得到 108.32222std(dim2)^2%得到 260.62223std(dim3)^2%得到  94.1778

这样,我们就得到了计算协方差矩阵所需要的所有数据,调用Matlab自带的cov函数进行验证:

1cov(MySample)

把我们计算的数据对号入座,是不是一摸一样?

Update:

今天突然发现,原来协方差矩阵还可以这样计算,先让样本矩阵中心化,即每一维度减去该维度的均值,使每一维度上的均值为0,然后直接用新的到的样本矩阵乘上它的转置,然后除以(N-1)即可。

其实这种方法也是由前面的公式通道而来,只不过理解起来不是很直观,但在抽象的公式推导时还是很常用的!

同样给出Matlab代码实现:

1X=MySample-repmat(mean(MySample),10,1);   %中心化样本矩阵,使各维度均值为02C=(X'*X)./(size(X,1)-1);

总结

理解协方差矩阵的关键就在于牢记它计算的是不同维度之间的协方差,而不是不同样本之间,拿到一个样本矩阵,我们最先要明确的就是一行是一个样本还是一个维度,心中明确这个整个计算过程就会顺流而下,这么一来就不会迷茫了~

P.S.写论文要选Latex,在wordpress里编辑公式还得用Latex,用Latex还真对得起咱学计算机这张脸~

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2