Clustering:Gaussian Mixture Model and Expectation Maximization
在统计学中,Mixture Model是个概率模型,利用概率密度来对数据分簇,当然Mixture Model不只是可以用来分簇,只是我们在这里使用Mixture Model来进行分簇,借此来学习这个概率模型。
Mixture Model通常和概率分布(Probability Distribution)有关,这个概率分布就比较多,其中使用较多的是指数系(Exponential Family)分布http://en.wikipedia.org/wiki/Exponential_family,包括 Bernoulli、 Poisson、 Laplace、 Normal、 Gamma等。通常来说,有限维混合模型包括以下几个部分:
- 观察数据N,每个数据都认为是K个概率模型的混合结果,这些模型是一致的。
- K个Component,表明数据是由这些个概率混合生成
- K个参数,表明K个参数的估计值,注意这里的K表明的参数是向量形式的。后面会介绍参数个数和K的关系。
有了这些概念,就可以根据数据和假设的概率分布来进行数据处理了。
本文学习的Gaussian Mixture Model则是很常用的一种数据假设分布,即假定我们得到的数据模型符合Gaussian Distribution。将GMM用来分簇,则是将观察数据点赋给给定的所有的簇,同时给出赋给所有簇的概率。根据前面的学习,这个是Fuzzy Clustering,又可以称为是Soft Assignment。
得到概率的好处多多,它比简单的给出结果容纳的信息要丰富。概率表明对结论的把握程度,把握程度越大,概率越大。我们可以根据参数,不断的调整,最终选择把握最大的那个结果。举个例子:邮件分类中我们需要区分垃圾邮件和正常工作邮件,对于识别度高、容易分辨的情况能够自动区分出来(如有较大的把握80%来确定这封邮件是垃圾邮件);但是对于比较难以分辨的情况:49%的可能性认为是正常邮件,这种情况下很有可能并非如此,我们需要通过人工辨识来决定邮件类型。这就是概率的好处,包含了远大于简单给出0、1结果的信息。
Gaussian Distribution的合理性假设不用多说,就是说我们的数据类型是在服从Gaussian Distribution的情况下获得的。当然这个Mixture Model的假设也可以使用其它概率分布,构造出各种分布模型,但是最常用的假设还是GMM。Mixture Model本身也是可以变得任意复杂,通过增加模型的个数,可以任意逼近连续的概率密度分布。
GMM由K个Gaussian分布组成,其中每个Gaussian函数被称为一个Component,这些Gaussian Component线性组合在一起就组成了GMM的概率密度函数:
根据上面的概率密度函数,实际上观察到的数据是K个概率密度函数综合的结果。对于其中任何一个数据点的记录,先从K个Component中随机选择,每个Component被选中的概率就是\pai_k;选中Component之后,就可以化为单个Gaussian分布,转化为简单的问题。
使用来进行Clustering,就是假设数据服从K个Gaussian Distribution组成的Component,其中K就是Cluster。根据数据来推算概率密度被称为是密度估计(Density Estimation),当我们假设概率密度函数的形式,而估计其中的概率密度参数的过程被称为是(参数估计)。
在GMM中,参数估计就是确定\pi_k、\miu_k、\sigma_k这组参数,使得这组参数确定的概率分布锁生成的概率最大,等同于计算数据点的概率乘积,这个乘积称作是似然函数(Likelihood Function)。这种乘积在计算过程中容易溢出,并且比容易推导和计算,我们通常会对乘积取对数,得到log-likelihood-function。GMM的log似然函数如下:
在这个似然函数中,有求和求对数求积,我们没有办法直接求得最大值。我们可以采用类似K-Means方法中的两步,通过迭代方法对这个函数求极值:
1:估计数据由每个Component组成的概率:对于每个数据来说,它由第k个Component生成的概率为:
上式中的\gamma(i,k)就是我们需要估计的值,我们采用迭代方法求值,可以再计算上式过程中假定\pi_k、\miu_k、\sigma_k已知,可以使用上次迭代的结果或者是初始设定值。
2:估计Component的参数:上式得到的 表示数据xi由Component k生成的概率。考虑所有的数据点,可以看做Component k生成了\gamma(i,k)*xi这些点。由于每个Component都是标准的Gaussian分布,可以很容易的求出来最大似然对应的参数值。
并且:
其中:
3:重复迭代,直到似然函数的值收敛为止。
上面的算法是按照迭代的方式,按照K-Means算法的依据,是可以收敛到极值的,这个值不确定是局部最小还是全局最小。并且该算法的理论依据不明确。如果想深入了解下GMM的求解过程,可以参考下面几篇文章:
1:http://read.pudn.com/downloads154/ebook/678491/gmm%E5%8F%B0%E6%B9%BE.pdf
2:PRML第九章
3:Andrew Ng教授的Machine Learning课程
4:http://blog.pluskid.org/?p=39
其中推荐大家学习的是第一个pdf,这个PDF中第一部分介绍了单一高斯密度函数的参数估计法,第二部分介绍了高斯混合密度函数的参数估计,并且用K=3作为示例。
我们在求解GMM模型时,假定K个Gaussian Distribution生成的观察数据。这个假设是个隐含变量,如果引入这个隐含变量,就可以将复杂问题简单化,直接求解最大似然解。Expectation-Maximization(EM)算法刚好能用迭代的方式来解决这类包含隐藏变量的最大似然估计(Maximum Likelihood Estimation)问题。
EM算法的推算结果和上面提到的结果相同,但是这个EM算法是由理论推导依据的,可以从理论上证明类GMM模型的优化问题。上面的迭代过程其实类似于EM算法的Expectation-Step和Maximization-Step,在上面提到的第一个PDF的第三部分详细解释了这个过程,感觉比Andrew Ng教授的讲解更为清楚,真正理解EM算法之后,会发现他们讲解的内容其实是相同的,只是着手点有点不一样。
本文这里就不再重复编辑公式了,仔细研读第一篇PDF和Andrew Ng教授的课程,掌握GMM和EM算法是不成问题的,其它再找些文献扩展阅读下。
最后使用PRML书里的一张图结束本文,话说牛人就是牛逼,深奥难懂的理论通过一张图就可以将其精髓表达的淋漓尽致,我第一印象看到这张图时,有种豁然开朗的感觉,逼近和迭代在这张图上都显示出来了,希望你也会有这种感觉。
本文是从GMM模型求解引入EM算法,实际上EM算法是一种求解思路,能解决一类问题,关于EM算法的深入了解,请参考PRML第九章内容。
本章OVER
相关推荐
高斯混合模型种类有单高斯模型(Single Gaussian Model, SGM)和高斯混合模型(Gaussian Mixture Model, GMM)两类。类似于聚类,根据高斯概率密度函数(Probability Density Function, PDF)参数不同,每一个高斯...
a clustering method based on the expectation maximization algorithm that adapts on-line the number of components of a finite Gaussian mixture model from multivariate data. Or method estimates the ...
算法类型:聚类算法使用的数据集:从sklearn导入的虹膜数据集 最终集群的输出 要求: Jupyter笔记本或Google Colab 库: 熊猫: : numpy: ://numpy.org/install/ Matplotlib: ://matplotlib.org/stable/users/...
2.内容:Expectation-Maximization(EM)算法数据聚类matlab仿真,动态显示EM过程+代码仿真操作视频 3.用处:用于(EM)算法数据聚类算法编程学习 4.指向人群:本硕博等教研学习使用 5.运行注意事项: 使用matlab...
2.内容:基于Expectation-Maximization算法(EM算法)的数据聚类matlab仿真 +代码操作视频 3.用处:用于EM算法数据聚类编程学习 4.指向人群:本硕博等教研学习使用 5.运行注意事项: 使用matlab2021a或者更高版本...
Clustering of data points using Gaussian Mixture Model and EM Algorithm
一篇关于稀疏子空间聚类算法、理论的概述性论文,可以用于参考
回归、分类与聚类:三大方向剖解机器学习算法的优缺点
第10章--聚类:基本概念和方法.pdf
We introduce a method based on Gaussian mixture model (GMM) clustering and level-set to automatically detect intraretina fluid on diabetic retinopathy (DR) from spectral domain optical coherence ...
backgound subraction using gaussian mixture model and k means clustering
Data Clustering: 50years beyond kmeans 是聚类领域内一篇非常优秀的综述文章。对聚类的问题有一个很好的介绍。非常适合入门。现提供本人的翻译。
Unsupervised clustering with (Gaussian mixture) VAEs
这是模式识别的课程作业,有k均值聚类算法和ISODATA聚类算法,正对遥感影像或者图片进行聚类。写的算法较为粗糙,还请大家多多指教!
k均值聚类是使用最大期望算法(Expectation-Maximization algorithm)求解的高斯混合模型(Gaussian Mixture Model, GMM)在正态分布的协方差为单位矩阵,且隐变量的后验分布为一组狄拉克δ函数时所得到的特例。
一种使用GMM(Gaussian Mixture Model)聚类方法,亲测,好使
机器学习 深度学习 pytorch tensorflow
gmm的matlab代码高斯混合模型_聚类 高斯混合模型的聚类Matlab代码 您可以选择初始化和规范化的方法。 性能指标包括ACC,ARI和ANMI。 GMM算法: 虹膜的例子 运行demo_data.m 虹膜的结果是: 迭代1,迭代次数:38,...
自适应聚类 一种轻量级且精确的点云聚类方法(请检查分支以进一步丰富)。如何建造$ cd ~/catkin_ws/src/$ git clone https://github.com/yzrobot/adaptive_clustering.git$ cd ~/catkin_ws$ catkin_make引文如果您...
。