33天搞定机器学习:层次聚类简介、原理、步骤、参数解析、案例
作者头像
  • 吃瓜群众
  • 2020-05-13 10:02:11 8

大家好,我是一名Python数据分析师,希望通过这篇文章分享我在机器学习领域的学习经历。为此,我编写了“人工智能四部曲”系列:《15天学会Python编程》、《每天10分钟,用Python学数据分析》、《Python数据可视化实战》以及《33天搞定机器学习》。


聚类算法在用户画像、广告推荐、新闻推送和图像分割等方面有着广泛应用,其中层次聚类是一种常见且重要的算法。在上一篇文章中,我们已经探讨了K-means算法,有兴趣的朋友可以回顾一下。本文是《33天搞定机器学习》系列的第21篇,我们将介绍另一种常用的聚类算法——层次聚类。

层次聚类

层次聚类假设类别之间存在层级结构,逐步将样本聚集成多层次的类别。这种方法可以通过自顶向下的分裂策略或自底向上的聚合策略来实现。

聚合聚类

聚合聚类的基本思路是,最初将每个样本视为一个独立的类别,随后不断合并距离相近的两类,直至满足特定条件,形成层次化的分类结构。

分裂聚类

分裂聚类则相反,初始时所有样本属于同一类别,之后逐步将距离较远的样本分为新的类别,直至满足特定条件,同样形成层次化的分类结构。

本文重点讨论聚合聚类。

簇间距离度量

层次聚类算法的合并或拆分都是基于簇间相似度来进行的,通常用距离来衡量簇间或样本间的相似度。距离越小,相似度越高;反之亦然。以下是几种常见的簇间距离度量方法:

  1. 最小距离法:以簇间样本点距离的最小值作为度量标准。但该方法容易受到极端值的影响。

  2. 最大距离法:以簇间样本点距离的最大值作为度量标准。同样,该方法也容易受到极端值的影响。

  3. 平均距离法:为了平衡上述两种方法的缺点,可以采用平均距离法,即以簇间样本点距离的平均值作为度量标准。

样本间的距离计算方法与K-means算法类似,这里不再赘述。

层次聚类的步骤

了解了点与点、点与簇、簇与簇之间的距离度量标准后,接下来需要掌握层次聚类的具体步骤:

  1. 将数据集中每个样本点视为一个独立的类别。
  2. 计算所有样本点之间的两两距离,并从中选择最小距离的两个点合并成一个簇。
  3. 继续计算剩余样本点之间的两两距离和点与簇之间的距离,然后将最小距离的点或簇合并到一起。
  4. 重复步骤2和3,直到满足聚类数量或其他设定条件,算法结束。

以上步骤可能比较抽象,下面是一个形象的GIF展示:


参数说明

在Scikit-Learn库中,sklearn.cluster.AgglomerativeClustering类提供了层次聚类功能,其主要参数包括:

  • n_clusters:指定聚类的数量,默认为2。
  • affinity:指定样本间距离的度量方法,默认为欧氏距离。
  • memory:是否启用缓存,默认不启用。
  • connectivity:指定连接矩阵。
  • computefulltree:默认情况下,算法会在达到指定聚类数量时停止,若设置为True,则生成完整的凝聚树。
  • linkage:指定簇间距离的度量方法,默认为“ward”,即最小距离法;其他选项包括“complete”(最大距离法)和“average”(平均距离法)。

层次聚类案例

层次聚类算法相对简单易用。这里以经典的鸢尾花数据集为例。每朵鸢尾花有四个特征:萼片长、萼片宽、花瓣长和花瓣宽。我们的目标是根据这四个特征的不同将鸢尾花分成不同的类别,以便更好地帮助植物学家进行研究。

以下是可视化结果:


希望这些内容对大家有所帮助,欢迎大家订阅以获取更多相关代码和数据集。

    本文来源:图灵汇
责任编辑: : 吃瓜群众
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
搞定步骤解析层次原理机器参数案例简介学习
    下一篇