一个确定初始聚类中心的更好方法

时间:2024-03-23 15:51:15

初始聚类中心的选择对k-means算法的效果有非常显著的影响,不合适的初始聚类中心可能导致:
1,算法收敛速度降低
2,更大的可能使聚类结果收敛到一个较差的局部最小值
3,某些簇最后是个空集(样本量较小时这种情况经常出现)

经典的k-means算法的初始聚类中心是随机选取的,这种方式有两种不足:
1,某些初始聚类中心可能离群体太远,如下图
一个确定初始聚类中心的更好方法
2,有的聚类中心可能相互之间隔得太近

为了克服这些缺点,比较流行的方法是maxmin法,即:
首先随机选择一个点作为第一个初始类簇中心点,然后选择距离该点最远的那个点作为第二个初始类簇中心点,然后再选择距离前两个点的最近距离最大的点作为第三个初始类簇的中心点,以此类推,直至选出K个初始类簇中心点。网上介绍的大部分是这个方法。http://www.sciencedirect.com/science/article/pii/S0957417412008767更推荐其他更好的方法,今天介绍其中一个。
step1:将从数据集中抽取J个较小的子集Si,i=1,2,...,J

step2:利用经典的k-means算法(随机选择初始聚类中心)对Si进行聚类,返回CMiCMi是个k维向量,表示对第i个子集进行聚类后返回的聚类中心点

step3:CM=[CM1,CM2...,CMJ]

step4:分别以CM_i为初始聚类中心,再次利用经典的k-means算法对CM进行聚类,返回FMiFMi也是聚类后得到的K个聚类中心点

step5:计算FMiCM的距离平方和(sum 0f squared distance,SSM),选取具有最小SSM的FMi作为最终的初始聚类中心
感兴趣的可以去看原文,地址:https://xue.glgoo.org/scholar?hl=zh-CN&as_sdt=0%2C5&q=Refining+Initial+Points+for+K-Means+Clustering&btnG=

相关文章