【机器学习】常见的聚类算法——凝聚型层次聚类算法(Agglomerative Clustering)

本文介绍了层次聚类算法,包括凝聚型和分裂型两种类型,重点讲解了凝聚型层次聚类的过程,以及如何通过计算样本间的相似度进行合并。还提供了使用AgglomerativeClustering在鸢尾花数据集上的实例,并讨论了单链法、完全链法和平均链法计算组合数据点间距离的不同策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

层次聚类算法

层次聚类是一种常用的无监督学习方法,用于将数据集中的样本按照相似性进行分组或聚类。与其他聚类算法不同的是,层次聚类不需要事先指定要分成多少个簇,而是通过逐步合并或划分样本来构建一个层次结构,从而形成一棵聚类树(也称为树状图或谱系图)。

层次聚类可以分为两种主要类型:凝聚型(自底向上)和分裂型(自顶向下)。

  • 凝聚型层次聚类(Agglomerative Clustering)从每个样本作为一个独立的簇开始,然后迭代地合并最接近的簇,直到满足某个停止条件。这个过程通过计算样本之间的相似度(如欧氏距离、余弦相似度等)来确定簇的合并顺序。

  • 分裂型层次聚类(Divisive Clustering)则相反,它从所有样本作为一个簇开始,然后迭代地将簇逐步分裂为更小的子簇,直到满足某个停止条件。这个过程通过计算样本之间的差异度来确定簇的分裂顺序。

本文主要研究凝聚型层次聚类算法(Agglomerative Clustering)

层次聚类的结果可以通过树状图展示,树中的每个节点代表一个簇或子簇。根据需要,可以通过剪枝来选择最终的聚类簇数。

层次聚类的优点是不需要预先指定簇的数量,并且能够提供更详细的聚类结构信息。然而,层次聚类的计算复杂度较高,尤其是对于大规模数据集而言。此外,由于聚类过程中的合并或分裂决策是基于样本之间的相似性度量,因此对数据质量和相似性度量的选择十分重要。
在这里插入图片描述

凝聚型层次聚类(Agglomerative Clustering)

层次聚类的合并算法通过计算两类数据点间的相似性,对所有数据点中最为相似的两个数据点进行组合,并反复选代这一过程。简单的说层次聚类的合并算法是通过计算每一个类别的数据点与所有数据点之间的距离来确定它们之间的相似性,距离越小,相似度越高。并将距离最近的两个数据点或类别进行组合,生成聚类树。
在这里插入图片描述

相似度的计算

层次聚类使用欧式距离来计算不同类别数据点间的距离(相似度)
在这里插入图片描述

实例1

数据点如下:
在这里插入图片描述
对于以上的数据点,计算各点之间的欧氏距离,得到一个距离矩阵:
在这里插入图片描述
找出该矩阵中,除了自己到自己之外的距离的最小值。如上图中,C到B的值为1,是所有距离中最小的,因此,就把B和C组合在一起。
将数据点B与数据点C进行组合后,重新计算各类别数据点间的距离知阵。数据点间的距离计算方式与之前的方法一样。
这里需要说明的是组合数据点(B,C)与其他数据点间的计算方法。当我们计算(B,C)到A的距离时,需要分别计算B到A和C到A的距离均值。
在这里插入图片描述
经过计算数据点D到数据点E的距离在所有的距离值中最小,为1.20。这表示在当前的所有数据点中(包含组合数据点),D和E的相似度最高。因此我们将教据点
D和数据点E进行组合。并再次计算其他数据点间的距离。
在这里插入图片描述
后面的工作就是不断的重复计算数据点与数据点,数据点与组合数据点间的距离。这个步骤应该由程序来完成。这里由于数据量较小,我们手工计算并列出每一步的距离计算和数据点组合的结果。

两个组合数据点间的距离

计算两个组合数据点间距离的方法有三种,分别为Single Linkage,Complete Linkae和Average Linkage。在开始计算之前,我们先来介绍下这三种计算方法以及各自的优缺点。

  1. Single Linkage: 方法是将两个组合数据点中距离最近的两个数据点间的距离作为这两个组合数据点的距离。这种方法容易受到极端值的影响。两个很相似的组合数据点可能由于其中的某个极端的数据点距离较近而组合在一起。
  2. Complete Linkage: Complete Linkage的计算方法与Sinole Linkage相反,将两个组合数据点中距离最远的两个数据点间的距离作为这两个组合数据点的距离。Complete Linkage的问题也与Sindle Linkage相反,两个不相似的组合数据点可能由于其中的极端值距离较远而无法组合在一起。
  3. Average Linkage:Average Likae的计算方法是计算两个组合数据点中的每个数据点与其他所有数据点的距离。将所有距离的均值作为两个组合数据点间的距离。这种方法计算量比较大,但结果比前两种方法更合理。

