6.4 基于BIRCH算法
BIRCH算法主要用于处理超大规模的数据集,是一个基于距离的层次聚类,综合了层次凝聚和迭代的重定位方法,首先用自顶向上的层次算法,然后用迭代的重定位来改进结果。
算法过程:将待分类的数据插入一棵树中,并且原始数据都在叶子结点上。
主要思想:通过扫描数据库,建立一个初始存放于内存中的聚类特征树,然后对聚类特征树的叶节点加以聚类。
算法核心:聚类特征和聚类特征树。
6.4.1 特征聚类
CF树中的结点都是由CF组成,一个CF是一个三维向量,这个三维向量包含了簇的所有信息。给定N个d维的数据点,则CF的定义如下:
其中,N为数据点总数,LS为N个点的线性和,SS为N个点的平方和。
簇的中心:
簇直径:
簇半径:
两个簇之间的距离:
迭加性:
6.4.2 聚类特征树
聚类特征树的构造是不断插入对象的过程。
三个变量:内部节点平衡因子B(限制非叶子结点的子结点数),叶节点平衡因子L(限制叶子结点的的子簇个数)及簇直径阈值T(限制簇的紧密程度)。
主要构造过程:
1、读入第一条数据,创建一个空的Leaf和MinCluster,把第一条数据的ID值放入MinCluster,更新MinCluster的CF值,然后把MinCluster作为Leaf的一个孩子,并更新Leaf的CF值。
2、将新的数据点封装为一个MinCluster,根据来判断新加入的点于与树的根结点的哪个孩子结点最近,久将该数据点加入哪个子树上。如果加之后MinCluster的直径超过了T,则让新加入的数据点单独作为一个簇。
3、对插入新结点后孩子数大于B或L的结点进行分裂。分裂规则是选出簇间距离最大的两个孩子,分别作为两个叶子,然后其他的孩子按照就近分配。
6.4.3 BIRCH算法的优缺点
优:
1、该算法只需扫描一遍就可以得到一个好的聚类效果,而且不需要事先设定聚类个数。
2、聚类通过聚类特征树的形式,一定程度上保存了对数据的压缩。
3、快速。在合并几个簇时,只需将几个簇的CF值相加即可;在计算两个簇之间的距离时,只需要N,LS,SS三个数据即可。
缺:
1、该算法对于不是球形的簇,聚簇的效果不是很好。
2、对高维数据的聚类的效果不好。
3、结果依赖数据点的插入顺序。
网友评论