Python中的凝聚层次聚类

2025年1月5日 | 阅读 7 分钟

在信息分析、机器学习和数据挖掘领域,层次聚类是一种强大而适应性强的技术。它是对相似数据点进行聚类的广泛使用的方法,这使其成为图像处理、生物学、社会科学和金融等许多领域的重要工具。

Agglomerative Hierarchical Clustering in Python

通过根据相似性对数据点进行聚类,这种称为层次凝聚聚类的方法会创建数据的层次表示。

与 K-均值等其他聚类方法不同,层次聚类不需要用户预先确定簇的数量。相反,它会生成一个树状图,这是一个树状结构,其中每个数据点最初都是一个单独的簇,并根据相似性与其他簇合并,最终形成一个层次结构。

层次聚类的关键概念

  1. 相似性度量:层次聚类的第一步是定义相似性度量。常见的度量包括欧几里得距离、曼哈顿距离、余弦相似度或相关距离。相似性度量的选择取决于数据的性质和要处理的具体问题。
  2. 凝聚方法:在层次聚类中,有几种不同的合并簇的方法。最常见的两种凝聚方法是:
    1. 单链接:该方法测量正在考虑的两个簇内两个最相似数据点之间的相似性。它倾向于创建长而细的簇,并且对异常值敏感。
    2. 全链接:该技术测量两个簇内两个最不相似数据点之间的相似性。它倾向于创建紧凑的圆形簇,并且对异常值更稳健。
  3. 树状图:层次聚类的输出是树状图,它是一个树状结构,显示了不同层次的簇合并。数据点表示为树的叶子,当你向上移动树时,簇是通过合并它们的子节点形成的。簇合并的高度或距离表示它们之间的不相似性。

层次聚类的优点

  1. 无需预先指定簇:与 K-均值聚类不同,层次聚类不需要您提前指定簇的数量。当您对数据的底层结构没有先验知识时,这会特别有用。
  2. 层次表示:树状图提供了数据的层次视图,允许您在不同的粒度级别上探索数据的结构。这有助于理解簇之间的关系。
  3. 可解释性:层次聚类通常比其他方法更具可解释性,因为它捕捉了簇的嵌套。当您需要向非技术利益相关者呈现结果时,这会很有用。
  4. 对噪声和异常值的稳健性:与单链接或 K-均值等其他方法相比,全链接聚类对噪声和异常值的稳健性更强。

层次聚类的应用

  1. 生物学:在基因组学中,层次聚类用于对具有相似表达模式的基因进行分组,或根据其遗传特征对生物样本进行聚类。
  2. 客户细分:在营销和电子商务中,它被用于客户细分,以识别具有相似行为和偏好的客户群体。
  3. 图像处理:层次聚类用于图像分割,它可以对具有相似颜色或纹理的像素进行分组,以识别图像中的对象。
  4. 文本挖掘:它用于对具有相似内容的文件进行聚类,是组织和总结大型文本语料库的宝贵工具。
  5. 异常检测:在网络安全中,层次聚类可用于通过聚类正常的网络流量模式来检测异常或可疑行为。

挑战与注意事项

  1. 可扩展性:层次聚类可能在计算上成本高昂,尤其是在大型数据集上。通常使用高效的算法和数据降维技术来缓解此问题。
  2. 相似性度量的选择:选择正确的相似性度量至关重要,选择应以数据的性质和具体问题为指导。
  3. 确定簇的数量:虽然层次聚类不需要提前指定簇的数量,但您仍然可能需要确定在何处切割树状图以获得特定数量的簇。这可能是主观的和问题相关的。
  4. 处理高维数据:由于维度灾难,层次聚类在高维数据上的表现可能不佳。可以使用 PCA 等降维技术来解决此问题。

凝聚层次聚类

凝聚层次聚类是最流行的聚类方法之一。它遵循“自下而上”的方法,从每个数据点作为一个单独的簇开始,然后逐步合并这些簇,直到只剩下一个。结果是一个层次结构,通常表示为树状图,它直观地说明了数据点之间的聚类关系。过程一直持续到达到所需的簇数或满足某个停止条件为止。

