聚类算法

机器学习数据集可能有数百万 但并非所有聚类算法都能高效扩展。大量聚类 算法会计算所有样本对之间的相似度, 意味着它们的运行时间会随样本数量的平方而增加 \(n\), 以复杂度 \(O(n^2)\) 表示。 \(O(n^2)\) 算法并非 适合具有数百万个示例的数据集。

k-means 算法具有 \(O(n)\)的复杂程度,即算法会根据 \(n\)以线性方式扩缩。 本课程将重点介绍此算法。

聚类的类型

有关不同聚类方法的详尽列表,请参阅 聚类算法的全面调查 Xu, D.& Tian, Y. 安,数据。科学(2015) 2:165。每种方法最适合 特定的数据分布。本课程简要介绍了 方法。

基于形心的聚类

聚类的形心是 计算所有数据点的算术平均值 集群。基于形心的聚类将数据整理为不分层的数据 集群。基于形心的聚类算法虽然高效, 初始条件和离群值。其中,k-means 是 广泛使用。需要用户定义形心数、k 和 k 非常适合大小大致相同的集群。

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

基于密度的聚类

基于密度的聚类将高样本密度的连续区域连接到 集群。这样可以发现任意数量的任意形状的聚类。 离群值不会分配给集群。这些算法难以处理 不同密度的聚类以及具有高维度的数据。

使用基于密度的聚类将样本划分为两个聚类。
      这些聚类无法线性分离。
图 2:基于密度的聚类示例。

基于分布的聚类

这种聚类方法假设数据由概率分布、 例如 高斯分布。在 图 3 中,基于分布的算法将数据聚类到三类高斯分布图中 分发。随着与分布中心的距离的增加, 某个点属于该分布的概率降低。乐队表演 概率降低的情况。当您不愿假定某个特定的 您应使用其他算法。

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

层次聚类

分层聚类可创建聚类树。层次聚类, 不出意料的是,它非常适合分层数据,例如分类。请参阅 61 个序列的大肠杆菌基因组的比较 作者:Oksana Lukjancenko、Trudy Wassenaar 和以戴维·乌西里 (Dave Ussery) 为例。 通过在正确的级别切割树,可以选择任意数量的聚类。

使用层次树对动物进行聚类。
图 4:层次树聚类动物的示例。