K均值算法是一种基于划分的方法,它以K作为输入参数,将所有N个对象集合划分为N个类别。
K均值初始输入:1、类别或者簇的个数K;2、随机选取K个种子点
K均值算法的收敛准则函数:平方误差准则或者种子点不在移动
K均值算法的主要流程如下。首先随机选取K个对象,每个对象代表一个簇的初始均值值或中心。计算剩余每个对象与各个簇均值的距离,并将对象指派到相似的簇。再计算每个簇的新均值,更新它。不断重复这一过程直到所有的对象指派到了簇并满足准则函数。
K均值算法的伪代码:
输入:
K:簇的数目
D:包含N个对象的数据集
输出:K个簇的集合
方法:
(1)从D中随机选取K个对象作为种子点;
(2)Repeat:
1. 根据簇中对象的均值,将每个对象指派到最相似的簇
2. 更新簇的中心种子点的值,即计算每个簇中对象的均值;
(3)Until:种子点不再发生变化
该算法的缺点:
(1)在 K-means 算法中 K 是事先给定的,这个 K 值的选定是非常难以估计的。很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适。
(2) 在 K-means 算法中,首先需要根据初始聚类中心来确定一个初始划分,然后对初始划分进行优化。这个初始聚类中心的选择对聚类结果有较大的影响,一旦初始值选择的不好,可能无法得到有效的聚类结果。
(3)该算法需要不断地进行样本分类调整,不断地计算调整后的新的聚类中心,因此当数据量非常大时,算法的时间开销非常大。