层次聚类(Hierarchical Clustering)——BIRCH算法详解及举例

1 BIRCH概述

BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies)的主要动机是两个方面,一是处理大数据集,二是对异常值的鲁棒性。该算法中引入两个概念:聚类特征(Clustering Feature,CF)和聚类特征树(CF-tree),通过这两个概念对簇进行概括,利用各个簇之间的距离,采用层次方法的平衡迭代对数据集进行规约和聚类。

2 聚类特征(CF)

CF是BIRCH增量聚类算法的核心,使用CF概括描述各簇的信息,设某簇中有N个D维数据点 { x → n } ( n = 1 , 2 , . . . , N ) \{\overrightarrow x_n\}(n=1,2,...,N) {x n}(n=1,2,...,N),则该簇的聚类特征定义为三元组:
C F = ( N , L S , S S ) CF=(N,LS,SS) CF=(N,LS,SS)
其中N是簇中点的数目,矢量LS是个各点的线性求和即 ∑ n = 1 N x → n = ( ∑ n = 1 N x n 1 , ∑ n = 1 N x n 2 , . . . , ∑ n = 1 N x n D ) \sum_{n=1}^N\overrightarrow x_n=(\sum_{n=1}^Nx_{n1},\sum_{n=1}^Nx_{n2},...,\sum_{n=1}^Nx_{nD}) n=1Nx n=(n=1Nxn1,n=1Nxn2,...,n=1NxnD)
标量SS是各数据点的平方和即 ∑ n = 1 N x → n 2 = ∑ n = 1 N x → n T x → n = ∑ n = 1 N ∑ i = 1 D x n i 2 \sum_{n=1}^N\overrightarrow x_n^2=\sum_{n=1}^N\overrightarrow x_n^T\overrightarrow x_n=\sum_{n=1}^N\sum_{i=1}^D x_{ni}^2 n=1Nx n2=n=1Nx nTx n=n=1Ni=1Dxni2

举个例子
假设簇一有三个数据点(2, 5)、(3, 2)和(4, 3),根据定义,簇一的聚类特征是
C F 1 = ( 3 , ( 2 + 3 + 4 , 5 + 2 + 3 ) , ( 2 2 + 5 2 ) + ( 3 2 + 2 2 ) + ( 4 2 + 3 2 ) ) = ( 3 , ( 9 , 10 ) , 67 ) CF1=(3, (2+3+4,5+2+3), (2^2+5^2)+(3^2+2^2)+(4^2+3^2)) =(3, (9,10),67) CF1=(3,(2+3+45+2+3),(22+52)+(32+22)+(42+32))=(3,(910)67)

CF具有可加性:CF1=(n1,LS1,SS1),CF2=(n2,LS2,SS2),则CF1+CF2=(n1+n2, LS1+LS2, SS1+SS2)表示将两个不相交的簇合并成一个大簇的聚类特征。

举个例子
设簇C2的CF2=(3,(35,36),857),那么,由簇C1和簇C2合并而来的簇C3的聚类特征CF3计算如下:
CF3=(3+3, (9+35, 10+36), (67+857))=(6, (44, 46), 924)

聚类特征本质上是给定簇的统计汇总,可以有效地对数据进行压缩,而且基于聚类特征可以很容易地推导出簇的许多统计量和距离度量。
假设给定簇中有N个D维数据点,可用以下公式定义簇的质心 X 0 X_0 X0,半径R和直径D
簇质心: x → 0 = ∑ i = 1 N X → i N = L S N \overrightarrow x_0=\frac{\sum_{i=1}^N\overrightarrow X_i}{N}=\frac{LS}{N} x 0=Ni=1NX i=NLS
簇半径: R = ∑ i = 1 N ( X → i − X → 0 ) 2 N = N S S − L S 2 N 2 R=\sqrt{\frac{\sum_{i=1}^N(\overrightarrow X_i-\overrightarrow X_0)^2}{N}}=\sqrt{\frac{NSS-LS^2}{N^2}} R=Ni=1N(X iX 0)2 =N2NSSLS2
簇直径: D = ∑ i = 1 N ∑ j = 1 N ( X → i − X → j ) 2 N ( N − 1 ) = 2 N S S − 2 L S 2 N ( N − 1 ) D=\sqrt{\frac{\sum_{i=1}^N\sum_{j=1}^N(\overrightarrow X_i-\overrightarrow X_j)^2}{N(N-1)}}=\sqrt{\frac{2NSS-2LS^2}{N(N-1)}} D=N(N1)i=1Nj=1N(X iX j)2 =N(N1)2NSS2LS2
其中R是成员对象到质心的平均距离,D是簇中两两数据点的平均距离,这两个统计量都反映了簇内紧实度
不同簇间的距离度量通常用曼哈顿距离,公式如下:
D 0 = ∑ i = 1 N 1 ∑ j = N 1 + 1 N 1 + N 2 ( X → i − X → j ) 2 N 1 N 2 = S S 1 N 1 + S S 2 N 2 − 2 L S 1 L S 2 N 1 N 2 D_0=\sqrt{\frac{\sum_{i=1}^{N_1}\sum_{j=N_1+1}^{N_1+N_2}(\overrightarrow X_i-\overrightarrow X_j)^2}{N_1N_2}}=\sqrt{\frac{SS_1}{N_1}+\frac{SS_2}{N_2}-\frac{2LS_1LS_2}{N_1N_2}} D0=N1N2i=1N1j=N1+1N1+N2(X iX j)2 =N1SS1+N2SS2N1N22LS1LS2

