Hierarchical Clustering)是对给定数据集在不同层次进行划分,形成树形的聚类结构,直到满足某种停止条件为止。数据集的划分可采用自底向上或自顶向下的划分策略。
1、AGNES
1)最小距离single/word-linkage(SL聚类)
2)最大距离complete-linkage(CL聚类)
3)平均距离average-linkage(AL聚类)
4)中值距离median-linkage
AL更能消除个别偏离样本对结果的干扰。
2、分裂的层次聚类算法DIANA
c中计算两两样本之间的距离,找出距离最远的两个样本a、b;
a、b分配到不同的类簇c1、c2中;
c中剩余的其他样本分别和a、b的距离,若dist(a)<dist(b),则将样本分入c1中,否则分入c2中。
/分裂点的选择不太容易;
/分裂点的操作不能进行撤销;
O(t*m2),t为迭代次数,m为样本数量。
3、平衡迭代削减聚类法BIRCH
1)扫描数据集,动态建立一棵CF-Tree存放在内存中;
2)若内存不够,则增大阈值T,在原树的基础上构建一棵比较小的树;
3)对CF-Tree叶节点使用全局性的聚类算法如K-means等,以消除由于样本读入顺序导致的不合理的树结构,改进聚类质量。
Cluster Feature指的是一个满足线性关系的三元组(N,LS,SS),其中:
CF-Tree的每一个节点由若干CF组成,内部节点指向叶节点,所有的叶节点用一个双向链表链接起来。由于CF满足线性关系,因此CF-Tree父节点中的每个CF三元组的值等于它所指向的子节点的所有CF三元组之和。CF-Tree的构建是动态的,可以随时根据新增数据对树模型进行更新。
CF-Tree是空的,没有任何样本。读入第一个样本,生成这个节点的第一个CF三元组,此时N=1,令它为CF1。
CF1的距离小于T,那么这个样本也归入CF1(N=2),更新其三元组数据;如果大于T,则此节点新增一个CF三元组CF2,这个样本作为CF2中的首个样本(N=1)。
CF的距离,如果都大于T,则生成一个新的CF;但是如果此时叶CF总个数大于L,就需要对该叶
CF之间的距离最大的两个CF,分别作为两个新叶节点的CF,再计算其余CF到这两个CF之间的距离,将原叶节点的数据划分到这两个新叶节点中。
CF总数超过B,则该内部节点需要进行分裂,分裂方式和叶节点分裂方式相同。
T并重建树,直到所有样本均进入CF树为止。
I/O花费与数据量呈线性关系);
CF-Tree后将包含数据点少的子簇剔除;
3)采用多阶段聚类技术,单次扫描产生基本的聚类,多次扫描改善聚类质量;
4)是一种增量的聚类方法,对每个点的决策基于当前已经处理过的点;
5)由于CF-Tree对每个节点的CF个数有限制,导致聚类的结果可能和真实的分布不同;
6)由于CF-Tree各节点阈值相同,只适合体积相差不大的簇之间的聚类,对体积相差较大的簇聚类的效果不是很好。因此可以引入多阈值BIRCH算法,为每个簇设一个阈值,将CF表示为四元组(N,LS,SS,T);
7)只适合分布呈凸形或者超球形的数据集,因为使用了半径或直径的概念来控制聚类的边界;
8)对高维特征的数据聚类效果不好,此时可选择Mini Batch K-means。
9)BIRCH算法过程一旦中断,必须从头再来。
4、使用代表点的聚类法CURE
S;
S进行分区,在内存中对每个分区分别进行局部聚类;
CURE算法的时间复杂度较高,可以使用堆、k-d树、随机抽样和分区等技术改善效率;CURE的聚类效果受参数的影响较大,如随机抽样的比例、聚类个数、收缩因子的设定等。