K-means是一种无监督学习算法,能够对无标签的数据集进行聚类。
基本思想:
1初始化若干个聚类中心;
2将每个训练数据分配给某个聚类中心,作为该类的一员,依据经常是点的距离
3更新每个聚类中心为该类所有点坐标的平均值
4重复以上直到收敛(中心不再变化)
形式化描述:
上图中,k是类的个数,事先人为确定。
k-means保证收敛,但并不能保证有效。初始中心点选的不好时可能无法聚类,例如,有两个训练数据,然后初始点选到了这两个点的垂直平分线上,那么就无法聚类。但在随机选取初始点的情况下,多次运行该算法,算法无效的概率是很低的。
关于收敛,考虑下面的函数: