上一篇讲了Partitional Clustering,这一篇聚类的另一种方式,层次分类。 (分享)

Hierarchical CLustering(层次分类)

层次分类方式

(1)Agglomerative(凝聚)

(2)Divisive(分裂)

凝聚的步骤

首先,我用一个通俗的例子来说明下,比如要把10位学生进行聚类,如果我们聚类的标准是空间上的距离,就是说A离B站的近,就认为他们是同一类,而不是根据他们的兴趣爱好,这就是距离的定义,那这样子的话,我们首先算出每两位同学之间的距离,把离得最近的两人先归为一类,那既然是同一类,那就是同一个群体,再算下这9个群体之间的距离,把距离最小的距离再归为一类,直至只有一个类。这就是凝聚。也可以用下面的几点表示。

(1)计算proximity矩阵,就是每两个点(类)之间的距离或者相似度

(2)将距离最短(相似度最高)的点合并在一起

(3)重复(1)(2)步骤,直到最后只有一个类

涉及到的问题

我们很容易就可以想到以两个人为集体跟另一人的空间距离是多少,乃至两个集体之间的距离该如何定义?也正是这个类距离定义的不同,就有了很多不同的算法。

下面给出了定义两个类的相似度的方法,我们知道相似度越高,距离越小。

(1)MIN,以两个Cluster中最近的两个对象的距离作为距离

(2)MAX,以两个Cluster中最远的两个对象的距离作为距离

(3)Group Average,以两个Cluster中所有对象的距离的平均值作为距离

(4)Distance Between Centorids,以两个Cluster中中心的距离作为距离

我们以MIN为例,来说一个例子

(1)我们得到了每两个点之间的相似度,如下

(2)我们发现对象1和对象2之间的相似度是最高的,0.9,所以这两个类得先合并

(3)因为是根据两个类中最短距离作为距离的,所以我们可以直接看,没必要再重新算,我们发现对象4和对象5之间的相似度是0.8,所以将这两个类合并。

(4)接下来,我们发现对象3跟{对象1,对象2}的相似度是0.1,对象3跟{对象4,对象5}的相似度是0.3,因此,我们将对象3跟{对象4,对象5}合并。我们可以得到如下的结果。

当然,我发现MIN是最简单的,但是也有优点,那就是不care类的大小,但是对噪声点敏感。比MIN稍显复杂的是MAX,也可以直接看一个矩阵就能确定聚类结果,下面给出用MAX的聚类结果,另外提一下,MAX的特点正好跟MIN完全相反。

至于其他根据Group Average和Distance Between Centorids,每次合并之后,要重新算下类之间的相似度。

小结

在凝聚过程中,最主要的是定义两个类之间的距离(相似度),对于同一堆数据,不同的距离定义,会得到不同的结果,每个定义都有各自的优势和不足,只有最合适的,没有最好的。根据实际问题实际分析,才是王道。

 

 

 

 

posted on 2013-06-02 19:59  MrMission  阅读(258)  评论(0编辑  收藏  举报