BIRCH聚类算法详解

BIRCH算法全称如下

Balanced Iterative Reducing and Clustering Using Hierarchies

属于树状结构的层次聚类算法的一种,其树状结构的构建是自上而下的,也就是说我们只需要扫描一遍数据,就可以得到树状结构了,因此该算法的运行速度很快。

要理解该算法的运行过程,需要理解以下两个基本概念

1. Cluster Feature

简称CF, 每个CF本质上是一个3元组,由N, LS, SS共3个元素构成,其中

1. N表示样本数目

2. LS表示样本各特征的和

3. SS表示样本各特征的平方和

具体的求解过程图示如下

LS的计算公式如下

对于图中所示的5个点,LS的求解过程如下

>>> ( 3 + 2 + 4 + 4 + 3, 4 + 6 + 5 + 7 + 8)
(16, 30)
SS的计算公式如下

对于图中所示的5个点,SS的求解过程如下

>>> ( 3 ** 2 + 2 ** 2 + 4 ** 2 + 4 ** 2 + 3 ** 2, 4 ** 2 + 6 ** 2 + 5 ** 2 + 7 ** 2 + 8 ** 2)
(54, 190)
2. Cluster Feature Tree

简称CF tree, 其结构如下

可以分为根节点,内部节点,叶子节点3大类,其中每个节点都是有多个CF构成的。对于一颗CF tree, 有以下3个重要参数

1. 内部节点的最大CF数目,称之为枝平衡因子B

2. 叶子节点的最大CF数目,称之为叶平衡因子L

3. 叶子节点的空间阈值T,计算样本点与CF的空间距离,如果小于阈值,则将样本纳入某个CF

3个参数在CF tree中的作用图示如下

定义好上述3个参数之后,就可以开始扫描数据,构建CFtree,  对于第一个样本,CF为空,首先将其自身归入一个CF

对于第二个样本,判断其与样本A的距离是否大于空间阈值T,   因为小于T, 所以该样本也归入A所属的CF

对于第三个样本,同样计算空间距离,因为大于T, 所以该样本归为一个新的CF, 从而实现了节点的分裂

对于第4个样本,计算空间距离,发现属于B所在的空间,则归为B所在的CF

在构建CF tree的过程中,除了空间距离,还需要考虑平衡因子B和L。比如对于以下LN1节点而言,如果叶平衡因子L的值大于3,则sc8这个CF就可以作为LN1的一个叶子节点

如果小于3,就需要分裂出一个新的分支,分裂时,从LN1下所有的CF中挑选出距离最小和最大的两个CF, 作为新的内部节点,图示如下

枝平衡因子B影响内部节点的结构,如果B的值小于3,则要对内部节点进行拆分,分裂的方法是相同的,就是挑选距离最近和最远的两个CF作为新的分支,分裂后的结果图示如下

对于BIRCH算法而言,主要的步骤就是构建CF tree, 树状结构构建好之后,后续还可以有些可选步骤,常见的可选步骤如下

1. 去除异常的CF点,通常是包含样本较少的CF

2. 利用其它聚类算法,比如K-means 对CF Tree进行聚类, 用于调整样本读入顺序造成的树状结构的不合理

3. 利用CF节点的质心,对样本点进行聚类

在scikit-learn中,使用BIRCH聚类的代码如下

>>> from sklearn.cluster import Birch
>>> X = [[0, 1], [0.3, 1], [-0.3, 1], [0, -1], [0.3, -1], [-0.3, -1]]
>>> brc = Birch(n_clusters=None)
>>> brc.fit(X)
Birch(n_clusters=None)
>>> brc.predict(X)
array([0, 0, 0, 1, 1, 1])
BIRCH算法的优点是节约内存,聚类速度快,可以不用指定聚类的类别数目K,  适合处理类别数目特别多的大样本数据,缺点则是在给定的平衡因子和空间阈值参数值的约束下,聚类的结果可能和真实分布不一样,而且对于维数特别多的数据,聚类效果不太好。
·end·
(0)

相关推荐

  • 推荐算法(1):协同过滤总结

    一.协同过滤方法: (1)基于内容/基于领域的协同过滤 ICF 计算items之间的相似度,推荐与A的已知item最相关的item 步骤: 1.输入item-user矩阵 2.求item-item相似 ...

  • r语言聚类分析:k-means和层次聚类

    原文链接:http://tecdat.cn/?p=2981 聚类分析算法很多,比较经典的有k-means和层次聚类法. k-means聚类分析算法 k-means的k就是最终聚集的簇数,这个要你事先自 ...

  • 机器学习,KMeans聚类分析详解

    来源:数据STUDIO 作者:Jim 大量数据中具有'相似'特征的数据点或样本划分为一个类别.聚类分析提供了样本集在非监督模式下的类别划分.聚类的基本思想是'物以类聚.人以群分',将大量数据集中相似的 ...

  • 人工智能基础课堂纪要8

    5.3 Boosting[**] 1.boosting集成原理 随着学习的积累从弱到强 2.实现过程 1.初始化训练数据权重,初始权重是相等的 2.通过这个学习器,计算错误率 3.计算这个学习期的投票 ...

  • spectral-cluster聚类算法详解

    spectral clustering,称之为谱聚类算法,和近邻传播AP算法一样,也是基于图论的算法,都是将样本点两两相连,构成图这一数据结构,不同的是,谱聚类是通过切图的方式来划分不同的cluste ...

  • Affinity Propagation聚类算法详解

    Affinity Propagation简称AP, 称之为近邻传播算法, 是一种基于图论的聚类算法.将所有样本点看做是一个网络中的节点,图示如下 在样本点构成的网络中,每个样本点都是潜在的聚类中心,同 ...

  • OPTICS聚类算法详解

    DBSCAN算法对于邻域半径eps和最小样本数minPoints这两个参数比较敏感,不同的参数取值会产生不同的聚类效果.为了降低参数设置对聚类结果造成的不稳定性,在DBSCAN算法的基础上,提出了OP ...

  • DBSCAN聚类算法详解

    DBSCAN全称如下 Density-Based Spatial Clustering of Applications with Noise 是一种基于密度的聚类算法,所谓密度,就是说样本的紧密程度对 ...

  • Kmeans聚类算法详解

    输入:样本集 D = { x 1 , x 2 , x 3 , . . . , x m } D=\left \{ x_{1},x_{2},x_{3},...,x_{m} \right \} D={x1​ ...

  • CTC算法详解

    和其它文章初衷一样,网上解释很多,但是讲的不是很明白,在看完几篇参考博客后特此记录 简介 先拿语音识别任务来说,如果现在有一个包含剪辑语音和对应的文本,我们不知道如何将语音片段与文本进行对应,这样对于 ...

  • 十大排序算法详解,基本思想+动画演示+C语言实现,太肝了!

    下面的99%的代码都是手动敲出来的,参考了诸多资料,已经经过测试,可以放心食用. 1.冒泡排序 基本思想 冒泡排序基本思想是依次比较两个相邻的元素,如果顺序(如从大到小.首字母从Z到A)错误就把他们交 ...

  • 道路识别算法详解

    本文详细描述了当前代码中(git 版本: 16b521b12d2e3bdc00bd996acafe4526f1d1cb9a)道路识别的算法. 如果没有特殊说明,下文中所说的"算法" ...

  • 木工、架子工、材料用量算法详解,干货满满

    建筑工程人 11篇原创内容 公众号 一模板的计算 一.根据混凝土量快速估算模板用量 1.适用情况:一般用于工程开工前期,在已知混凝土用量的情况下估算模板用量,以初步估算工程周转材料成本投入数量,为筹措 ...