Chameleon聚类算法:使用动态建模的多阶段层次聚类
Chamelon算法是一种层次聚类算法,它采用动态建模来确定一对簇之间的相似度。在Chamelon算法中簇的相似度依据有如下两点评估:(1)簇中对象的连接情况。(2)簇的邻近性。即如果两个簇的互联性很高并且他们之间又靠的很近,那么就将其合并。
(1) Chamelon算法采用K-最近邻图的方法来构建稀疏图,,图的每一个顶点代表一个数据点,如果一个对象是另一个对象的K近邻,那么两个顶点之间存在一条边,边的权重反映相似度。(构建稀疏图)
(2) Chamelon算法使用一种图划分算法,,把K-近邻图划分成大量相对较小的子簇,使得边割最小。如把簇C分割成Ci和Cj,使得Ci和Cj而被切断的边的权重之和最小,即它评估Ci和Cj的绝对互联性。(划分图)
(3) Chamelon算法使用一种凝聚的层次聚类算法,其基于子簇的相似度反复的合并子簇。为了确定最相似的子簇对,它既考虑每个簇的互联性,又考虑簇的近邻性。更确切的说就是根据两个簇Ci和Cj的相对互联度RI和相对接近度RC来决定它们的相似度。(合并分区)
Ci和Cj的相对互联度RI: EC(Ci,Cj)是包含Ci和Cj的边革。EC(Ci)/EC(Cj)为Ci/Cj划分为大致相等的两部分的割边的最小和。
Ci和Cj的相对接近度RC: |Ci|为簇Ci内数据点的个数。
基本过程如图所示:
合并过程算法:
1、给定度量函数的上限minMetric,
2、访问每个簇,计算他与邻近的每个簇的RC和RI,通过度量函数公式计算出值tempMetric。
3、找到最大的tempMetric,如果最大的tempMetric超过阈值minMetric,将簇与此值对应的簇合并
4、如果找到的最大的tempMetric没有超过阈值,则表明此聚簇已合并完成,移除聚簇列表,加入到结果聚簇中。
5、递归步骤2,直到待合并聚簇列表最终大小为空。
与一些著名的算法(如BIRCH和基于密度的DBSCAN算法)相比,Chamelon算法在发现高质量的任意形状的簇方面具有更强的能力。然而,在最坏的情况下,高维数据的处理代价可能需要O(n^2)时间。
我对Chamolon算法的理解:将图论的内容引入到聚类中,将相似度作为边的权重,根据K-近邻来做出稀疏图,然后划分图,再合并。