K-Means算法:什么意思、例子案例、优点缺点
K-Means 算法是分割式聚类算法中最常用的一种,是一种基于样本均值的计算方法,在聚类的过程中通过计算类中各对象的属性均值,作为类的中心点(重心)。对象和类的距离是该对象和类中心点的距离。对组内对象的调整是通过计算最小方差的方法,即最终目标是生成总体方差最小的 k个类。
给定N个样本对象的数据集,划分成k个分区,根据划分准则,例如对象之间的相似度(如距离),将N个对象归并到k个分区中,以便每一个分区中的对象是“相似”的,而不同分区内的对象是“相异”的,每个分区就是对应的一个类。分区聚类的步骤如下。
(1)从N个样本对象中,任意选定k个对象作为k个类中的初始对象。
(2)从剩余N−k个样本对象中任意选择一个对象,计算其和k个类的相似度(距离),并将其归并到相似度最高的类中。
(3)重新计算已归并的各对象和k个类之间的相似度,根据相似度调整并归类。
(4)重复步骤(2)直至所有对象归并到k个类中。
具体来说,给定N个样本,如图13-26所示。
图13-26
第一步,在图13-26中随机选择两个点作为中心点,画一条垂直平分线,把原图中的点分为两部分——浅色点和深色点(见图13-27)。
图13-27
但是中心点没有在这两部分的中心,所以第二步求浅色点横、纵坐标的平均值,用其作为新的中心点;同理,求深色点横、纵坐标的平均值,用其作为新的中心点。连接两个新的中心点,画一条垂直平分线,又会将点重新分组。
重新分组后,中心点不在新的组中,再继续计算每组中点的横坐标的平均值,作为新中心点的横坐标,再计算每组中点的纵坐标的平均值,作为新中心点的纵坐标。得到新的中心点后,再继续连接中心点做一条垂直平分线,重新分组。以此类推,直到产生新的中心点,做一条垂直平分线,而分组不再改变后则操作结束,如图13-28所示。
图13-28
K-Means算法的优点就是计算迅速,但是K-Means算法不是一个最佳的算法,因为起始的中心点是随机选择的,而选择的起始中心点不同,最后的结果也会不同。
如图13-29所示,选择不同颜色的点会有不同的分组方法。所以起始中心点的选取关系着分类的结果。如果起始中心点选择不当,则分类结果就可能不甚理想。常用的方法有以下两种。
图13-29
(1)随机选择k个没有缺失值的观察体。
(2)先选择第1个观察体当作第1组的种子点;其次选择与第1 个种子点的距离超过既定标准的下一个观察体当作第2组的种子点;接着选择与第1、第2 个种子点的距离超过既定标准的下一个观察体当作第3组的种子点;依此类推,直到选出k个组的种子点为止。
K-Means 算法的另一个缺点是对于离群数据很敏感。