GMM&K-means&EM

转载 2013年12月02日 11:16:13

本文就高斯混合模型(GMM,Gaussian Mixture Model)参数如何确立这个问题,详细讲解期望最大化(EM,Expectation Maximization)算法的实施过程。

单高斯分布模型GSM

多维变量X服从高斯分布时,它的概率密度函数PDF为:(公式有误,应该是(2pi)^n)

x是维度为d的列向量,u是模型期望,Σ是模型方差。在实际应用中u通常用样本均值来代替,Σ通常用样本方差来代替。很容易判断一个样x本是否属于类别C。因为每个类别都有自己的u和Σ,把x代入(1)式,当概率大于一定阈值时我们就认为x属于C类。

从几何上讲,单高斯分布模型在二维空间应该近似于椭圆,在三维空间上近似于椭球。遗憾的是在很多分类问题中,属于同一类别的样本点并不满足“椭圆”分布的特性。这就引入了高斯混合模型。

高斯混合模型GMM

GMM认为数据是从几个GSM中生成出来的,即

K需要事先确定好,就像K-means中的K一样。πk是权值因子。其中的任意一个高斯分布N(x;ukk)叫作这个模型的一个component。这里有个问题,为什么我们要假设数据是由若干个高斯分布组合而成的,而不假设是其他分布呢?实际上不管是什么分布,只K取得足够大,这个XX Mixture Model就会变得足够复杂,就可以用来逼近任意连续的概率密度分布。只是因为高斯函数具有良好的计算性能,所GMM被广泛地应用。

GMM是一种聚类算法,每个component就是一个聚类中心。即在只有样本点,不知道样本分类(含有隐含变量)的情况下,计算出模型参数(π,u和Σ)----这显然可以用EM算法来求解。再用训练好的模型去差别样本所属的分类,方法是:step1随机选择K个component中的一个(被选中的概率是πk);step2把样本代入刚选好的component,判断是否属于这个类别,如果不属于则回到step1。

样本分类已知情况下的GMM

当每个样本所属分类已知时,GMM的参数非常好确定,直接利用Maximum Likelihood。设样本容量为N,属于K个分类的样本数量分别是N1,N2,...,Nk,属于第k个分类的样本集合是L(k)。

样本分类未知情况下的GMM

有N个数据点,服从某种分布Pr(x;θ),我们想找到一组参数θ,使得生成这些数据点的概率最大,这个概率就是

称为似然函数(Lilelihood Function)。通常单个点的概率很小,连乘之后数据会更小,容易造成浮点数下溢,所以一般取其对数,变成

称为log-likelihood function。

GMM的log-likelihood function就是:

这里每个样本xi所属的类别zk是不知道的。Z是隐含变量。

我们就是要找到最佳的模型参数,使得(6)式所示的期望最大,“期望最大化算法”名字由此而来。

EM法求解

EM要求解的问题一般形式是

Y是隐含变量。

我们已经知道如果数据点的分类标签Y是已知的,那么求解模型参数直接利用Maximum Likelihood就可以了。EM算法的基本思路是:随机初始化一组参数θ(0),根据后验概率Pr(Y|X;θ)来更新Y的期望E(Y),然后用E(Y)代替Y求出新的模型参数θ(1)。如此迭代直到θ趋于稳定。

E-Step E就是Expectation的意思,就是假设模型参数已知的情况下求隐含变量Z分别取z1,z2,...的期望,亦即Z分别取z1,z2,...的概率。在GMM中就是求数据点由各个 component生成的概率。

注意到我们在Z的后验概率前面乘以了一个权值因子αk,它表示在训练集中数据点属于类别zk的频率,在GMM中它就是πk

 M-Step M就是Maximization的意思,就是用最大似然的方法求出模型参数。现在我们认为上一步求出的r(i,k)就是“数据点xi由component k生成的概率”。根据公式(3),(4),(5)可以推出:

与K-means比较

相同点:都是可用于聚类的算法;都需要指定K值。都用到了EM的思想。

不同点:GMM可以给出一个样本属于某类的概率是多少。

原文来自:博客园(华夏35度)http://www.cnblogs.com/zhangchaoyang 作者:Orisun(本文作了部分修改)

EM算法(期望最大化)——从EM算法角度理解K-Means与GMM的区别

K-Means算法简介K-Means算法是一种常用的聚类算法,它认为由一组数据点构成的一个聚类中,聚类内部点之间的距离应该小于数据点与聚类外部的点之间的距离。假设我们有一组数据集{x1,...,xN}...

GMM与K-means的那些事

GMM算法GMM 与 K-meansGMM 模型GMM 聚类参数与似然函数算法流程Matlab 实现Python版本代码GMM与K-means对比关于GMM算法中奇异矩阵的问题 ...

聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut

聚类算法是ML中一个重要分支,一般采用unsupervised learning进行学习,本文根据常见聚类算法分类讲解K-Means, K-Medoids, GMM, Spectral cluster...

聚类1-K-means-EM算法

戏说k-means
  • lvhao92
  • lvhao92
  • 2016年03月03日 16:17
  • 950

EM算法在K-Means中的运用

EM算法在K-Means中的运用

机器学习 cs229学习笔记2 (k-means,EM & Mixture of Gaussians)

(all is based on stanford's opencourse cs229 lecture 12) 首先介绍的是聚类算法中最简单的K-Means算法 ////////////////...

斯坦福ML公开课笔记12——K-Means、混合高斯分布、EM算法

公开课系列的pdf文档已经上传到csdn资源,下载请猛击这里。 本文对应斯坦福ML公开课的第12个视频,第12个视频与前面相关性并不大,开启了一个新的话题——无监督学习。主要内容包括无监督学习中的K...

k-means与EM算法小结

EM算法像是k-means的应用场景,比如双峰分布的数据,k-means方法,将其看成2-means聚类的方法处理场景。         k-means算法,也被称为k-平均或k-均值,是一种广泛使用...

K-means与EM的关系

K-means与EM的关系,首先回到初始问题,我们目的是将样本分成k个类,其实说白了就是求每个样例x的隐含类别y,然后利用隐含类别将x归类。由于我们事先不知道类别y,那么我们首先可以对每个样例假定一个...
  • shulixu
  • shulixu
  • 2016年10月31日 20:57
  • 887

K-means学习进阶以及它与EM的关系

K-means聚类算法      K-means也是聚类算法中最简单的一种了,但是里面包含的思想却是不一般。最早我使用并实现这个算法是在学习韩爷爷那本数据挖掘的书中,那本书比较注重应用。看了And...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GMM&K-means&EM
举报原因:
原因补充:

(最多只允许输入30个字)