EM算法在K-Means中的运用

本文摘自《数据挖掘 概念与技术》,范明、孟小峰译,机械工业出版社
相关链接:
EM算法及总结
EM算法在高斯混合分布中的运用
极大似然估计

EM算法在K-Means中的运用

前言

有关于K-Means的算法介绍详情请参考另一片文章K-Means算法介绍。有关于EM算法的只是请参考我的另一篇博客EM算法及总结

K-Means的简单介绍

假设数据集 D 包含了n个欧式空间中的对象。划分方法把 D 中的对象分配到k个簇C1,C2,...,CN中,使得对于 1i,jk,CiD CiCj= 。一个目标函数用来评估划分质量,使得簇内对象很相似,而与其它簇中的对象相异。也就是,该目标函数以簇内高相似性和簇间低相似性为目标。
基于形心的划分技术使用簇 Ci 的形心代表该簇。从概念上讲,簇的形心是它的中心点。形心可以用多种方法定义,例如用分配给该簇的对象(或点)的均值或中心店定义。对象 pCi 与该簇的代表 ci 之差用 dist(p,ci) 度量,其中 dist(x,y) 是两个点 x y之间的欧式距离。簇 Ci 的质量可以用簇内变差度量,它是 Ci 中所有形象和形心 ci 之间的误差的平方和,定义为


E=ki=1dist(p,ci)2pCi  1

其中,E是数据集中所有对象的误差的平方和;p时空间中的点,表示给定的数据对象; ci 是簇 Ci 的形心( p ci都是多维的)。换言之,对于每个簇中的每个对象,求对象到其簇中心距离的平方,然后求和。这个目标函数试图使生成的结果簇尽可能紧凑和独立。
现在问题来了,如何优化簇内变差?在最坏的情况下,我们必须枚举大量可能的划分(划分的个数是簇数的指数),并检查簇内变差。在一般的俄欧式空间中,即便对于两个簇(即 k=2 ),该问题也是NP-困难的。此外,即便在二维欧式空间中,对于一般的簇个数 k ,该问题也是NP-困难的。如果簇个数k和空间维数 d 固定,则该问题可以在O(ndk+1logn)时间内求解,其中 n 是对象的个数。为了解决这种难题,我们使用EM算法来获得局部最优解。

算法

EM的算法核心就是E步和M步(期望步和最大化步),能够解决好这两部,问题就基本解决了。

期望步(E-步)

给定当前的簇中心,每个对象都被指派到簇中心离该对象最近的簇。这里,期望每个对象都属于最近的簇。

最大化步(M-步)

给定簇指派,对于每个簇,算法调整其中心,使得指派到该簇的对象到该新中心到的距离之和最小化。也就是说,将指派到一个簇的对象的相似度最大化。

例子

说了这么多,感觉还是很抽象,那么我们来一发示例来看看如何使用EM算法来解决K-Means算法最优化问题。



EM算法在K-Means中的运用_第1张图片

题目:考虑上图中的六个点,其中显示了点的坐标。让我们使用EM算法计算两个模糊聚类。

解答

首先,我们随机选择两点,如c1=a,c2=b,作为两个簇的初始中心。第一次迭代执行期望步和最大化步的细节如下:
E-步:对于每一个点,我们计算它属于每个簇的隶属度。对于任意点 o ,我们分别隶属权重


1dist(o, c1)21dist(o, c1)2+1dist(o, c2)2=dist(o,c2)2dist(o, c1)2+dist(o,c2)21


1dist(o, c2)21dist(o, c1)2+1dist(o, c2)2=dist(o,c1)2dist(o, c1)2+dist(o, c2)22

其中,公式(1)对应任一点 o 对于簇C1的隶属权重,公式(2)对应任一点 o 对于簇C2的隶属权重。这也很好理解,对于任意点 o ,它与形心点ci的距离越近,它的期望值就越高,所以取倒数。把 o 指派到c1 c2 ,其中 dist(,) 是欧式距离。其理由是:如果 o 靠近c1,并且 dist(0,c1) 小,则 o 关于c1的隶属程度应该高。我们也可以规范化隶属度,使得一个对象的隶属度之和等于1。
对于点 a ,我们有wa,c1=1,wa,c2=0,即 a 互斥地属于c1。对于点 b ,我们有wb,c1=0,wb,c2=1。对于点 c ,我们有wc,c1=4145+41=0.48wc,c2=4545+41=0.52。其它点的计算方法相同。
M-步: 我们根据划分矩阵重新计算簇的形心,极小化误差平方和(SSE)(想了解SSE的先往下看到分割线后的内容)。新的形心应该调整为:


cj=w2o,cjoo   w2o,cjo  3

其中, j=1,2 。在这个例子中,


c1=(12×3+02×4+0.482×9+0.422×14+0.412×18+0.472×2112+02+0.482+0.422+0.412+0.472,12×3+02×10+0.482×6+0.422×8+0.412×11+0.472×712+02+0.482+0.422+0..412+0.472)=(8.47,5.12)

c2=(02×3+12×4+0.522×9+0.582×14+0.592×18+0.532×2102+12+0.522+0.582+0.592+0.532,02×3+12×10+0.522×6+0.582×8+0.592×11+0.532×702+12+0.522+0.582+0.592+0.532)=(10.42,8.99)

我们重复迭代,其中每次迭代包括一个E步和一个M步。下表显示前三次迭代结果。当簇中心收敛或者变化很小的时候(什么时候算小,这取决于你设置的阈值),算法停止。


EM算法在K-Means中的运用_第2张图片


误差平方和:对象与其被指派到的簇的中心之间的距离或相似度可以用来度量该对象属于簇的程度。这一思想扩充到模糊簇类。对于任意对象 oi 和簇 Cj ,如果 wij>0 ,则 dist(oi,cj) 度量 oi Cj 代表,因而属于簇 Cj 的程度。由于一个对象可能参与多个簇,所以用隶属度加权的到簇中心的距离之和捕获对象拟合聚类的程度。
对于对象的误差平法和:


SSE(oi)=kj=1(wpjk)2dist(oi,cj)4

其中,参数 p(p1) 控制隶属度的影响。 p 的值越大,隶属度的影响就愈大。簇Cj的SSE是


SSE(Cj)=ni=1(wpij)2dist(oi,cj)5

最后,聚类 C 的SSE定义为:


SSE(C)=ni=1kj=1(wpij)2dist(oi,cj)6

聚类的SSE可以用来度量模糊聚类对数据集的拟合程度。


你可能感兴趣的:(机器学习,EM算法,机器学习,EM算法,k-means算法)