K-means聚类算法
- 格式:docx
- 大小:60.03 KB
- 文档页数:6
K-means聚类算法
目录
1. 概述 (3)
2. 算法描述 (3)
3. 算法应用场景 (3)
4. 算法缺点 (4)
5. 算法示例 (4)
1.概述
K-means是聚类算法中最简单的一种算法了,简单且快速,其主要是通过不断地计算K个质心点,并将数据分配到K个质心点代表的簇中。
它适用于每个对象对应n维空间中的点或n维矢量空间中的点的情况。
由于它算法经典且其本身的缺点的原因,有很多算法基于K-means算法改进而来。
2.算法描述
假设数据集D由n个对象,D=o i=x i1,x i2,⋯,x im i=1,2,⋯,n},其中每个对象由m个属性描述,x ij是第i个对象第j个属性的取值。
K-means聚类算
法需要用户指定要聚类的簇的个数k。
设簇的集合为C={o i
1,o i
1
,⋯,o i
1
}⊆D,
K-means聚类算法的主要步聚如下:
(1)从n个对象中随机选择k个分别作为k个簇的初始质心(Centroid),质心是每个簇的代表,通常是靠近簇中心位置的点。
其实,随机生成k个点当成初始质心也是可以的。
(2)对于D中每个对象通过计算与每个质心的欧式距离,选择距离最近的质心并将该对象分配到此质心代表的簇中。
(3)重新计算每个簇的质心。
通常是求一群点的中心点的算法,类似于求矢量空间中群点的中心点。
(4)若新得到的质心与上一次迭代得到的质心完全相同,则迭代停止,否则,转至步骤(2)
说明:质心的计算方法可以采用不同的方法,对象分配到簇的标准也可以不同。
3.算法应用场景
K-means算法主要解决的问题类似于下图所示。
通过肉眼可以看出来四个点群,但计算机程序是如何找出来的呢,这就是K-means算法的经典应用。
4.算法缺点
K-means聚类算法简单且有效,但是它也存在一些缺点。
例如,它不能处理定性属性描述的对象,它容易受孤立点(Outlier)的影响,如果采用欧式距离来作为簇分配的方法,它发现的簇是具有球形形状的簇,难以发现具有非球形形状的簇
5.算法示例
假设10个对象的两个属性取值分别为A(1,2),B(2,1),C(3,2.5),D(4,4.6),E(4.5,5),F(5,4.5),G(6,3),H(6,4),I(7,3.5),J(3,4.8),使用K-means方法将其分为3个簇。
解:
假设我们随意取3个质心点,分别为(3,2.5),(5,4.5),(7,3.5)。
计算每个对象到这3个点的欧式距离,如下表所示:
说明:两两交叉的结果是通过欧式距离计算得来
通过计算,将这10个对象分为三类,选择距离最近的质心,将其分配到此质心代表的簇中,得:
第一类:A,B,C
第二类:D,E,F,J
第三类:G,H,I
重新计算这三个类的质心,得:
第一类新质心点:(2,1.83)
第二类新质心点:(4.125,4.725)
第三类新质心点:(6.33,3.5)
再次计算这10个对象到新质心点的欧式距离,如下表所示:
通过计算,将这10个对象分为三类,选择距离最近的质心,将其分配到此质心代表的簇中,得:
第一类:A,B,C
第二类:D,E,F,J
第三类:G,H,I
重新计算这三个类的质心,得:
第一类新质心点:(2,1.83)
第二类新质心点:(4.125,4.725)
第三类新质心点:(6.33,3.5)
由于第一次计算的新质心点与第二次计算的新质心点相同,因此迭代结束。
所以,这三个簇分别为:{A,B,C}、{D,E,F,J}、{G,H,I}。