K均值聚类


2021年12月17日, Learn eTutorial
1759

现在我们将介绍机器学习算法的一个重要系列,它们在从搜索引擎到患者诊断的许多实际用例中都发挥着作用:聚类。因此,我们需要讨论聚类和聚类的类型。

聚类

机器学习专家的目标是建立一个能够提供准确预测的模型。我们已经讨论过,这些算法通常分为两种类型: 
1.    监督式机器学习 
2.    非监督式机器学习
K 均值聚类属于一种无监督学习算法,这意味着没有带标签的数据来训练模型。

聚类旨在将不同的数据点分组到彼此相似的集合中,并与其他组区分开来。在聚类的背景下,相似性由坐标系中两个数据点之间的距离定义。如果我们对为特定数据点分配标签感兴趣,这是一个分类问题。然而,聚类也可以是一个无监督学习问题,具体取决于应用。

各种聚类类型有
1.    层次聚类:在层次聚类中,它使用树状结构进行聚类。
2.    划分聚类:在划分聚类中,数据点被划分为不同的分区。

层次聚类又可以进一步分为
1.    凝聚聚类
2.    分裂聚类

划分聚类分为
1.    K 均值聚类
2.    模糊 C 均值聚类

Clustering

有几种算法以不同的方式对数据进行聚类,但我们将重点关注一种简单且广泛使用的算法:K 均值聚类。

什么是机器学习中的 K 均值聚类?

K 均值聚类是一种旨在将数据点分为 k 个簇的方法。请注意,参数 k 是用户定义的——我们需要告诉算法数据中有多少组。
例如,如果 k = 2,这意味着将只有 2 个簇。如果 k = 3,这意味着将有 3 个簇。

使用 K 均值算法,我们可以将数据聚类成不同的组或类别。它帮助我们理解这些类别,并将未标记的数据分类到这些类别中,而无需使用训练数据集或训练模型。

K 均值聚类基于质心,这意味着在 K 均值算法中,每个簇都有一个质心,算法尝试减少数据与其数据簇之间的距离之和。

在此算法中,它接收未标记的数据,并使用参数 K 将这些数据分成用户指定的簇数。此过程重复进行,直到获得完美的簇。

K 均值算法有三个通用步骤

  1. 随机设置 k 坐标的最佳值作为每个簇(质心)的中心。
  2. 对于所有数据点,计算数据点和质心之间的欧几里得距离。 
    • 根据聚类分配为数据点分配标签。
    • 数据点被分配到与数据点和质心之间欧几里得距离最小的簇。
  3. 重新中心化质心,使质心位于每个 k 簇所有数据点的中间。 

之后,我们将得到具有共同特征的数据点的簇。下面是 K 均值聚类在实际应用中的表示。黑色的“+”号是最初随机分配的质心。黑线表示决策边界:算法学习到的将数据点分隔到不同簇的规则。

Clustering

对于每次迭代,我们都在计算每个数据点和质心之间的距离。每次迭代后,对不同类别的分配都会改变。新的簇分配会改变质心位置,因为我们正在确定给定簇的新中心值。 

每次迭代后,随着算法随着时间的推移找到类之间的最佳分离,类分配趋于稳定。这种模型分配的稳定化被称为模型收敛。

K 均值聚类算法如何工作? 

现在我们对 K 均值聚类及其工作原理有了基本的了解,现在我们将详细了解 K 均值聚类的工作原理。

步骤 1:使用参数 K 决定所需的簇数量
步骤 2:选择质心或一些随机点 [不需要来自数据集]
步骤 3:将数据点添加到最近的质心,这些质心将来自簇。
步骤 4:计算方差并为每个簇创建与方差相关的质心
步骤 5:将数据点重新分配到新的质心并创建新的簇
步骤 6:如果发生任何重新分配,请从步骤 4 重复
步骤 7:完成模型并准备投入使用。 

