聚类(3)-- Gaussian Mixtures Model

来源:互联网 发布:矩阵计算 中文 pdf 编辑:程序博客网 时间:2024/04/29 20:31

Gaussian Mistures Model(GMM) 假设数据集服从混合高斯分布(Mixture Gaussian Distribution),即认为整个数据集是由若干个高斯分布(每个高斯分布分别代表一个component)混合而成的,通过估计每个component的模型参数(均值和协方差),实现数据集密度估计以及将数据点以一定概率归属于某参数所代表的的高斯分布中,实现clustering。与k-means不同的是,k-means最终输出是将每个数据点归属到最合适的cluster中,而GMM输出的是每个数据点从属于每个component的概率。即类似于Fuzzy k-means,GMM也属于一种对数据的软划分。

GMM假设数据集是若干个高斯分布的叠加,如下:

p(x) = sum(w(k)*N(x|miu(k), cov(k)))

(sum是对k求和,k=1,2,...,K,其中K代表component的个数,即对应最终的cluster number)

其中,w(k)代表每个component对于整个数据分布的贡献,称为mixing coefficient,即混合系数,且有sum(w(k)) = 1(对k求和)

miu(k)和cov(k)分别代表第k个component的均值和协方差,N(x|miu(k), cov(k))即为第k个component的高斯分布模型。

有了模型之后,要做的就是进行模型参数估计,参数估计实现的目标是,使得使用估计的参数所代表的模型产生当前数据集的概率最大。从上述混合高斯模型可见,需要估计的参数有2类,即w(k)(随机选择一个数据点,每个component被选中的概率即为w(k))和高斯模型参数miu(k)和cov(k)(即选中一个component之后,通过这些数据点估计单个高斯模型参数,此时就是常规的参数估计问题了)。

由上所述,要使得最终模型产生数据集的概率最大,且考虑数据集是i.i.d,从而参数估计目标函数如下:

prod(p(x))(对所有数据点求连乘)

上式即为似然函数,则目标就是使得上述似然函数最大。考虑每个数据点的概率一般较小,连乘的结果导致更小,容易导致浮点数下溢,所以一般选择对数形式,如下:

log(prod(p(x))) = sum(log(p(x)))(对所有数据点对数概率求和)

上式即为对数似然函数,现在的目标是使得上述对数似然函数最大。可以采用最大似然估计,即对参数求导为零确定。

通过上式对数似然函数分别对w(k),miu(k)和cov(k)求导为零得到三种参数的MLE如下:

w(k) = Nk/N(N代表数据点个数,定义Nk = sum(r(i,k)),对i求和)

miu(k) = sum(r(i,k)*xi)/Nk(对所有数据点求和)

cov(k) = sum(r(i,k)*(xi-miu(k))*(xi-miu(k))')/Nk(对所有数据点求和)

其中r(i,k)是后验概率,代表了第i个数据点由第k个component生成的概率,具体计算公式下文描述。

从上述三个参数公式可见,他们之间其实是彼此相关(通过r(i,k)体现),通过最大似然估计的方式,无法得到确定的参数值,所以一般的做法是使用迭代方法,如Expectation Maximization(EM),分两步,如下:

1、E-step,计算后验概率r(i,k),也称为responsibilities。

2、M-step,固定后验概率r(i,k)的情况下,计算模型均值,协方差和混合系数。

迭代上述两步,直至参数收敛或者对数似然函数变化小于给定的阈值。

现在在说明下上文后验概率r(i,k)的计算。

由边缘分布公式有:

p(x) = sum(p(k)*p(x|k))(对k求和)

针对本文GMM情况,此处p(k)即为每个component对总体混合分布的贡献,属于先验信息,也就是w(k),p(x|k)则对应了第k个component的数据分布情况,服从高斯分布,属于x对于第k个component的条件概率。

则后验概率p(k|x) = (p(k)*p(x|k))/(sum(p(j)*p(x|j))),其中sum对j求和,j = 1,2,...,K。

再由:p(k) = w(k), p(x|k) = N(x|miu(k), cov(k)),得到:

r(i,k) = p(k|xi) = w(k)N(xi|miu(k), cov(k))/(sum(w(j)N(xi|miu(j), cov(j)))),称为responsibility,代表了第i个数据点由第k个component生成的概率,其中sum对j求和,j = 1,2,...,K。

综上,GMM的实现过程就是通过计算responsibilities,迭代计算w(k),miu(k)和cov(k)的MLE,直至算法收敛。具体步骤如下:

1、给定w(k),miu(k)和cov(k)的初值;

2、E-step,根据上述初值计算r(i,k);

3、M-step,根据r(i,k),计算w(k),miu(k)和cov(k)的MLE

4、查询是否可以停止迭代,条件是:对数似然函数变化小于一定的阈值,或者参数w(k),miu(k)和cov(k)的变化小于一定阈值。如果条件满足,停止迭代,输出r(i,k),否则回到E-step继续运算。

对于高斯分布的数据,GMM通过参数估计的方式,建立数据分布模型,从而实现有效的数据分析,一般能实现对k-means更好的聚类效果。然后与k-means一样,GMM效果也受初值影响,有跌入局部极值的可能性。对于k-means,一般使用的策略是使用不同初值多次运行k-means,以期最终能达到全局极小值。但是GMM每步运算量较大,不太适合这种策略。所有有些人就是通过k-means得到聚类结果后,以k-means的结果作为GMM的初值,以达到更好的聚类效果。