第10.2节 Kmeans聚类算法
各位朋友大家好,欢迎来到月来客栈,我是掌柜空字符。
本期推送内容目录如下,如果本期内容对你有所帮助,欢迎点赞、转发支持掌柜!
10.2 kmeans聚类算法 10.2.1 算法原理 10.2.2 值选取 10.2.3 kmeans聚类示例代码 10.2.4 小结 引用
10.2 kmeans聚类算法
在第10.1节中笔者介绍过,聚类的思想是将具有同种特征的样本聚在一起。换句话说,同一个簇中的样本点之间都具有高度的相似性,而不同簇中的样本点则具有较低的相似性,因此,聚类算法的本质又可被看成不同样本点间相似性的度量,聚类的目的就是将相似度较高的样本点放到一个簇中。
由于不同类型的聚类算法有着不同的聚类原理,以及相似性评判标准。下面笔者就先介绍聚类算法中最常用的-means聚类算法。
10.2.1 算法原理
-means聚类算法也被称为均值聚类,其主要原理为以下几点[1]:
(1) 随机选择个样本点作为个簇的初始簇中心。
(2) 计算每个样本点与这个簇中心的相似度,并将该样本点划分到与之相似度最大的簇中心所对应的簇中。
(3) 根据每个簇中现有的样本,重新计算每个簇的簇中心。
(4) 循环迭代步骤(2)和步骤(3),直到目标函数收敛,即簇中心不再发生变化。
图10-2所示为-means聚类过程的示例。在图10-2中,iter=0表示聚类过程尚未开始,即正确标签下的样本可视化结果(每种颜色表示一个类别),其中3个黑色圆点为随机初始化的3个簇中心。iter=1表示算法第1次迭代后的结果,可以看到此时的算法将左边原本2个簇的样本点都划分到了1个簇中,而右下角原本1个簇的样本点却被聚类成了2个簇。之后,kmeans聚类算法依次进行反复迭代,当第4次迭代完成后,可以发现3个簇中心基本上已经位于3个簇中了,被错分的样本也在逐渐减少。当进行完第5次迭代后,可以发现基本上已经完成了对整个样本的聚类处理,只需再迭代几次便可收敛。
从图10-2所示的聚类结果可以再次印证,聚类算法只会告诉我们哪些样本点属于同一个类别(同一个簇),但是无法告诉我们每个簇到底属于什么类别。以上就是-means聚类算法在整个聚类过程中的变化情况,至于其具体的求解计算过程将在10.3节中进行介绍。
10.2.2 值选取
经过上面的介绍,相信各位读者对于-means聚类算法的基本原理已经有了一定的了解,但现在有一个问题,如何来确定聚类的值呢?也就是说,我们需要将数据集聚成多少个簇呢?如果已经很明确数据集中存在多少个簇,则直接指定值即可。如果并不知道数据集中有多少个簇,则需要结合另外一些办法进行选取,例如查看轮廓系数、多次聚类结果的稳定性等。
为你认可的知识付费,欢迎订阅本专栏阅读更多优质内容!