一)、k-means与高斯混合模型的对比的不足:

1)k-means的缺点在于,它是一个hard聚类的方法,比如有一个点任何一个聚类中心都不属于,但是算法仍然可能会把它强行划分到一个聚类中心去。对于一个点,它属不属于某个聚类中心的可能性是个属于(0,1)的整数值。
2)而高斯混合模型(Gaussian Mixture Model) 就是一种soft聚类的方法,它建立在一个重要的假设上,即任意形状的概率分布都可以用多个高斯分布函数去近似。顾名思义,高斯混合模型是由很多个高斯分布组成的模型。


二)、高斯模型是什么?

高斯混合模型(Gaussian Mixture Model, GMM) 是一种概率式的聚类方法,属于生成式模型,它假设所有的数据样本都是由某一个给定参数的 多元高斯分布 所生成的。具体地,给定聚类个数K,对于给定样本空间中的样本 x ,一个高斯混合模型的概率密度函数可以由K个多元高斯分布组合成的混合分布表示:
p(x)=∑Ki=1wi⋅p(x|μi,σi)
其中p(x|μ,σ)是以 μ 为均值向量, σ为协方差矩阵的多元高斯分布的概率密度函数,可以看出,高斯混合模型由K个不同的多元高斯分布共同组成,每一个分布被称为高斯混合模型中的一个成分(Component), 而 wi 为第i个多元高斯分布在混合模型中的权重 ,且有ΣKi=1wi=1.每一个component都满足Nk∼(μk,σk),k=1,2,…K并对应的是一个聚类中心,这个聚类中心的坐标可以看作(μk,σk).对于一个点xi它属于第k个聚类中心的可能性wik是一个属于0到1之间的概率值,也就是说在高斯混合模型中,一个点可以看作是由多个component联合生成的,wik也是数据xi由第k个component生成的概率。

三)定义目标函数

给定N个样本的训练集合x1,x2,…,xN,尝试利用多个高斯分布函数的线性组合拟合x的分布。 那么假设有k个高斯分布,每个分布称为一个component,则


P(x)=∑k=1Kp(x|k)w(k)

其中, p(x|k)~N(μk,σk),设 w(k)=wk表示的是第k个高斯分布被选中的概率,也就是权重。现在的任务就是找到 (μk,σk,wk)k=1,…,K,令已知的 x1,x2,…,xN分布存在的可能性最大,也就是似然函数最大。


因此有



L(μ,σ,ϕ|x)=log∏i=1Np(xi;μ,σ,ϕ)=∑i=1Nlogp(xi;μ,σ,ϕ)=∑i=1Nlog∑k=1Kp(xi|μk,σk)w(k;ϕk)

对上式分别对于μ,ϕ,σ求偏导并置于0,就可以求出最优的参数。但是上式中又有加和,我们没法直接用求导解方程的办法直接求得最大值。

四)求解参数

一般解高斯混合模型都用的是EM算法。
EM算法分为两步:
在E-step中,估计数据由每个component生成的概率。而要估计数据由每个组份的高斯模型生成的概率就要知道每个高斯模型的分布,也即需要确定 μ,σ,ϕ等值。这里假设 μ,σ,ϕ已知,对于每个数据 xi 来说,它由第k个component生成的概率为pik=wkN(xi|μk,σk)∑Kk=1wkN(xi|μk,σk)
在M-step中,估计每个component的参数μk,σk,wkk=1,…K。利用上一步得到的pik,它是对于每个数据 xi来说,它由第k个component生成的概率,也可以当做第k个component在生成这个数据上所做的贡献,或者说,我们可以看作xi这个值其中有pikxi这部分是由 第k个component所生成的。现在考虑所有的数据,可以看做第k个component生成了p1kx1,…,pNkxN这些点,由于每个component 都是一个标准的 Gaussian 分布,可以很容易的根据期望、方差的定义求出它们:


μk=1N∑i=1Npikxi



σk=1N∑i=1Npik(xi−μk)(xi−μk)T



wk=1N∑i=1Npik


重复迭代前面两步,直到似然函数的值收敛为止。