机器学习 - BIRCH 聚类

摘要:BIRCH是一种高效的层次聚类算法,适用于大规模数据集。它通过聚类特征(CF)和子聚类特征(SCF)数据结构构建树形聚类结构,包含初始化、聚类和优化三个步骤。Python中可使用scikit-learn的Birch类实现,具有可扩展性强、内存效率高等优点,但对参数敏感且处理非球形聚类能力有限。该算法默认使用欧氏距离,在聚类速度和内存使用方面表现优异,但应用场景受限于其假设条件。

目录

[BIRCH 聚类的三个主要步骤](#BIRCH 聚类的三个主要步骤)

核心定义:聚类特征(CF)

[BIRCH 算法的四个阶段](#BIRCH 算法的四个阶段)

[Python 中 BIRCH 聚类的实现](#Python 中 BIRCH 聚类的实现)

示例

输出结果

BIRCH聚类的优势

[BIRCH 聚类的缺点](#BIRCH 聚类的缺点)

适用场景

总结


BIRCH(Balanced Iterative Reducing and Clustering using Hierarchies)是一种层次聚类算法 ,核心优势是高效处理大规模数据集(甚至是内存无法一次性加载的数据集),它通过构建一个紧凑的聚类特征树(CF Tree)来减少数据存储和计算开销。

BIRCH(平衡迭代规约与聚类层次结构)是一种层次聚类算法,专为高效处理大型数据集而设计。该算法通过递归地将数据划分为子聚类,构建树形的聚类结构,直至满足停止准则。

BIRCH 使用两种主要数据结构来表示聚类:聚类特征(CF)和子聚类特征(SCF)。聚类特征(CF)用于汇总一组数据点的统计特性,而子聚类特征(SCF)用于表示子聚类的结构。

BIRCH 聚类的三个主要步骤

  1. 初始化:BIRCH 构建一个空的树形结构,并设置一个节点中可存储的最大聚类特征(CF)数量。
  2. 聚类:BIRCH 逐个读取数据点并将其添加到树形结构中。如果节点中已存在聚类特征(CF),则用新数据点更新该聚类特征(CF);如果节点中没有聚类特征(CF),则为该数据点创建一个新的聚类特征(CF)。之后,BIRCH 会检查节点中的聚类特征(CF)数量是否超过最大阈值,若超过阈值,则通过递归划分节点中的聚类特征(CF)来创建新的子聚类。
  3. 优化:BIRCH 基于距离度量,合并相似的子聚类,从而优化树形结构。

核心定义:聚类特征(CF)

CF 是对一组数据点的压缩表示,一个 CF 三元组包含:

  • N:数据点的数量
  • LS:线性和(所有数据点的坐标之和,向量)
  • SS:平方和(所有数据点坐标的平方和,标量)

通过 CF 可以快速计算聚类的中心、半径、直径等关键指标,无需存储原始数据点。

BIRCH 算法的四个阶段

  1. 阶段 1:构建 CF 树:遍历所有数据,将数据点插入 CF 树(类似平衡树),树的每个节点是 CF 簇,控制树的高度和每个节点的最大 CF 数,保证内存可控。
  2. 阶段 2:聚类压缩:对 CF 树的叶节点进行初步聚类,减少异常值和冗余簇。
  3. 阶段 3:全局聚类:对阶段 2 的结果用传统聚类算法(如 K-Means)做全局聚类,优化簇的划分。
  4. 阶段 4:细化聚类(可选):调整全局聚类结果,提升聚类质量。

Python 中 BIRCH 聚类的实现

要在 Python 中实现 BIRCH 聚类,可使用 scikit-learn 库。该库提供了一个 BIRCH 类,用于实现 BIRCH 算法。

以下是使用 BIRCH 类对数据集进行聚类的示例:

示例

python 复制代码
from sklearn.datasets import make_blobs
from sklearn.cluster import Birch
import matplotlib.pyplot as plt

# 生成样本数据
X, y = make_blobs(n_samples=1000, centers=10, cluster_std=0.50, random_state=0)

# 使用BIRCH聚类数据
birch = Birch(threshold=1.5, n_clusters=4)
birch.fit(X)
labels = birch.predict(X)

# 绘制结果
plt.figure(figsize=(7.5, 3.5))
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='winter')
plt.show()

在该示例中,首先使用 scikit-learn 库中的 make_blobs 函数生成样本数据集。然后,使用 BIRCH 算法对数据集进行聚类:实例化一个 Birch 对象,将阈值(threshold)参数设置为 1.5,聚类数量(n_clusters)参数设置为 4;接着使用 fit 方法将 Birch 对象拟合到数据集,并用 predict 方法预测聚类标签;最后,通过散点图绘制聚类结果。

输出结果

执行上述程序后,将生成以下散点图作为输出:(注:原文中仅给出坐标轴范围示意,此处保留其数值范围展示)

纵轴范围:10.0、7.5、5.0、2.5、0.0、-2.5、-5.0、-7.5、-10.0

横轴范围:-10、0、5、10

BIRCH聚类的优势

与其他聚类算法相比,BIRCH 聚类具有以下优点:

  • 可扩展性:BIRCH 采用树形结构表示聚类,专为高效处理大型数据集而设计。
  • 内存效率高:通过聚类特征(CF)和子聚类特征(SCF)数据结构汇总数据点的统计特性,减少了存储聚类所需的内存。
  • 聚类速度快:采用增量式聚类方法,能够快速对数据点进行聚类。

BIRCH 聚类的缺点

BIRCH 聚类也存在一些缺点:

  • 对参数设置敏感:聚类性能易受参数选择的影响,例如节点中可存储的最大聚类特征(CF)数量、用于创建子聚类的阈值等。
  • 处理非球形聚类的能力有限:BIRCH 假设聚类为球形结构,因此在处理包含非球形聚类的数据集时,性能可能不佳。
  • 距离度量选择灵活性有限:默认使用欧氏距离度量,该度量方式并非适用于所有数据集。

适用场景

  • 处理大规模 / 超大规数据集(百万级以上样本),尤其是内存无法一次性加载的流式数据。
  • 对聚类速度要求高,且能接受 "近似聚类" 结果的场景(如用户行为分群、日志数据聚类)。
  • 数据维度适中(高维数据需先降维,否则 CF 树的计算开销会大幅增加)。

总结

  1. 核心优势 :BIRCH 是为大规模数据集设计的层次聚类算法,通过 CF 树压缩数据,兼顾速度和内存效率。
  2. 使用关键 :必须先标准化数据,重点调参 threshold(平衡聚类精度和效率),n_clusters 控制最终簇数。
  3. 适用场景:适合百万级以上样本的快速聚类,不适合高维或非球形簇的数据。
相关推荐
龙腾AI白云3 小时前
AI算法实战:逻辑回归在风控场景中的应用
深度学习·机器学习·知识图谱
九河云4 小时前
数字韧性时代,华为云CBR为业务连续性注入“免疫基因”
大数据·人工智能·安全·机器学习·华为云
Juicedata4 小时前
JuiceFS 企业版 5.3 特性详解:单文件系统支持超 5,000 亿文件,首次引入 RDMA
大数据·人工智能·机器学习·性能优化·开源
码农水水5 小时前
得物Java面试被问:消息队列的死信队列和重试机制
java·开发语言·jvm·数据结构·机器学习·面试·职场和发展
小白狮ww5 小时前
Ovis-Image:卓越的图像生成模型
人工智能·深度学习·目标检测·机器学习·cpu·gpu·视觉分割模型
.小墨迹6 小时前
C++学习——C++中`memcpy`和**赋值拷贝**的核心区别
java·linux·开发语言·c++·学习·算法·机器学习
小鸡吃米…6 小时前
机器学习 —— 训练与测试
人工智能·python·机器学习
自己的九又四分之三站台6 小时前
PGVector 的两种主流 ANN 索引:IVFFlat 与 HNSW
人工智能·机器学习
金融小师妹6 小时前
AI算法与多因子模型驱动:金价获利了结涌现后的高位下跌态势
大数据·人工智能·深度学习·机器学习
人工智能培训6 小时前
基于Transformer的人工智能模型搭建与fine-tuning二
人工智能·深度学习·机器学习·大模型·transformer·企业数字化转型