EM算法(期望最大化)——从EM算法角度理解K-Means与GMM的区别

来源:互联网 发布:美国石油钻井数据 编辑:程序博客网 时间:2024/06/02 04:07

K-Means算法简介

K-Means算法是一种常用的聚类算法,它认为由一组数据点构成的一个聚类中,聚类内部点之间的距离应该小于数据点与聚类外部的点之间的距离。假设我们有一组数据集{x1,...,xN},我们的目标是将数据集划分为K个类别。为了解决这个问题,K-Means算法希望找到K个聚类的中心{μk},k=1,...,K,同时根据数据点xn与各中心的距离大小,对数据点进行归类。

为了形式化地说明这个问题,我们定义一些符号:(1)由于存在K个类别,则存在K个聚类中心,我们定义聚类中心为心{μk},k=1,...,K;(2)对于每个数据点,K-Means的最终目的是为了将其归为K类中的某一类,我们可定义一个指示函数γnk{0,1}来表示第n个数据点属于k=1,..,K中的哪一类:如果数据点xnclass(k)γnk=1,否则γnk=0

为了求解这一聚类问题,我们设置“整个数据集点到各自聚类中心的距离的平方和”为目标函数,即J=nkγnk(xnμk)2。最小化目标函数:argmin(γnk,μk)J(γnk,μk)使得聚类效果最佳。

由于在目标函数中存在变量{γnk,μk},同时求解是不可能的,我们采用一种迭代的方式来完成。

K-Means算法具体实现

其流程如下所示:
(1)初始化:为{μk}选取初值
(2)固定{μk},关于γnk最小化目标函数Jγnk={1,ifk=argmink(xnμj)20,otherwise
(2)固定各数据点类别,关于{muk}最小化目标函数J
μkJ=nγnk(xnμk)=0
μk=nγnkxnnγnk

K-Means迭代步骤与EM算法的关系:
(2)(3)中分别更新γnk,μk分别对应EM算法中的E步骤和M步骤。

K-Means算法与GMM(高斯混合模型)的EM解法的关系

对比K-Means算法和GMM的EM解法,我们会发现二者具有很强的相似性。K-Means算法对数据点的聚类进行了“硬分配”,即每个数据点只属于唯一的聚类;而GMM的EM解法则基于后验概率分布,对数据点进行“软分配”,即每个单独的高斯模型对数据聚类都有贡献,不过贡献值有大有小。
而其实,我们可以将K-Means算法归类为GMM的EM解法的一个特例:
考虑一个GMM(混合高斯模型),其中每个分量的协方差矩阵均为ϵI,从而有p(x|μk,Σk)=1(2πϵ)D2exp(12ϵ||xnμk||2)

E步骤:由之前GMM的EM解法知识可知:

γnk=πkN(xn|μk,Σk)jπjN(xn|μj,Σj)=πkexp(12ϵ||xnμk||2)jπjexp(12ϵ||xnμj||2)

ϵ0时,在分母中只有||xnμj||2最小时,πjexp(12ϵ||xnμj||2)趋近于0的速度最慢,也就意味着它比其他项要大的多。所以有||xnμj||2=minγnj1;mj,γnm0。在这种极限情况下,与K均值算法相同,我们得到了对数据点聚类的一个硬分配。

M步骤:EZ[X,Z|π,μ,Σ]=nkγnk{lnπk+lnN(xn|μk,Σk)}

ϵ0时,则
EZ[X,Z|π,μ,Σ]=nkγnk{lnπk+lnN(xn|μk,Σk)}=nkγnklnπk+nk(12ϵ||xnμk||2)=1ϵ(12nk(γnk||xnμk||2))+nkγnklnπk

由于πk仅仅是聚类点在k类中的比例,其值对于E步骤γnk的确定不再起作用。所以只需要关于μk使得EZ[X,Z|π,μ,Σ]最大,即,使得J=nk(γnk||xnμk||2)最小;所以μk=nγnkxnnγnk

从此可知,K-Means算法其实是GMM的EM解法在高斯分量协方差ϵI0时的一个特例。

实际应用中,对于 K-means,我们通常是重复一定次数然后取最好的结果,但由于 GMM 每一次迭代的计算量比 K-means 要大许多,使用GMM时,一个更流行的做法是先用 K-means (已经重复并取最优值了)得到一个粗略的结果,然后将其作为初值(只要将 K-means 所得的 聚类中心传给 GMM即可),再用 GMM 进行细致迭代。

相关文章:
EM算法(期望最大化)——理论部分http://blog.csdn.net/tingyue_/article/details/70474042
EM算法(期望最大化)——应用:GMM http://blog.csdn.net/tingyue_/article/details/70576025

0 0
原创粉丝点击