聚类算法

我们来快速了解一下聚类算法的类型以及应在何时选择每种类型。

选择聚类算法时,您应考虑该算法是否会扩展到您的数据集。机器学习中的数据集可能有数百万个示例,但并非所有聚类算法都可以高效地扩缩。许多聚类算法通过计算所有示例对之间的相似度来发挥作用。这意味着其运行时随样本数量的平方 \(n\)而增加,表示为 \(O(n^2)\) 复杂性表示法。 \(O(n^2)\) 如果样本数量为数百万,则算法并不实用。本课程重点介绍了 k-含义算法,其复杂性为 \(O(n)\),即算法与 \(n\)线性扩展。

聚类类型

聚类有多种。如需详尽的列表,请参阅对聚类算法进行全面的调查。Xu, D. Tian、Y. 年数据。科学 (2015) 2:165.每种方法都最适合特定的数据分布。下面简要介绍了 4 种常用方法,侧重于使用 k-} 方法基于形心的聚类。

形心聚类

与下面定义的分层聚类相比,形心聚类将数据整理为非分层聚类。k-} 是最常用的形心聚类算法。形心算法效率高,但对初始条件和离群值敏感。本课程重点介绍 k-average,因为它是一种高效、有效且简单的聚类算法。

使用形心聚类进行分组的示例。线条显示了聚类之间的边框。
图 1:基于形心的聚类示例。

基于密度的聚类

基于密度的聚类将高样本密度的区域连接到聚类。只要可以连接密集区域,就可以实现任意形状的分布。这些算法难以处理具有不同密度和高维度的数据。此外,根据设计,这些算法不会为集群分配离群值。

使用基于密度的聚类划分为两个聚类的示例。这些聚类不能线性分离。
图 2:基于密度的聚类的示例。

基于分布的聚类

此聚类方法假定数据由分布(例如高斯分布)组成。在图 3 中,基于分布的算法将数据聚类为三个高斯分布。随着与分布中心的距离增加,点属于分布的可能性会降低。频段显示概率下降。如果您不知道数据的分布类型,则应使用其他算法。

使用基于分布的聚类进行聚类的示例。每个聚类中样本密度的阴影反映了聚类如何映射到分布。
图 3:基于分布的聚类示例。

分层聚类

分层聚类会创建一个聚类树。毫无疑问,分层聚类非常适合分类数据,例如分类。有关示例,请参阅 Oksana Lukjancenko、Trudy Wassenaar 和 Dave Ussery 的 61 Sequence Escherichia coli Genomes 比较。此外,另一个好处是可以通过在适当的级别裁剪树来选择任意数量的集群。

使用分层树聚类的动物。
图 4:聚类动物的分层树示例。