K 均值聚类工作原理的详细视图

假设我们有两个数据变量 s1 和 s2。这些数据变量的图形表示如下所示。

K-meansClustering

现在我们要决定参数K的值,这意味着我们必须决定有多少个簇,这里我们提供k=2。现在我们需要将这些数据点分组到这两个簇中。寻找K值有多种方法可用。

下一步是确定质心,目前我们只是将一些随机的 k 个点作为质心来创建簇。这些随机点可能来自数据集,也可能来自任何外部点。在下图中,我们选择了与数据集不同的质心。

K-meansClustering

下一步是将这些图中的数据点分配给质心或 k 点。我们使用计算点之间距离的相同公式。之后,我们必须在两个质心之间画一条线,称为中位数。

K-meansClustering

现在我们有了中位数,从图中可以看出,中位数上方的点靠近绿色质心,中位数下方的点靠近黄色质心。因此,我们根据质心将数据点的颜色更改为绿色和蓝色,如下图所示。

K-meansClustering

现在我们有一些点属于两个质心。现在我们必须找到最近的簇,以便我们重复这个过程并找到一个新的质心,它几乎是质心的中心,如图所示。

K-meansClustering

现在我们得到了新的质心,我们重复将数据点链接到新质心的过程,并根据新质心绘制新的中位数,如下图所示。

K-meansClustering

现在当我们检查上面的图片时,我们可以发现一个黄色数据点低于新的中位数,两个绿色数据点高于中位数。因此,我们必须将这些数据点链接到各自的新质心,如下图所示。

K-meansClustering

因此,在与新数据点重新链接质心之后,簇的重心会发生变化,我们必须重复该步骤以找到具有新数据点的新质心。如下图所示。

K-meansClustering

再次,我们必须找到新簇的新中位数,并在质心之间绘制中位数,如下图所示。我们现在正在重复上述步骤。

K-meansClustering

现在当我们检查数据点时,将没有任何点需要重新分配,因此聚类完成,我们的模型也几乎完成

K-meansClustering

形成簇后,我们必须移除质心、中位数以及我们为创建簇而构建的所有其他结构,最终的簇将是 

K-meansClustering

如何找到 K 值?

K 均值聚类完全依赖于簇,并且在确定将影响模型准确性的最佳簇数量方面非常重要。有许多方法可以找到 k 值,其中最重要的是:

肘部法则

这是一种流行且常见的方法来找到最佳的 k 值。这种方法使用 WCSS 的概念,即“簇内平方和”,它使用公式来找到 k 值。 

这用于计算 3 个簇的 WCSS 值。 

K 均值聚类的应用

K 均值聚类是一种无监督机器学习方法,它在现实世界中具有广泛的适用性,其中一些是:

  1. 学习成绩:根据分数给学生评分
  2. 诊断系统:创建智能医疗决策支持系统 
  3. 搜索引擎:它帮助搜索引擎对搜索结果进行分组。
  4. 无线传感器网络:帮助计算收集数据到其簇的簇头

K 均值聚类的优点

  1. 易于理解和解决
  2. K 均值聚类比层次聚类更快
  3. 易于修改簇
  4. 可用于紧凑型簇
  5. 可用于未标记的数据

K 均值聚类的缺点

K 均值聚类是一种强大且直观的数据分组方法。然而,我们对 K 均值聚类的数据做出了几个假设

簇的大小需要相同。 

在上面的例子中,黄色比蓝色和红色大得多,导致了一些错误分类。 

数据方差或数据点的分布需要相同。 

同样,黄色的分布或方差比蓝色和红色更分散,导致了一些错误分类。

最后,K 均值更适用于“球形”数据集关系。

这在技术上意味着方差需要大致相同。

最后,虽然我们可以使用实际类别数量来指定超参数 k,但我们通常不知道数据中的类别数量。在这些情况下,在无监督问题中确定 k 参数可能具有挑战性。