我们使用Average Linkage计算组合数据点间的距离。下面是计算组合数据点(A.F)到(B,C)的距离,这里分别计算了(A.F)和(B.C)两两间距离的均值.
在这里插入图片描述

实例2

以下是一个使用AgglomerativeClustering层次聚类算法对鸢尾花数据集进行聚类,并可视化处理的代码示例和详细注释:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt 
from sklearn.cluster import AgglomerativeClustering
from sklearn.datasets import load_iris

# 加载鸢尾花数据集
data = load_iris()
X = data.data
y = data.target

# 实例化AgglomerativeClustering对象,指定聚类数量为3
cluster = AgglomerativeClustering(n_clusters=3)

# 将数据进行聚类
cluster.fit(X)

# 获取每个样本所属的簇标签
labels = cluster.labels_

# 定义颜色映射
colors = np.array(['red', 'green', 'blue'])

# 可视化聚类结果
plt.scatter(X[:, 0], X[:, 1], c=colors[labels])
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.show()

以上就是一个使用AgglomerativeClustering层次聚类算法对鸢尾花数据集进行聚类,并可视化处理的代码示例和详细注释。该算法的本质是通过不停地合并最接近的簇,直到簇的数量达到预设的聚类数量。具体来说,它采用自底向上的策略,先将每个样本作为一个簇,然后迭代地将最接近的簇合并,直到达到指定的簇数量或者所有样本都被合并在同一个簇中。

  • 代码运行结果如下:
    在这里插入图片描述

视频来源-层次聚类

### 回答1: 聚类分析是一种常用的数据挖掘方法,它将数据点聚在一起形成聚类。聚合聚类Agglomerative Clustering)是一种层次聚类方法,它通过不断将距离最近的类合并来形成最终的聚类结果。这种方法通常使用自底向上的方法,首先将每个数据点看作一个单独的类,然后不断合并最相似的类直到所有类被合并为一个类为止。 ### 回答2: agglomerative clustering是一种聚类算法,也称为自底向上聚类。它的目标是将一组数据点划分为不同的聚类。此算法的基本思想是,首先将每个数据点视为一个单独的聚类,然后通过合并相似的聚类来构建更大的聚类,直到满足停止条件为止。 在聚类的过程中,agglomerative clustering通过计算两个聚类之间的距离来决定它们是否应该合并。常用的距离度量方法有欧氏距离、曼哈顿距离、余弦相似度等。初始时,每个数据点被视为一个单独的聚类,然后通过不断合并最相似的聚类来构建更大的聚类,直到所有的数据点都被合并到一个聚类中,或达到预先设定的聚类数量。 agglomerative clustering需要指定一个合并聚类的准则。常见的准则包括:最小距离(merge两个聚类中距离最近的点),最大距离(merge两个聚类中距离最远的点),平均距离(merge两个聚类中所有点的距离平均值)等。 agglomerative clustering的优点是算法简单易懂,容易实现,并且不需要预先指定聚类的数量。然而,该算法的时间复杂度较高,特别是在处理大规模数据集时。此外,由于该算法的合并过程是不可逆的,因此聚类过程中一旦合并操作发生错误,将无法修正。 总之,agglomerative clustering是一种常用的聚类算法,通过自底向上的方式逐步合并相似的聚类来构建更大的聚类。它的灵活性和简单性使得它成为研究领域和实际应用中常用的方法之一。 ### 回答3: agglomerative clustering是一种聚类算法,它属于无监督学习的范畴。在聚类过程中,它将每个样本视为一个簇,并将它们逐步合并成越来越大的簇,直到满足停止条件为止。 该算法的运行过程可以简要描述如下:首先,将每个样本看作一个初始簇;其次,计算两两样本之间的距离,并构建一个距离矩阵;然后,选择距离最小的两个簇进行合并,并更新距离矩阵;最后,重复上述步骤,直到满足停止条件。 合并的过程中,常见的距离度量方法有欧氏距离、曼哈顿距离、余弦相似度等。停止条件可以根据具体需求来设定,比如簇的数量达到预设的值、簇的直径或直接距离超过某个阈值等。 agglomerative clustering算法相比于其他聚类算法的优势在于,它不需要预先设定聚类的数量。由于采用了自底向上的合并策略,该算法能够根据样本之间的相似性自适应地生成聚类结构。 然而,agglomerative clustering的缺点在于计算复杂度较高,尤其是在样本数量较大的情况下。此外,它对初始化非常敏感,不同的初始化方法可能会导致不同的聚类结果。 总之,agglomerative clustering是一种基于合并策略的聚类算法,具有无需预设聚类数量的优势,成功应用于图像分割、生物信息学和社交网络等领域。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值