Birch聚类算法分析与改进

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Birch聚类算法分析与改进
摘要:Birch 算法是典型的层次聚类算法,适用于大规模数据集的处理,本文分析了Birch 算法的具体实现过程,着重对其核心CF 和CF Tree 作了讨论,并结合实例演示了该算法。

针对Birch 算法在CF 树阈值设置方面的限制,分析了现有的改进方案,最后提出了Birch 算法新的研究方向,即簇与簇之间的关系,以便更好的实现数据挖掘。

关键词:聚类;Birch 算法;聚类特征;阈值设置
1 引言
聚类分析是一种探查数据结构的工具,主要用来对大量的样品或变量进行分类,它源于数据挖掘、统计学、生物学以及机器学习等多个研究领域。

[1]在数据挖掘中它是不需训练集的分类技术,在没有预先划分类的情况下,分组利用各个数据的属性值之间的相似程度来进行,将数据对象划分成多个类或簇,使得同一个簇中的对象较相似,而不同簇中的对象较不相似。

目前,聚类分析已经开发了很多有效的聚类算法,基于原算法的改进以及新的算法还在不断涌现。

传统的聚类算法主要有:基于划分的方法,基于层次的方法、基于密度的方法、基于网格的方法和基于模型的方法。

这些算法只是在表单中寻找相似对象,然而现在大量的数据存储在关系数据库中。

如何利用关系数据库,并从关系数据库中挖掘知识、得到聚类,是现在聚类研究的一个重要方向。

2 Birch 算法
Zhang 等人提出了Birch(Blanced Iterative Reducing and Clustering)算法来对大规模数据集进行聚类。

Birch 算法是一种非常有效的、传统的层次聚类算法,该算法能够用一遍扫描有效地进行聚类,并能够有效地处理离群点。

Birch 算法是基于距离的层次聚类,综合了层次凝聚和迭代的重定位方法,首先用自底向上的
层次算法,然后用迭代的重定位来改进结果。

[2]层次凝聚是采用自底向上策略,首先将每个对象作为一个原子簇,然后合并这些原子簇形成更大的簇,减少簇的数目,直到所有的对象都在一个簇中,或某个终结条件被满足。

2.1 核心概念
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 结构概括了簇的基本信息,并且是高度压缩的,它存储了小于实际数据点的聚类信息。

[3]同时CF 的三元结构设置使得计算簇的半径、簇的直径、簇与簇之间的距离等非常容易。

2.1.2 CF Tree
CF 树是一棵具有两个参数的高度平衡树,用来存储层次聚类的聚类特征。

它涉及到两个参数分支因子和阈值。

其中,分支因子B 指定子节点的最大数目,即每个非叶节点可以拥有的孩子的最大数目。

阈值T 指定存储在叶节点的子簇的最大直径,它影响着CF 树的大小。

改变阈值可以改变树的大小。

CF 树是随着数据点的插入而动态创建的,因此该方法是增量的。

CF 树的构造过程实际上是一个数据点的插入过程[4],其步骤为:
(1) 从根节点root 开始递归往下,计算当前条目与要插入数据点之间的距离,寻找距离最小的那个路径,直到找到与该数据点最接近的叶节点中的条目。

(2) 比较计算出的距离是否小于阈值T,如果小于则当前条目吸收该数据点;反之,则继续第三步。

(3) 判断当前条目所在叶节点的条目个数是否小于L,如果是,则直接将数据点插入作为该数据点的新条目,否则需要分裂该叶节点。

分裂的原则是寻找该叶节点中距离最远的两个条目并以这两个条目作为分裂后新的两个叶节点的起始条目,其他剩下的条目根据距离最小原则分配到这两个新的叶节点中,删除原叶节点并更新整个CF
树。

当数据点无法插入时,这个时候需要提升阈值T 并重建树来吸收更多的叶节点条目,直到把所有数据点全部插入完毕。

比如:当B=7,L=6 时,CF 树结构图如下:
在上图中,如果想要在CF1child1—CF1child1 下插入点,则需要重新分裂该叶节点,因为当前所在叶节点的条目个数已经达到了L 的值;但若想要在CF1child1—CF2child2 中插入新的数据点时,则可以直接插入作为该数据点的新条目,因为该节点的条目个数只有4 个,小于L 的值。

在 CF 树重建过程中,通过利用老树的叶节点来重新构建一棵新树,因而树的重建过程不需要访问所有点,即构建CF 树只需访问数据一次就行。

2.2 Birch 算法描述图 1 CF Tree 结构图
-3-
Birch 算法主要分为以下两个阶段:
(1) 扫描数据库,动态的建立一棵存放在内存的CF 树。

若内
存不够,则增大阈值,在原树基础上构造一棵较小的树。

(2) 对叶节点进一步利用一个全局性的聚类算法,改进聚类质量。

由于 CF 树的叶节点代表的聚类可能不是自然的聚类结果,原因是给定的阈值限制了簇的大小,并且数据的输入顺序也会影响到聚类结果。

因此,需要对叶节点进一步利用一个全局性的聚类算法,改进聚类质量。

Birch 算法的输入为:元素集D,CF 树构建阈值T,分支因子B;输出为:簇的集合K。

