机器学习之层次聚类算法

匿名 (未验证) 提交于 2019-12-03 00:34:01

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的聚类效果受参数的影响较大,如随机抽样的比例、聚类个数、收缩因子的设定等。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!