BIRCH算法

来源:互联网 发布:网络机顶盒哪里有卖 编辑:程序博客网 时间:2024/06/06 20:37

  • 概念
  • 聚类特征CF
  • 聚类特征树CF tree
  • 算法流程
  • 优缺点
  • 参考

概念

BIRCH算法的全称是Balanced Iterative Reducing and Clustering Using Hierarchies,即利用层次方法的迭代归约和聚类。它的主要思想是建立一棵B树,原始数据存放在叶子节点中,并根据聚类个数和其它参数的设置放在不同的叶子节点中。

聚类特征CF

聚类特征CF是BIRCH算法最核心的概念,它是多个数据点的结合表示,是一个三元组 (N,LS,SS),其中N代表数据点的个数,LS代表这N个数据点的线性和,SS代表这N个数据点的方差和。
比如有3个点(1,2,3)(4,5,6)(7,8,9),那么

N=3LS=(1+4+7,2+5+8,3+6+9)=(12,15,18)SS=(1+16+49,4+25+64,9+36+81)

CF的一个特性是相加性,比如有两个CF,CF1(N1,LS1,SS1)CF2(N2,LS2,SS2),那么新的CF(N,LS,SS)就是
CF=CF1+CF2=(N1+N2,LS1+LS2,SS1+SS2)=(N,LS,SS)

下面再介绍四个概念,分别是簇质心C⃗ 、簇半径R、簇直径D、簇间距离DD
C⃗ =ni=1XiNR=ni=1(XiC⃗ )ND=SS1N1+SS2N2+2LS1LS2N1N2DD=2NSS2LS2N(N1)N,LS,SSN,LS,SS

聚类特征树CF tree

聚类特征树类似于B-树,它有3个参数:内部节点平衡因子B,叶节点平衡因子L,CF阈值T。其中B的意思是内部节点数要小于等于B,否则要分裂;L的意思是叶子节点数要小于等于L,否则要分裂;T是指示CF是否吸收新数据的阈值。如下图所示,这棵CF树是B为6,L为5,高度为3。我们要建立的最终的CF树就如图所示。
这里写图片描述
最终的数据点都在叶子节点的CF中,可以看出这极大的压缩了数据,节省了存储空间和减少了IO操作,但是数据本身的特征缺丢失了。这三个参数会决定树的规模,BIRCH就是通过调整这三个参数是数据得以在有限的内存中放下。

算法流程

以B=2,L=3为例说明算法执行过程。

(1) CF树还没有开始建立,新来的数据点是第一个点,那么就建立一个根节点和叶子节点,这时根节点是就只有一个CF,叶节点只有一个且只有一个CF;这里写图片描述

(2)当又一个新的点new_CF要加入时,需要自上而下比较每一层的CF,选择每层中最近的那个CF,一直到叶子节点,选择出与new_CF最近的簇try_CF,最后,如果new_CF与try_CF的距离小于T则加入,如下图中的A过程所示,否则新建立一个CF,如下图B过程所示,如果叶子点数>L,则向上分裂,如果内部节点>B就继续向上分裂,如图中的过程C所示,一直分裂到根节点就会使得树高度加1。 这里写图片描述

优缺点

优点主要有:

  • 节省空间,减少了IO操作,因为CF的表示方式极大的压缩了数据,通过调节参数可以有效利用内存。
  • 快。合并两个两簇只需要两个CF算术相加即可;计算两个簇的距离只需要用到(N,LS,SS)这三个值足矣。
  • 一遍扫描数据库即可建立B树。
  • 可识别噪声点。建立好B树后把那些包含数据点少的CF当作outlier。
  • 由于B树是高度平衡的,所以在树上进行插入或查找操作很快。

缺点主要有:

  • 结果依赖于数据点的插入顺序。本属于同一个簇的点可能由于插入顺序相差很远而分到不同的簇中,即使同一个点在不同的时刻被插入,也会被分到不同的簇中。
  • 对非球状的簇聚类效果不好。这取决于簇直径和簇间距离的计算方法。 对高维数据聚类效果不好。
  • 由于每个节点只能包含一定数目的子节点,最后得出来的簇可能和自然簇相差很大。
  • BIRCH适合于处理需要数十上百小时聚类的数据,但在整个过程中算法一旦中断,一切必须从头再来。
  • 局部性也导致了BIRCH的聚类效果欠佳。当一个新点要插入B树时,它只跟很少一部分簇进行了相似性(通过计算簇间距离)比较,高的efficient导致低的effective。

参考

http://www.cnblogs.com/zhangchaoyang/articles/2200800.html
http://blog.csdn.net/qll125596718/article/details/6895291

0 0