1 描述
k-means聚类算法是基于距离的聚类算法,该算法采用距离大小作为相似性的评价指行标,即认为两个数据点的距离越近,其相似性就越大。该算法认为簇是由距离靠近的数据点组成的,因此把得到的紧凑且独立的簇作为最终目标。
2 算法核心思想
k-means聚类算法是一种迭代求解的聚类分析算法,其步骤是随机选取k个数据点作为初始聚类中心,然后计算其他每个数据点与各个初始聚类中心的距离,把每个数据点分配给距离它最近的初始聚类中心。
3 算法实现步骤
- 首先确定一个k值,即希望将数据集合聚类为k类;
- 从数据集合中随机选择k个数据点作为初始聚类中心;
- 从数据集合中的每一个点,计算其与每一个初始聚类中心的距离(如欧氏距离),离哪个初始聚类中心近,就划分到哪个初始聚类中心所属的簇;
- 把所有数据归好簇之后,一共有k个簇,然后重新计算每个簇的中心;
- 如果新计算出来的中心和原来的中心之间的距离小于某一个设置的阈值(表示重新计算的质心的位置变化不大,趋于稳定,或者说收敛),我们可以认为聚类已经达到了期望的结果,算法终止。
(1)图(a)表达了初始的数据集合,假设k=2,此时还没有分类,全都是一种颜色;
(2)图(b)中,我们随机选择了两个初始聚类中心,即图中的红色质心和蓝色质心;
(3)分别计算数据集合中所有数据点到初始聚类中心的距离,并标记每个数据点的类别为和该样本距离最小的聚类中心的类别,(4)经过计算数据点和红色质心和蓝色质心的距离,我们得到了所有数据点的第一轮迭代后的类别,如图(c)所示;
(5)此时我们对当前标记为红色和蓝色的点分别求其新的质心,如图(d)所示,新的红色质心和蓝色质心的位置已经发生了变动;
(6)图(e)和图(f)重复了我们在图(c)和图(d)的过程,即将所有点的类别标记为距离最近的质心的类别并求新的质心;
最终计算得到的两个类别如图(f)
4. k-means术语
簇:所有数据点的集合,簇中的对象是相似的;
质心:簇中所有点的中心(计算所有点的中心而来)
5. k-means优缺点
优点:
(1)原理比较简单,实现也比较容易,收敛速度快;
(2)当每个簇是密集的,而簇与簇之间区别明显时,它的效果较好;
(3)需要调节的参数少,主要需要调节的参数仅仅是簇k;
缺点:
(1)k值需要预先给定,很多情况下k值估计是非常困难的;
(2)k-measn算法对初始选取的质心点是敏感的,不同的随机种子店得到的聚类结果完全不同,对结果影响很大;
(3)对噪声和异常点比较敏感,用来检测异常值。
参考:
https://juejin.im/post/5ed9f6e95188254340630ca6