机器学习:K-means聚类算法
K-means(K均值)是基于数据划分的无监督聚类算法,是图像分割和数据挖掘领域常用的算法。
(一) K-means算法的基本原理
聚类算法可以理解为无监督的分类方法,即样本集预先不知所属类别或标签,需要根据样本之间的距离或相识度自动进行分类。聚类算法可以分为基于划分的方法、基于联通性的方法、基于密度的算法、基于概率分布模型的算法等,K-means属于基于划分的聚类方法。
基本K-Means算法的思想很简单,事先确定常数K,常数K意味着最终的聚类类别数,
(1)首先随机选定初始点为质心,并通过计算每一个样本与质心之间的相似度(这里为欧式距离),将样本点归到最相似的类中;
(2)接着,重新计算每个类的质心(即为类中心),重复这样的过程,知道质心不再改变,最终就确定了每个样本所属的类别以及每个类的质心。
由于每次都要计算所有的样本与每一个质心之间的相似度,故在大规模的数据集上,K-Means算法的收敛速度比较慢。
(二)K-means算法的缺陷与改进
2.1 局部最优
K-means算法除了可能受到离群点的影响之外,由于它采取的是随机初始化k个簇的质心的方式,因此聚类效果有可能陷入局部最优解的情况,局部最优解虽然效果不错,但不如全局最优解的聚类效果更好。
2.2 误差平方和(SSE)
一种用于度量聚类效果的指标是SSE,即误差平方和, 为所有簇中的全部数据点到簇中心的误差距离的平方累加和。SSE的值如果越小,表示数据点越接近于它们的簇中心,即质心,聚类效果也越好。因为,对误差取平方后,就会更加重视那些远离中心的数据点。
2.3 降低SSE
改善聚类效果的做法就是降低SSE,在保持簇数目不变的情况下提高簇的质量。