K-均值算法 | K-Means Clustering

Made by Mike_Zhang


Unfold Machine Learning Algorithm Topics | 展开机器学习算法主题 >


Intro

导言

首先思考以下情景问题:

  • 在一个平面上,给出如下图左图的一些点,如何将这些点分成如右图的三组,也就是让每组内的点尽可能的接近,而每组之间的点尽可能的远离?

看似很容易,我们人类视觉具有接近性 (Proximity),相近的物体会更加容易被组合在一起。

但是对于计算机来说,这些点无疑只是一堆数字,或是给定在坐标系中的坐标,那它又是如何将这些点组合的?

在计算机科学中,这类问题被称为聚类 (Clustering),旨在把向量按照一定标准分成多个簇,同一个簇内的向量尽可能的接近。

k-均值算法(K-Means Clustering) 是一种经典的聚类算法。


1. K-Means Clustering Algorithm Description

1. k-均值算法描述

k-均值算法十分容易理解,其基本逻辑为:

  • 选择每个簇的代表向量更新每个簇的向量分配 之间进行迭代,直到所有簇收敛;
  • Iterating between choosing the group representatives and choosing the group assignments 1.

具体算法如下:

  1. 给定有$N$个向量的列表,$x_1, x_2, \cdots, x_N$,以及簇的个数$k$,并随机初始化每个簇的代表向量$z_1, z_2, \cdots, z_k$。
  2. 重复

    1. 更新每个簇的分配:对于各个向量$x_i$,找到与向量 $x_i$ 最近的簇代表向量$z_j$,并把此向量$x_i$分配到$J_j$簇;

    2. 更新每个簇的代表向量: 对于每个簇$J_j$,计算簇内向量的平均向量,并使其变为此簇的代表向量。

直到所有簇收敛:每个簇的代表向量不再发生变化。


1.2 Example

1.2 例子

在二维坐标系中给定以下24个向量,$N=24$,目标是将其分成三个簇,$K=3$。

Step1

  • 随机初始化三个簇的代表向量$z_1, z_2, z_3$,如下图三个 “$+$” 所示。

Step2

  • 遍历所有向量,找到与向量最近的簇代表向量,并将其分配到此簇。如下图颜色分配所示。

Step3

  • 计算每个簇内向量的平均向量,下图中新代表向量以 虚线 “$+$” 所示;
  • 并使每个新代表向量成为此簇的代表向量

Step4

  • 重复Step2Step3
    • Step2. 更新每个簇的分配,黑框内的向量被重新分配:
    • Step3. 计算并更新每个簇的代表向量:
    • Step2. 更新每个簇的分配,黑框内的向量被重新分配:
    • Step3. 计算并更新每个簇的代表向量:

Step5

  • 再次重复Step2Step3,发现每个簇的代表向量不再发生变化,代表已经收敛了。
  • 算法结束,上图就为最终的聚类结果。

2 Implementation in Python

以下是我用Python实现的k-均值算法的结果:

  • 可以发现结果还是十分明显的。

代码分享在Google Colab中,点击链接可查看代码并在线运行。


3 Limitations

3. 局限性

k-均值算法是典型的一个无监督学习算法(Unsupervised Learning),k-均值算法也有一些局限性:

1.k-均值算法必须给定簇的个数$K$,让算法随机选择$K$或者人为给定不合适的$K$,会导致算法的结果不理想。

  • 例如,对于上面代码中的例子($K=4$),以下为$K=3$和$K=5$时的聚类结果:
K=3
K=5

2.因为每个簇的代表向量是随机初始化的,因此每次运行k-均值算法的结果都不一样。并且初始化的代表向量的选择也会影响最终的聚类结果。

  • 例如,对于上面的例子,在保持$K=4$,循环次数为10,有近似向量集的情况下,运行会出现以下结果:
  • 被初始化在边缘的红色代表向量,因离其他簇的向量较远,始终得不到更新。

Outro

尾巴

聚类算法,及其典型的k-均值算法有非常多的应用场景,例如,Image clustering, Document topic discover, Recommendation engine, Guessing missing entries等。
有关算法及其应用会继续学习研究,欢迎大家一起交流。


References

参考资料

1. S. P. Boyd and Lieven Vandenberghe, Introduction to applied linear algebra : vectors, matrices, and least squares. Cambridge: Cambridge University Press, 2018.

“StatQuest: K-means clustering,” www.youtube.com. https://youtu.be/4b5d3muPQmA (accessed Feb. 13, 2023).


原创文章,转载请标明出处
Made by Mike_Zhang




感谢你的支持

K-均值算法 | K-Means Clustering
https://ultrafish.io/post/k-means-clustering/
Author
Mike_Zhang
Posted on
February 15, 2023
Licensed under