一、问题引入
我们已经使用过k-means算法解决聚类问题。这个算法的突出优点是简单易用,计算量也不多。然而,往往过于简单也是一个缺点。假设聚类可以表示为单个点往往会过于粗糙。举一个例子,如下图所示:
这个例子中数据位于同心圆。在这种情况下,标准的K均值由于两个圆的均值位置相同,无法把数据划分成簇(所以上面有一个绿点不知道该往哪跑,因为它没有簇)。因此,以距离模型为聚类标准的方法不一定都能成功适用。为了解决这些缺点,我们介绍一种用统计混合模型进行聚类的方法——高斯混合模型(Gaussian Mixture Model, GMM)。这种聚类方法得到的是每个样本点属于各个类的概率,而不是判定它完全属于一个类,所以有时也会被称为软聚类。
二、问题分析
1.我们使用EM算法来求解高斯混合模型的相关参数。算法流程如下:
Repeat until convergence {
E-step: For each i, j, set
M-step: Update parameters
}
其中是隐含变量z服从的先验分布,其余两个参数是混合高斯分布的均值(μ)和协方差(Σ)。
是隐含变量z属于类别j的后验概率,其可以根据贝叶斯公式计算得到:
2.EM算法求解GMM的简单推导
下面我们只对M-step作简单推导。在M-step中,我们需要最大化一个关于参数Φ,μ,Σ的式子:
很自然地会想到对逐个参数求偏导数。先对μ求偏导数,得:
令其等于0,得到:
其次,对Φ求偏导数,可以先把和Φ无关的项去掉,简化求导计算:
因为是先验分布,因此它有一个约束条件,就是
。这时需要引入朗格朗日乘子,设拉格朗日函数如下: