K-means算法的基本原理
K-means算法的基本原理
K-means算法的概念
K-means算法是一种典型的基于划分的聚类算法,该算法具有运算速度快,执行过程简单的优点,在很多大数据处理领域得到了广泛的应用。
K-means算法的思想
利用相似性度量方法来衡量数据集中所有数据之间的关系,将关系比较密切的数据划分到一个集合中。
(1) K-means算法首先需要选择K个初始化聚类中心
(2) 计算每个数据对象到K个初始化聚类中心的距离,将数据对象分到距离聚类中心最近的那个数据集中,当所有数据对象都划分以后,就形成了K个数据集(即K个簇)
(3)接下来重新计算每个簇的数据对象的均值
(4)最后计算每个数据对象到新的K个初始化聚类中心的距离,重新划分
(5)每次划分以后,都需要重新计算初始化聚类中心,一直重复这个过程,直到所有的数据对象无法更新到其他的数据集中。
K-means算法的执行流程
K-means算法的划分图解
接下来我将按照K-means算法的步骤,采用图解的形式进行详细说明:
注释:这部分内容,我是参考的这位大佬的博客:
聚类K-means算法详解
1.假设整个集合中有九个数据对象,按照K-means算法的第一步,需要选择K个初始化聚类中心(在这里,我选择3个,也就是将整个集合的数据对象,先分成3个小集合)如图所示:绿色,红色,黑色的 圆点代表随机选取的初始化聚类中心
2.计算数据对象到这三个点的距离,并选择距离最近的,组成一个集合,如图所示:
3.重新计算每个集合中的数据对象的均值,将均值作为全新的聚类中心点,图中的蓝色菱形代表全新的聚类中心点,如图所示:
4.此时。新的聚类中心点已经存在,在此基础上,对整个数据对象重新计算到聚类中心点的距离,重新分簇,如图所示:
再次计算均值,再次分簇,一直不停的迭代,直至所有的数据对象无法更新到其他的数据集中,该算法结束。
K-means算法的优化
其实K-means算法也有一定的缺点,比如需要预先指定聚类中心,算法选取距离作为相似度量的方法等,都具有一定的局限性,很多研究人员都是从以下几个方面对K-means算法进行改进。
(1)改进选择初始化聚类中心的方法
(2)改进数据对象之间的相似度量方法
(3)改进算法的划分方式
有兴趣的可以再查阅相关文献深入研究