原帖请见:http://www.matrixq.net/2011/09/10218.html
与GMM有关的matlab和c代码可以参见:
(matlab+c)https://engineering.purdue.edu/~bouman/software/cluster/
(matlab toolbox)http://www.kostaskyriakoulis.com/gmmgui.html
(matlab)http://blog.pluskid.org/?p=39
(matlab)http://www.cnblogs.com/cfantaisie/archive/2011/08/20/2147075.html
高斯分布有很多重要的性质,但是用它来描述现实中的数据的话,它还是有很多局限的。如果将这些简单的分布线性组合,就可以更好的描述实际数据的性质了,这样的模型便被称为混合模型。最常用和最流行的混合模型就是高斯混合模型GMM(Gaussian Mixture Model )。如果用足够多的高斯分布,调整其期望和协方差矩阵,以及线性组合的系数,就可以精确的表述任何连续分布。
1). 有K个高斯分布的高斯混合模型,可以表示为:
其中每个高斯分布
被称为一个component,参数
被称为混合系数,为了计算和分析的方便
通常被正则化为:
如果把
看做是能取到第k个component的先验概率,
看做是第k个component中发生x的条件概率,那么根据贝叶斯定理,发生x之后,推断其属于第k个component的后验概率为:
2) 高斯混合模型的最大似然
想要确定
中的参数
,很容易想到用最大似然法。
但是这个log likelihood方程并不是很好解,因为需要在对数里面求和。于是一个优雅而强大的解决此问题的方法诞生了:期望最大化法EM(Expectation-Maximization)
3) 用EM法求高斯混合模型的参数
3.1)首先求解
。把
看做是
的方程,令式(4)的导数等于0,可得:
两边同乘以
,可得:
其中
3.2) 同理将
看做是
的方程,令式(4)的导数等于0
3.3) 求
. 将
看做是
的方程,由于
,在这里引入拉格朗日乘子,令
的导数等于0,可得
两边同乘以
,且令
,可得
然后有了式(6)(7)(9),并不能直接求出这些参数,因为
中同时包含这些未知量,这就引导我们通过一种迭代的方式来求解,这就是期望最大法。首先设定一些
的初始值,然后通过迭代不断的更新这些值,直到收敛。
高斯混合模型的的最大期望法
1. 选择期望
,协方差矩阵
,混合系数
的初始值,可以任意,但是通常可以先经过k-means得到一个较为理想的初始值,可以有效的减少迭代次数。
2. E step。计算每个变量属于哪个component的后验概率。
3. M step。根据计算的后验概率,计算每个component的参数:
4. 检查似然函数
是否收敛,如果不是重复第二步。
本文介绍了高斯混合模型(GMM)的基本概念及其在描述复杂数据分布中的应用,并详细阐述了如何使用期望最大化(EM)算法来求解GMM中的参数估计问题。














5259

被折叠的 条评论
为什么被折叠?