其伪代码为[2]:
For 每个Xi 属于D do 为 Xi 的插入确定正确的叶节点 IF 不违反阈值条件 then 将 Xi 添加到簇中,并且更新CF 三元组; Else IF 有插入Xi 的空间 then 作为单个簇插入,并更新CF 三元组;Else 分裂树叶节点,并重新分布CF 特征; 2.3 算法分析 Birch 算法利用聚类特征树概括了聚类的有用信息,并且由于聚类特征树占用空间较原数据集合小得多,可以存放在内存中,因此在给定有限内存的情况下,Birch 能利用可用的资源产生较好的聚类结果。

Birch 利用CF 三元组概括子簇的信息,而不是存储所有的节点信息,这样就节约了大量的空间,使得其更适合处理超大规模的数据集;同时,由于给定的阈值限制了簇的大小,因此CF 树的叶节点代表的聚类可能不是自然的聚类结果。

另外Birch 利用半径或直径的概念来控制聚类的边界,如果簇不是球形的,Birch 将不能很好的工作。

3 算法实例
给定一个数据集D,是含有21 个二维数据点的集合,原始点集Xi={X1,X2}如下:表 1 原数据集
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 X1 0 0 2 2 4 4 5 6 6 7 -4 -2 -3 -3 -5 1 0 0 -1 -1 -3 X2 6 5 5 3 4 3 1 2 1 0 3 2 2 0 2 1 -1 -2 -1 -3 -5 已知阈值T=11;分支
因子B=5;要求构建一个K=2 的簇的集合。

根据 Birch 算法,主要步骤为; (1) 扫描数据库,建立一棵CF 树。

其中CF={21,(15,28),(261,188)}
4 算法的改进
Birch 算法通过采用聚类特征和聚类特征树结构节省了I/O 成本及内存开销,使其成本与数据集的大小呈线性关系,只需扫描数据集一次就可产生较高的聚类质量,因此适合于数据挖掘中的大数据集。

同时,Birch 算法并没有具体给出设置初始阈值和提升阈值的方法,目前有很多研究者在研究这两个方面来改进Birch 算法。

目前提高该算法的主要措施有:给每个叶节点设置不同的阈值;当插入数据点超过CF 树的大小重建树时,可将新阈值设置为该叶节点相邻条目之间距离的平均值或所有叶条目的“最近邻居对”之间的距离平均值;[3-4]等等。

目前,很多的学者都将Birch 算法的改进关注在阈值设置方面,本文认为,针对不同的数据集选择不同的阈值固然重要,但却并不高效。

Birch 算法中,阈值的选择更大程度上是适应内存大小的需要,阈值不同阶段的取值目的是在已给内存的范围中,适时的改变或重建 CF 树。

Birch 算法基于聚类特征,高度概括海量的数据信息,适用于大量的数据集处理,减少了聚类算法的空间和时间复杂度,能很好的将数据划分为合适的簇。

然而,Birch 算法更多的是考虑了簇内数据间对象的关系,而并没有研究簇与簇之间的关系。

在复杂的实际应用中,重要的不仅是对相似数据的研究,更多的还是挖掘不同数据间所存在的关联,这也是数据挖掘的一个重要意义所在。

因此,为了能更好的挖掘信息,对Birch 算法的改进可以采用多层次模式,即在第一次优化分类后,着重对大小悬殊较大的簇进行二次分析。

在此过程中,即可再根据簇的大小以及内存的限制来选取不同的阈值。

5 总结
文中主要结合实例分析了Birch 算法,对其基本原理有了深入的分析。

在此基础上,针对Birch 算法的不足,从改变阈值T 以及多层次分析数据方面提出了改进的意见。

现在,传统的聚类算法已经可以比较成功的解决低维数据的聚类问题,但在处理复杂的实际情况时,现有的算法有着很大的缺陷,因此高维数据的聚类分析是现阶段聚类分析的研究热点和难点。

参考文献
[1] 胡可云,田凤占,黄厚宽编著.数据挖掘理论与应用[M].北京:清华大学出版社,北京交通大学出版社, 2008.4.
[2] (印度)K.P.Soman, Shyam Diwaker, V.Ajay 著.数据挖掘基础教程[M].范明,牛常勇译.北京:机械工业出版社,2008.8.
[3] 赵玉艳,郭景峰,郑丽珍,李晶.一种改进的BIRCH 分层聚类算法[J].计算机科学,2008.3(35):180-182, 208.
[4] 蒋盛益,李霞.一种改进的BIRCH 聚类算法[J].计算机应用,2009.1(29):293-296.
[5] 陈绍彬,叶飞跃,刘佰强,金涛.食品HACCP 分类的BIRCH 算法[J].计算机工程,2008.12(34):59-61.
[6] 朱映辉,江玉珍.BIRCH 聚类算法优化及并行化研究[J].计算机工程与设计,2007.9(28):4345-4369.
[7] 冯兴杰,丁怡心,廖勇毅.基于XML 的可继承BIRCH 研究[J].计算机工程,2009.1(35):53-57.
[8] 冯晨,张旭翔.数据挖掘技术及算法综述[J].电脑知识与技术,2009.5(5):3331-3332.
[9] 冯兴杰,丁怡心.启发式多阈值BIRCH 研究[J].中国民航大学学报,2007,25(5):30-31.。

相关文档
最新文档