Chamelon(变色龙)多阶段层次聚类算法

Chamelon是一种层次聚类算法,它采用动态建模来确定一对簇之间的相似度,从而实现聚类。
这里我们重点关注动态建模这个词?
那么,何为动态建模呢?
要回答这个问题,我们首先要搞清楚簇的相似度依据是什么。
在Chamelon中,簇的相似度依据如下两点评估:
1、簇中对象的连接情况;
2、簇的邻近性。

也就是说,如果两个簇的互连性都很高并且他们之间又靠的很近,那么就将其合并。

OK,因此,凭借这两点,我们就可以不用依赖一个静态的、用户提供的模型,而是可以自动的、适应的的去合并簇,从而实现聚类。

仔细想一想,在K-means这种算法里面,我们是给定了簇的一个中心点的,然后再实现聚类和调优的。因此这种聚类方法就等同于我们是给定了一个“球形“(或者”类球形“),然后再去补充,修正它。这就是我们说的依赖一个静态的,用户提供的模型
而Chamelon呢,它是动态的考察自身和其他簇,然后动态的适应,合并簇。因此,他没有什么固定的模型,所以,基于这个特性,它可以发现任意形状的,高质量的簇。这也是这个算法一个巨大优势。

Chamelon算法是一种多阶段层次聚类算法,同之前我们讲过的BIRCH算法一样,它也是分为2个主要阶段的。下面我们来具体看一看这个算法的原理。

先来一张图,看看这个算法的执行流程。


这里写图片描述

我具体来解释一下这张图,其实也就是解释整个算法了。
首先,Chameleon采用K-最近邻图的方法来构建一个稀疏图(其中,图的每一个顶点代表一个数据对象,如果一个对象是另一个对象的k个最相似的对象之一,那么这两个顶点(对象)之间就存在一条边(这些边加权后反映对象间的相似度));
然后,Chameleon使用一种图划分算法,把k-个最近邻图划分成大量相对较小的子簇,使得边割最小(划分代价,说白了就是被切断的边上的权重之和最小)。
然后,Chameleon使用一种凝聚层次聚类算法,其基于子簇的相似度(为了确定最相似的子簇,该算法考察每个簇的互连性和邻近性),反复地合并子簇。

其中,最后的一步(使用一种凝聚层次聚类算法,其基于子簇的相似度(互连性和邻近性)反复地合并子簇)应该是Chameleon算法能发现任意性状的聚类的关键所在。
这里涉及到两个指标,即簇的互连性和簇的邻近性。
这两个指标理解起来比较抽象,我大概讲解一下。

簇的互联性(RI)考察的是两个簇之间的互联度和簇内部各元组之间的互联度。如果两个簇的边界距离和各簇内部元组之间的距离大致相同,那么在Chameloen中,就考虑将他们合并在一起。举个例子


这里写图片描述
在上图中,忽略RI的算法,通常会将(a),(b)聚到一块。而实际上(c),(d)聚为一簇更加理想,因为两簇边界的距离和簇内数据对象之间的距离比较接近。

簇的邻近性则强调对象的相似性,同样举个例子。
这里写图片描述
在上图中,明明是两个不同颜色的簇(蓝簇和绿簇)。而如果忽略相似性之后,则就会把他们合并成一个簇。这显然是不对的。

而Chameleon算法,就同时考虑了这两个属性来合并子簇,因此,它发现的子簇的质量比较高。

OK,整个算法就是这样。更多的算法实现细节,参加下面的参考文章。

参考文章
Chameleon两阶段聚类算法
数据挖掘(概念与技术)-第三版-Jiawei Han-P303

猜你喜欢

转载自blog.csdn.net/u014593570/article/details/77732292
今日推荐