OpenCV 4.11.0
开源计算机视觉库
加载中…
搜索中…
无匹配项
理解K均值聚类

目标

本章我们将了解K均值聚类的概念、工作原理等。

理论

我们将通过一个常用的例子来讲解。

T恤尺码问题

假设一家公司即将发布一款新型T恤。显然,他们必须生产不同尺码的T恤才能满足各种身材的人的需求。因此,公司收集了人们的身高和体重数据,并将它们绘制在图表上,如下所示:

图片

公司不可能生产所有尺码的T恤。相反,他们将人们分为小型、中型和大型,只生产这三种尺码的T恤,以适应所有人的体型。这种将人们分成三组的方法可以通过K均值聚类来实现,该算法可以为我们提供最合适的三个尺码,以满足所有人的需求。如果效果不理想,公司可以将人们分成更多组,例如五组,等等。请查看下面的图片:

图片

工作原理?

该算法是一个迭代过程。我们将借助图片一步一步地解释它。

考虑如下所示的一组数据(您可以将其视为T恤问题)。我们需要将此数据聚类成两组。

图片

步骤1:算法随机选择两个质心,\(C1\) 和 \(C2\)(有时,任何两个数据点都被作为质心)。

步骤2:计算每个点到两个质心的距离。如果一个数据点到\(C1\)的距离更近,则该数据点被标记为'0'。如果它到\(C2\)的距离更近,则标记为'1'(如果有更多质心,则标记为'2'、'3'等)。

在本例中,我们将所有标记为'0'的数据点涂成红色,将标记为'1'的数据点涂成蓝色。经过上述操作后,我们将得到如下所示的图片。

图片

步骤3:接下来,我们分别计算所有蓝色点和红色点的平均值,这将成为我们的新质心。也就是说,\(C1\) 和 \(C2\) 移动到新计算的质心。(请记住,显示的图片并非真实值,也不是按真实比例绘制的,仅供演示)。

然后,使用新的质心再次执行步骤2,并将数据标记为'0'和'1'。

我们将得到如下结果:

图片

现在,步骤2步骤3将迭代进行,直到两个质心都收敛到固定点。(或者根据我们提供的标准停止迭代,例如最大迭代次数或达到特定精度等)。这些点使得测试数据与其对应质心之间的距离之和最小。或者简单地说,\(C1 \leftrightarrow 红色点\)和\(C2 \leftrightarrow 蓝色点\)之间的距离之和最小。

\[最小化 \;\bigg[J = \sum_{所有红色点}distance(C1,红色点) + \sum_{所有蓝色点}distance(C2,蓝色点)\bigg]\]

最终结果大致如下所示:

图片

这只是一个对K均值聚类的直观理解。有关更多详细信息和数学解释,请阅读任何标准的机器学习教科书或查看附加资源中的链接。这只是K均值聚类的表层知识。该算法有很多改进之处,例如如何选择初始质心、如何加快迭代过程等。

附加资源

  1. 机器学习课程,Andrew Ng教授的视频讲座(部分图片取自此课程)