一、k-means算法概述
k-means算法和KNN算法虽然都是以近邻信息来标注类别,但却是两类不同的算法:KNN算法是监督学习中的基本分类与回归算法,而k-means算法是无监督学习中的聚类算法。
聚类是指将未标注的样本数据中相似的分为同一类,即“物以类聚,人以群分”。k-means算法是聚类算法中最为简单、高效的核心思想:指定k个初始质心(initial centroids),作为聚类的类别(cluster),重复迭代直至算法收敛。k-means算法的流程可表示如下:
选取k个初始质心(作为初始cluster);
repeat:
对每个样本点,计算得到距其最近的质心,将其类别标记为该质心所对应的cluster;
重新计算k个cluster对应的质心;
until 质心不再发生变化
为了衡量k-means算法不同聚类结果的好坏,以平方误差和(sum of squared error,SSE)作为聚类的目标函数:
其中,dist表示样本点x到cluster Ci的质心ci的距离平方和。
k-means算法最优的聚类结果应使SSE