混合高斯模型GMM和EM算法

来源:互联网 发布:有什么书关于java snmp 编辑:程序博客网 时间:2024/04/29 05:00

一、    混合高斯模型

通过密度函数的线性合并获取未知的p(X)模型。形式如下:

即假设密度函数是由多个高斯密度函数组合而成,为第z个高斯密度函数,为第z个高斯密度函数占的权重(或者叫做概率)。用上述模型可以逼近任何连续密度函数,只要有足够的高斯密度函数和适当的参数。

在建立模型的时候,我们首先要确定的是,其中中的是我们需要求得的参数。

通过最大似然法给出一个目标(此目标函数是取对数之后的似然函数):

需要求取当目标函数达到最大值的时候对应的参数的和

假如已经知道x属于某个高斯分布,参数中的的求取就会变得非常简单。不用最大似然估计一样能够算出来。直接通过期望公式和协方差公式就可以求出来。而

 

但是在实际上往往不知道属于哪个高斯分布。直接对似然函数求导来解会因为存在项而变得十分麻烦。这时候就需要一个实际的算法对这个模型进行求解。下面的EM算法就是求解的一种常用的方法。EM的精髓就在利用Jensen不等式将项消除进而进行求解。

二、    EM算法

对EM算法的理解参考自http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html,非常感谢JerryLead的详细讲解,但是感觉如果自己就是完全看明白、在草纸上推导一遍远没有自己详细的写出来记忆深刻,下面的内容多参考自JerryLead的(EM算法)The EM Algorithm。

1.     Jensen不等式

回顾优化理论中的一些概念。设f是定义域为实数的函数,如果对于所有的实数x,,那么f是凸函数。当x是向量时,如果其hessian矩阵H是半正定的(),那么f是凸函数。如果或者,那么称f是严格凸函数。

      Jensen不等式表述如下:

      如果f是凸函数,X是随机变量,那么

      

      特别地,如果f是严格凸函数,那么当且仅当,也就是说X是常量。

      这里我们将简写为

      如果用图表示会很清晰:

      

      图中,实线f是凸函数,X是随机变量,有0.5的概率是a,有0.5的概率是b。(就像掷硬币一样)。X的期望值就是a和b的中值了,图中可以看到成立。

      当f是(严格)凹函数当且仅当-f是(严格)凸函数。

      Jensen不等式应用于凹函数时,不等号方向反向,也就是

2.     EM算法

表示样本符合高斯分布的概率,,对最大似然函数做如下变化:

 

(2)(3)使用Jensen 不等式可得,其中为

若要使得(2)(3)式完全相等,根据Jensen 不等式可知要求自变量为常数,即。当看到这个结果会感觉这个结果再正常不过了。因为单单从数值大小来看,越大表示数据x属于高斯分布可能性越大。所以用来表示x属于高斯分布的概率就再正常不过了。

 

下面EM算法的步骤就明确了

E步,对给定的参数通过公式求取

M步,根据E步算出的求取,因为固定不变,此时:


根据M步算得的参数继续进行重复EM步骤,直到不再增大或者增大的幅度在接收的范围内。

3.     EM求解GMM

在上面已经讲到E步和M步分别要做哪些计算。其中E步骤,求比较简单,直接按照公式进行计算就可以了。那么在看M步骤,



 

 

计算为0时的解,注意在求取的时候,只有是变量,其余的都是常量来计算。在求取的时候道理也一样。

等式等价于,因而是不可以直接取得解的,参考自上面叙述的文献,引入拉格朗日成子

其中易知部分恒为0

为0时详细的求解暂时还不清楚如何对矩阵进行求导,所以后面没法给出具体的计算公式。

4.     EM与K-means的思考

通过观察EM算法,可以看出来E步骤很简单,用代替某种分布,那么,而在M步骤中对于Pz的求解可以发现Pz与分布没有关系,不管是高斯分布还是伯努利分布,计算方式都一样,不会变化。


剩下的就是对具体分布内部的参数进行计算,当然对于不同的分布有着不同的参数和表达方式,只需要按照求解参数即可。

仔细观察EM算法和K-means算法有很大相同的地方。他们的共同点都是在于分别有两部分信息未知,如果知道两部分信息中的任意部分,那么问题就可以轻易解出。EM算法第一部分未知的信息为,第二部分未知的信息为和分布函数的参数集(比如高斯分布的)。而在K-means算法中第一部分未知的信息为都哪些点为一类,第二部分未知的信息是每一类的中心点在哪。这两个算法面临的问题是,只要准确知道两部分信息中的任意一部分信息,就可以知道另一部分信息,也不用再通过迭代进行求解了。但是实际问题是:两部分信息往往都不知道,所以只能先提出假设,然后固定一部分信息,计算另一部分信息,然后再根据计算而来信息改进假设信息,如此迭代下去,直到假设已经非常完美不能再改进,算法结束。

0 0
原创粉丝点击