Mini Batch K-means 聚类算法

2025年6月21日 | 阅读 5 分钟

K-means 因其速度性能而成为最著名的聚类算法之一。随着待分析数据量的增加,K-means 的计算时间也随之增长,因为它有一个限制,即需要将整个数据集存储在内存中。这就是为什么提出了多种方法来降低该方法的时空成本。另一种可以使用的方法是Mini Batch K-means 算法

Mini Batch K-means 算法的主要思想是利用固定大小的小型随机数据样本,这些样本可以存储在内存中。每次从数据集中抽取一个新的随机样本并用于更新聚类;此过程一直重复直到收敛。每个 mini-batch 使用原型和数据结果的近似组合来更新聚类,并使用随迭代次数减少的学习率。这个学习率与在整个过程中分配给聚类的数据量成反比。当迭代次数增加且新数据添加的影响减小时,当连续迭代中聚类没有发生变化时,观察到收敛。研究表明,该算法可以显著节省计算时间,但会以降低聚类质量为代价,但尚未对该方法进行广泛分析,以确定数据的特定特性(如聚类的大小或其规模)如何影响分区质量。

Mini Batch K-means clustering algorithm

每个数据批次根据聚类质心的先验位置分配给聚类。该算法每次都使用小而随机的数据部分。然后,它根据批次中的更新点更新聚类质心的位置。更新是梯度下降更新的一种,比标准的批量 K-Means 更新快得多。

算法

以下是 Mini K-means 批处理使用的算法。

Mini Batch K-means clustering algorithm

说明

Mini Batch K-means 是一种使用微小的随机样本而不是完整数据集来更新聚类的方法。算法的工作方式如下:

  1. 随机初始化聚类质心。
  2. 从数据集中抽取一个预定大小的随机样本(mini-batch)。
  3. 使用质心的先前位置,将 mini-batch 中的数据点分配给最近的质心。
  4. 使用更快的类梯度下降更新来更新质心位置,这取决于 mini-batch 中的点。
  5. 重复步骤 2 到 4,直到达到收敛。

实施

使用 scikit-learn 库对上述算法的 Python 实现

代码

Mini-batch K-means 比普通批量 K-means 更快,但产生的结果略有不同。

在这种情况下,我们首先使用 K-means 对一组数据进行分组,然后使用 mini-batch K-means。然后我们显示结果。我们还绘制了这两种方法中具有不同标签的点。

Mini Batch K-means clustering algorithm

随着聚类数量和数据量的增加,计算时间也随之增加。只有在聚类数量很大的时候,计算节省才显现出来。批次大小对计算时间的影响在聚类数量较高时更为明显。可以得出结论,聚类数量的增加降低了 Mini-Batch K-Means 算法与 K-means 解决方案之间的相似度。同时,当聚类数量增加时,分区的协议会降低。然而,目标函数并没有以同样的方式减小。这意味着所有最终分区都会有所不同;然而,它们的质量更接近。

与 K-means 比较

  • 由于使用了较少的数据样本,Mini Batch K-means 比常规 K-means 更快。
  • 尽管聚类结果可能与 K-means 的结果略有不同,但权衡在于效率和聚类质量。
  • 大量的聚类安排最能受益于节省时间,这些节省随着聚类大小的增加而增加。
  • 对于较大的聚类,批次大小对计算时间和聚类质量的影响越来越大。
  • 尽管与 K-means 相比,聚类质量可能略有下降,但与目标函数的总体一致性仍然相当好。

实际用例

Mini Batch K-means 用于各种领域,例如:

  • 图像分割:对照片中的物体进行检测和识别的像素聚类。
  • 文档聚类:用于组织和分析大型文本语料库,对相似文档进行分组。
  • 客户细分:将客户分为不同的群体,以提供有针对性的广告和个性化关怀。

鉴于其有效处理大数据能力,它特别适合需要大型数据集的场景。该算法的快速和可扩展性使得能够对不断变化的数据流进行快速响应,以进行实时聚类作业。

参数调整技巧

考虑调整聚类数量、学习率和最大迭代次数等参数,以最大化 Mini Batch K-means 的性能。尝试多种参数,以确定最适合您特定数据集和需求的参数。

结论

Mini Batch K-means 聚类算法为传统 K-means 在大型数据集上遇到的计算难题提供了一个实用的解决方案。虽然它可能会带来略有不同的聚类结果,但其效率使其在大数据应用中非常重要。通过了解效率和聚类质量之间的权衡,专家可以利用 Mini Batch K-means 的强大功能来执行灵活且强大的数据聚类。