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

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

  • 9
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值