3 聚类特征树(CF-tree)

CF树存储了层次聚类的簇的特征,有三个参数:枝平衡因子 β \beta β、叶平衡因子 λ \lambda λ和空间阈值 τ \tau τ。CF树由根节点枝节点叶节点构成,非叶节点中包含不多于 β \beta β个形如 [ C F i , c h i l d i ] [CF_i,child_i] [CFi,childi]的条目(entry)。其中 C F i CF_i CFi表示该节点上子簇的聚类特征信息,指针 c h i l d i child_i childi指向该节点的子节点。叶节点中包含不多于 λ \lambda λ个形如 [ C F i ] [CF_i] [CFi]的条目,此外每个叶节点中都包含指针prev指向前一个叶节点和指针next指向后一个叶节点。空间阈值 τ \tau τ用于限制叶节点的子簇的大小,即所有叶节点的各条目对应子簇的直径D(或半径R)不得大于 τ \tau τ,行如下图
层次聚类(Hierarchical Clustering)——BIRCH算法详解及举例_第1张图片

枝平衡因子β,表示枝节点最大的孩子数,所有内部节点的分支不得多于 β 个,
叶平衡因子λ,表示叶子节点允许包含的最大CF数;
空间阈值 τ,表示 叶节点每个CF的最大样本半径或直径,所有类簇的半径不得大于 τ

例:β=2,λ=3
层次聚类(Hierarchical Clustering)——BIRCH算法详解及举例_第2张图片
层次聚类(Hierarchical Clustering)——BIRCH算法详解及举例_第3张图片
各节点及其元项代表的簇间的关系如左图所示,需要说明的是,CF树上不保存任何数据点,仅有树的结构信息以及相关的聚类特征信息,因此CF树可以达到压缩数据的效果。

4 聚类特征树的生成

最开始的 CF 树 是空的,没有任何样本,我们一边添加数据,一边进行学习。

首先,读入第一条数据 A,构造一个叶子节点和一个子簇。
层次聚类(Hierarchical Clustering)——BIRCH算法详解及举例_第4张图片
当引入第二个样本B时,需要判断,样本A和样本B是否在半径为 τ 的超球体范围内?

如果在,也就是说他们属于同一个CF,根据 CF 可加性,更新CF
层次聚类(Hierarchical Clustering)——BIRCH算法详解及举例_第5张图片
如果不在,我们需要一个新的CF三元组,来容纳这个新的值
层次聚类(Hierarchical Clustering)——BIRCH算法详解及举例_第6张图片
假设我们设置枝平衡因子β=2,即内部节点的分支不得多于2个。

这时候来了一个点C,离CF3最近,但不属于A,B两个超球体范围内,本应该将它单独设一个分支,但是CF1的分枝数已经达到最大值,此时,我们只能选择继续向下分裂
层次聚类(Hierarchical Clustering)——BIRCH算法详解及举例_第7张图片

5 总结

形象得理解了 CF 树建立的过程,我们尝试总结一下步骤:

1、初始化枝平衡因子β,叶平衡因子λ和空间阈值τ;

2、在数据库中逐个选取数据点,将数据点插入到CF树上:

(i) 从根节点开始,自上而下选择最近的孩子节点

(ii) 到达叶子节点后,

层次聚类(Hierarchical Clustering)——BIRCH算法详解及举例_第8张图片
3、更新每个非叶节点的CF信息,如果分裂节点,在父节点中插入新的元组,检查分裂,直到根节点
层次聚类(Hierarchical Clustering)——BIRCH算法详解及举例_第9张图片
了解了CF树构建的过程,我们自然就可以理解为什么Birch算法适合于处理大数据。

(1)CF 结构概括了簇的基本信息,并且是高度压缩的,它存储了小于实际数据点的聚类信息。每个新添加的数据其作为个体消失了,将信息融入的集合簇中
(2)增量式的学习方法,不用一次将数据全部加载到内存,可以一边添加数据一边进行学习

参考文献1
参考文献2

你可能感兴趣的:(聚类算法,聚类)