BIRCH(Balanced Iterative Reducing and Clustering using Hierarchies)是一个综合的层次聚类算法。BIRCH算法利用了一个树结构来帮助我们快速的聚类,这个数结构类似于平衡B+树,一般将它称之为聚类特征树(Clustering Feature Tree,简称CF Tree)。聚类特征树概括了聚类的有用信息,并且占用空间较元数据集合小得多,可以存放在内存中,从而可以提高算法在大型数据集合上的聚类速度及可伸缩性。
基本内容
Birch算法是一种非常有效的、传统的层次聚类算法,该算法能够用一遍扫描有效地进行聚类,并能够有效地处理离群点。Birch算法是基于距离的层次聚类,综合了层次凝聚和迭代的重定位方法,首先用自底向上的层次算法,然后用迭代的重定位来改进结果。层次凝聚是采用自底向上策略,首先将每个对象作为一个原子簇,然后合并这些原子簇形成更大的簇,减少簇的数目,直到所有的对象都在一个簇中,或某个终结条件被满足。
算法描述
核心思想
Birch算法
的主要思想是:通过扫描数据库,建立一个初始存放于内存中的聚类特征树,然后对聚类特征树的叶结点进行聚类。它的核心是聚类特征(CF)和聚类特征树(CF Tree)。2.1.1 CF CF 是指三元组CF=(N,LS,SS),用来概括子簇信息,而不是存储所有的数据点。其中:N:簇中d维点的数目;LS:N个点的线性和;SS:N个点的平方和。
比如给定一个由二维点组成的集合{(3,4),(2,6),(4,5)},那么:CF结构概括了簇的基本信息,并且是高度压缩的,它存储了小于实际数据点的聚类信息。同时CF的三元结构设置使得计算簇的半径、簇的直径、簇与簇之间的距离等非常容易。
CFTree
CF树
是一棵具有两个参数的高度平衡树,用来存储层次聚类的聚类特征。它涉及到两个参数分支因子和阈值。其中,分支因子B指定子节点的最大数目,即每个非叶节点可以拥有的孩子的最大数目。阈值T指定存储在叶节点的子簇的最大直径,它影响着CF树的大小。改变阈值可以改变树的大小。CF树是随着数据点的插入而动态创建的,因此该方法是增量的。CF树的构造过程实际上是一个数据点的插入过程,其步骤为:
(1)从根节点root开始递归往下,计算当前条目与要插入数据点之间的距离,寻找距离最小的那个路径,直到找到与该数据点最接近的叶节点中的条目。
(2)比较计算出的距离是否小于阈值T,如果小于则当前条目吸收该数据点;反之,则继续第三步。
(3)判断当前条目所在叶节点的条目个数是否小于L,如果是,则直接将数据点插入作为该数据点的新条目,否则需要分裂该叶节点。分裂的原则是寻找该叶节点中距离最远的两个条目并以这两个条目作为分裂后新的两个叶节点的起始条目,其他剩下的条目根据距离最小原则分配到这两个新的叶节点中,删除原叶节点并更新整个CF树。
当数据点无法插入时,这个时候需要提升阈值T并重建树来吸收更多的叶节点条目,直到把所有数据点全部插入完毕。
在CF树重建过程中,通过利用老树的叶节点来重新构建一棵新树,因而树的重建过程不需要访问所有点,即构建CF树只需访问数据一次就行
算法步骤
Birch算法
主要分为以下两个阶段:
(1)扫描数据库,动态的建立一棵存放在内存的CF树。若内存不够,则增大阈值,在原树基础上构造一棵较小的树。
(2)对叶节点进一步利用一个全局性的聚类算法,改进聚类质量。由于CF树的叶节点代表的聚类可能不是自然的聚类结果,原因是给定的阈值限制了簇的大小,并且数据的输入顺序也会影响到聚类结果。因此,需要对叶节点进一步利用一个全局性的聚类算法,改进聚类质量。
该文章由作者:【天予】发布,本站仅提供存储、如有版权、错误、违法等相关信息请联系,本站会在1个工作日内进行整改,谢谢!