距离度量

层次聚类的核心是距离度量的概念。这些度量量化数据点之间的相似性或不相似性。常见的距离度量包括欧几里得距离、曼哈顿距离和各种链接方法。距离度量的选择可能显著影响聚类结果。

链接方法

链接方法决定了在凝聚过程的每一步如何合并簇。不同的链接方法具有不同的合并簇的标准。一些常见的链接方法包括:

  • 单链接:它根据两个不同簇中任意两个点之间的最短距离来合并簇。它倾向于创建长链状簇。
  • 全链接:它根据两个不同簇中任意两个点之间的最大距离来合并簇。它倾向于创建紧凑的球形簇。
  • 平均链接:它根据两个不同簇中所有点之间的平均距离来合并簇。它在单链接和全链接之间取得平衡。

链接方法的选择会影响簇的形状和质量。

凝聚聚类过程

凝聚层次聚类过程可分为以下步骤:

  • 初始化:从每个数据点作为单独的簇开始。
  • 计算距离:使用选定的距离度量计算所有簇之间的成对距离。
  • 合并簇:确定最近(最相似)的簇对,并根据选定的链接方法合并它们。
  • 更新距离矩阵:重新计算新形成的簇与剩余簇之间的距离。
  • 重复:继续迭代过程,直到只剩下一个簇或满足其他停止条件。

树状图

树状图是层次聚类过程的可视化表示。它看起来像一棵树状图,数据点是叶子,簇是内部节点。树状图中每个分支的高度代表簇或数据点之间的不相似性。通过在特定高度切割树状图,您可以获得不同数量的簇。在层次聚类中,在哪里切割树状图的选择是一个关键决定。

簇的数量

确定合适的簇数量是层次聚类中的一个关键步骤。此决定可以基于领域知识、树状图的结构或定量方法,例如肘部法则。肘部法则涉及观察簇内方差随着簇数量的增加如何减小。“肘部”点在图上表示最佳簇数量。

凝聚层次聚类的应用

凝聚层次聚类广泛应用于生物学、社会科学、营销和图像分析等各个领域。在生物学中,它可以帮助根据遗传数据对物种进行分类。在营销中,它可以对客户进行细分以进行定向广告。在图像分析中,它可以对相似图像进行分组以进行基于内容的检索。

凝聚层次聚类的优点

凝聚层次聚类具有以下优点:

  • 可解释性:树状图提供了聚类结构的清晰可视化表示。
  • 层次结构:它同时捕捉细粒度和粗粒度簇的关系。
  • 无需先验知识:无需事先了解簇的数量即可使用。
  • 灵活的链接方法:您可以定制聚类过程以适应您数据的特定特征。

挑战与注意事项

尽管有其优点,凝聚层次聚类仍存在一些挑战和考虑因素:

  • 计算复杂性:该方法可能在计算上成本高昂,尤其是在大型数据集上。
  • 对噪声的敏感性:它可能对数据中的异常值和噪声敏感。
  • 参数选择:选择合适的距离度量和链接方法可能会影响结果。
  • 可扩展性:层次聚类可能不适合非常大的数据集。

总之,凝聚层次聚类是一种多功能的聚类方法,它创建一个簇的层次结构,从而能够对数据的分组进行详细或粗粒度的洞察。它依赖于距离度量和链接方法来迭代地合并簇。其可视化表示树状图有助于理解聚类关系。这项技术在各个领域都有应用,并在可解释性和灵活性方面提供了优势,但它也带来了与计算复杂性和对噪声的敏感性相关的挑战。当深思熟虑地应用并使用正确的参数时,凝聚层次聚类可以为复杂数据集提供宝贵的见解。

源代码

输出

1. 代表凝聚层次聚类的图

Agglomerative Hierarchical Clustering in Python

2. 代表树状图的图

Agglomerative Hierarchical Clustering in Python