聚类算法总结 - Hierarchical Clustering

算法概括优缺点
AGNES典型的凝聚式层次聚类
DIANA典型的划分式层次聚类划分式层次聚类的复杂度比凝聚式的大得多,所以较为少用。
CURE用到了kd-tree跟heap。
合并两个类的时候,先选若干well-scattered的点。从中挑出离中心最远的点,之后再挑离该点最远的点…如此得到一堆代表点,基于这些点去做层次聚类。

对于大数据:先随机抽样,再对样本进行分区,然后对每个分区局部聚类,最后对局部聚类进行全局聚类。

时间上最坏是: O(n 2 log(n)) 
若数据维度较小,可以降到: O(n 2 ) 
空间复杂度是: O(n) 
ROCK1.生成相似度矩阵。
2.根据相似度阈值得到邻居矩阵-A。
3.计算链接矩阵-L=A x A
4.计算相似性的度量(Goodness Measure),将相似性最高的两个对象合并。(用到了链接矩阵)

ROCK算法首先用相似度阀值和共同邻居的概念,从给定的数据相似度矩阵中构建一个稀疏图,然后对该稀疏图使用分层聚类算法进行聚类

CURE算法不能处理枚举型数据,而ROCK算法是在CURE基础之上适用于枚举数据的聚结分层聚类算法。
Chameleon1.由数据集构造成一个K-近邻图 G k  
2.通过图的划分算法将图 G k   划分成大量的子图,每个子图代表一个初始子簇
3.凝聚式层次聚类
Chameleon跟CURE和DBSCAN相比,在发现高质量的任意形状的聚类方面有更强的能力。但是,在最坏的情况下,高维数据的处理代价可能对n个对象需要 O(n 2 )  的时间。
BIRCH用到了 CF<n,LS,SS> 
CF-tree类似于B-树,有两个参数:内部节点平衡因子 B  ,叶节点平衡因子 L  ,簇半径阈值 T 

1.自上而下选择最近的子节点
2.到达子节点后,检查最近的元组 CF i   能否吸收此数据点
若能吸收,则更新CF值
否则考虑是否可以添加一个新的元组
如果可以,则添加一个新的元组
否则,分裂最远的一对元组,作为种子,按最近距离重新分配其它元组
3.更新每个非叶节点的CF信息,如果分裂节点,在父节点中插入新的元组,检查分裂,直到root

BIRCH优点:
1.节省内存。叶子节点放在磁盘分区
2. 在对树进行插入或查找操作很快。
3.一遍扫描数据库即可建树。
4.可识别噪声点。
5. 可作为其他聚类算法的预处理过程

BIRCH缺点:
1.结果依赖于数据点的插入顺序。
2.对非球状的簇聚类效果不好。
3.对高维数据聚类效果不好。
4.最后得出来的簇可能和自然簇相差很大。
5.在整个过程中算法一旦中断,一切必须从头再来。
6.局部性

*BUBBLE把BIRCH算法的中心和半径概念推广到普通的距离空间
*BUBBLE-FM通过减少距离的计算次数,提高了BUBBLE算法的效率
Probabilistic agglomerative clustering距离度量用:
dist(C 1 ,C 2 )=log((P(C 1 C 2 ))/(P(C 1 )P(C 2 ))) 
如果dist小于零,则合并两个簇。
易于理解
一般跟其他凝聚式层次聚类算法的效率差不多
但是:it outputs only one hierarchy with respect to a chosen probabilistic model; it cannot handle the uncertainty of cluster hierarchies.
    原文作者:聚类算法
    原文地址: https://blog.csdn.net/xavierwu/article/details/48712635
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