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