层次聚类的数学结构
在给定一个需要聚类的对象的矩阵之后,我们可以计算相应的邻近度矩阵,邻近度矩阵是层次聚类方法的基础,邻近度矩阵中的元素可以是对象之间的相似度(similarity)或不相似度(dissimilarity)。一般我们都是使用的对象之间的距离(一种不相似度)来组成邻近度矩阵。而所有的层次聚类方法都可以看成是把一个邻近度矩阵转化为一系列具有嵌套结构的划分。
首先通过定义来解释一下什么是一系列有嵌套结构的划分。用集合 X 表示n个待聚类的对象,
xi 表示第i个对象, X 的一个划分 Y 将X划分成多个子集 {C1,C2,…,Cm} ,且满足以下条件:
每一次聚类就是一次划分,划分的每一个成分 Ci 都是一个簇。 Z 是X的另外一个划分,如果说 Z 的每一个成分都是 Y 的成分的子集,那么可以说划分 Z 嵌套在划分 Y 中。
举个栗子,如果 X 如下:
划分 Y和Z 如下:
则称 Z嵌套在Y中 。
而划分
Y和Z
与下面的划分都没有嵌套关系
层次聚类得到的就是一系列的具有嵌套关系划分(如 Y和Z )。
凝聚的层次聚类算法使用自下而上的策略,最开始的时候每一个对象都作为一个簇,根据对象的邻近度矩阵,找出两个最接近的簇,合并它们,形成一个簇,直到所有的对象都在一个簇里面。而分裂的层次聚类算法的步骤洽洽相反。
层次聚类的树状图表示
相比上面抽象的符号表示,也许一个树状图更能让你理解层次聚类的过程。
一个树状图包括多个层,每个层包含多个节点。例如,上图就包括五个层,第一层有5个节点,代表了5个簇,第5层只有一个节点,表示只剩下一个簇了。节点之间的连线表示相互之间的嵌套关系。
对树状图进行水平切割,可以得到一个聚类,比如在第二层和第三层之间进行水平切割,我们得到的聚类结果是
{(x1,x2),(x3),(x4),(x5)}
接下来的一篇文章将介绍层次聚类中经常用到的单连接算法(single-linkage)和全连接算法(complete-linkage )