birch
BIRCH,Balanced Iterative Reducing and Clustering Using Hierarchies,翻译过来就是“利用层次方法的平衡迭代规约和聚类“,全称非常复杂。
1、birch概述
简单来说,BIRCH 算法利用了一个树结构来帮助我们快速的聚类,这个特殊的树结构,就是我们后面要详细介绍的聚类特征树(CF-tree)。
可以说只要构造好了CF-树,BIRCH算法也就完成了。BIRCH算法比较适合于数据量大,类别数K也比较多的情况。它运行速度很快,只需要单遍扫描数据集就能进行聚类
该算法笼统的说,可以分为两步:
(1)扫描数据库,建立一棵存放于内存的 CF-Tree,它可以被看作数据的多层压缩,试图保留数据的内在聚类结构;
(2)采用某个选定的聚类算法,如 K-means或者凝聚算法,对CF树的叶节点进行聚类,把稀疏的簇当作离群点删除,而把更稠密的簇合并为更大的簇。
2、概念准备
BIRCH算法利用了一个树结构来帮助我们快速的聚类,这个数结构类似于平衡B+树,一般将它称之为聚类特征树(Clustering Feature Tree,简称CF Tree)。这颗树的每一个节点是由若干个聚类特征(Clustering Feature,简称CF)组成。从下图我们可以看看聚类特征树是什么样子的:每个节点包括叶子节点都有若干个CF,而内部节点的CF有指向孩子节点的指针,所有的叶子节点用一个双向链表链接起来。
2.1、 CF-Tree
CF-tree,Clustering Feature Tree,聚类特征树。
2.1.1、CF 聚类特征
CF聚类特征用一个三元组概括描述各簇的信息,每一个 CF 都可以用(N,LS,SS)表示。
假设某簇中有 N 个 D 维数据点
矢量 L S ⃗ \vec{LS} LS 是个各点的线性求和,公式如下:
∑ l ⃗ = ∑ n = 1 N x n ⃗ = ( ∑ n = 1 N x n 1 , ∑ n = 1 N x n 2 , . . . , ∑ n = 1 N x n D ) T \sum{\vec{l}} = \sum_{n=1}^N\vec{x_n} = {(\sum_{n=1}^Nx_{n1},\sum_{n=1}^Nx_{n2},...,\sum_{n=1}^Nx_{nD})}^T ∑l=n=1∑Nxn=(n=1∑Nxn1,n=1∑Nxn2,...,n=1∑NxnD)T
标量 SS 是各数据点的平方和,公式如下:
∑ s = ∑ 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{s} = \sum_{n=1}^N{\vec{x_n}}^2 = \sum_{n=1}^N{\vec{x_n}}^T\vec{x_n} = \sum_{n=1}^N\sum_{i=1}^D{x_{ni}}^2 ∑s=n=1∑Nxn2=n=1∑NxnTxn=n=1∑Ni=1∑Dxni2
可加性:
对于两个不相交的簇 C1 和 C2 ,
聚类特征分别为 CF1 = <N1, LS1, SS1> 和 CF2 = <N2, LS2, SS2> ,
如果将这两个簇合并成一个大簇,则大簇的聚类特征为:
CF1 + CF2 = <N1+N2, LS1+LS2, SS1+SS2>
2.1.2、CF的三个统计量
簇质心:
X 0 ⃗ = ∑ i = 1 N X i ⃗ N = L S N \vec{X_0} = \frac{\sum\limits_{i=1}^{N}\vec{X_i}}{N} = \frac{LS}{N} X0=N