关于聚类分析,在之前《多元分析》中有提及到。聚类分析有很多种方法,层次聚类、kmeans聚类等等。今天和大家分享一下层次聚类(也叫“系统聚类”)的概念以及应用。
01、层次聚类简介
我们知道,聚类分析是把相似的个体聚在一起。那么具体我们应该按照什么样的规则来聚类呢?
关于层次聚类,具体可以从两个方向来考虑:凝聚法和分离法。
(1)凝聚法
凝聚法,顾名思义,就是逐步的凝聚在一起。
换句话说,我们是从单个的个体出发的,逐步合并最“相似”的个体,直到所有的个体都合并为一个族群。
具体步骤如下:
步骤一:先把n个样本当成n个不同的族群步骤二:计算n个族群间的距离矩阵步骤三:合并距离最小的两个族群,计算新的族群间的距离矩阵步骤四:如果族群数为1,则到步骤5,否则到步骤3步骤五:绘制系统树图步骤六:选择族群个数(2)分离法
分离法,其实是凝聚法的相反方向。
顾名思义,分离法是先把所有的个体看成是一个族群,慢慢分到n个完全不同的族群。
下面,我们这里重点对凝聚法进行分享。
02、凝聚法详情
根据上面的概述我们知道,凝聚法的每一步需要合并“距离最小的两个族群”,而不同族群间距离的定义方法决定了不同的聚类结果,关于凝聚法的距离定义主要有两种思想:连接法和Ward法。
(1)凝聚法之——连接法
连接法又细分了以下四种:
简单连接:定义两族群间相隔最近的两个个体间的距离,为两族群的距离完全连接:定义两族群间相隔最远的两个个体间的距离,为两族群的距离平均连接:A群中所有的Na个样本与B群中所有的Nb个样本产生的距离(共计Na*Nb个距离),求平均值,作为两个族群的距离质心连接:两个群中各自的质心(即样本均值向量),之间的欧式距离,作为两个族群的距离
上面的几种方法可以通过下图来理解:
上图中分别是:简单连接、完全连接、平均连接、质心连接。
平均连接法和质心连接法的区别在于,平均连接是先将两族群间所有的距离求出来,然后求均值;而质心法是先求族群内所有样本的平均质心,然后看质心距离。
质心法看着更加合理一些,但也是有一些局限的。比如其他三种方法,其实都是单调的(即每一步聚类步骤,都是可以基于之前的距离计算的,不需要重复计算),但质心法是非单调的,有可能出现距离的反复。
另外,由于质心法是所有样本的平均,所以容易受到样本量的影响,聚类后的新的群组质心会出现倾斜。改进的方法是不加权,基于原有两个群的质点连线的中点作为新质心。
(2)凝聚法之——Ward法
连接法是基于两个族群样本间距离作为族群距离,与其不同的是,ward法其实是通过合并前后的族群内方差平方和的差异,来定义群组距离的。
有以下公式:
A、B代表了合并之前的两个族群,AB代表了合并之后的族群。I-AB代表合并前后的SSE的差异。关于SSE,就是和方差,回头系统讲讲。
啥意思呢?其实很好理解。如果两个族群比较近,那么合并以后的方差应该也不是很大,因为方差衡量的是离散程度。
但Ward法有一个问题就是,更倾向于合并小的族群。因为大的族群从方差层面,肯定是容易比小族群大的。
03、绘制系统树图
其实根据上面的简介,我们能够了解到,所谓的层次聚类,是一种聚类的路径。那如何利用图表表示层次聚类的过程呢?
对,这就是系统树图。看一个示例图:
上图就是一个典型的系统树图,很好地呈现了整体的聚类过程。
根据上面的系统树图,我们可以看出每一步的聚类过程,包括合并族群带来的距离的变化。最底下是所有的待聚类的所有个体,纵轴就是聚类的距离。逐步往上,是一次次的聚类过程。最上面,就是一个类别了。
除了上面这种比较典型的系统树图的呈现外,也有下面的变形:
这种系统树图,多在基因的聚类分析中看到。该图包括了两个维度的聚类,一方面是样本的聚类,另一方面是变量(基因信息)的聚类。
04、族群个数的选择
还有最后一个问题,就是我们应该选取多少个族群呢?
单纯从系统树图上看,在不同距离上截取,是可以选择不同族群的。看下面两个图:
当我们在不同距离上截取时,聚类的个数也不同。左边的图聚成5类,而右边的图聚成2类。那到底应该选取几个族群合适呢?
这个其实是比较主观的一个过程了。
一方面,可以根据业务情况或者经验,选择比较好解释的聚类;另一方面,也可以通过数据层面,寻找组别差距比较大的距离变化的节点。
另外,从上面的过程中,我们也可以看出来,层次聚类是一个单向的过程,一旦一个个体被分入到某一个群体之后,就没有办法归入到其他群体了。这也决定了层次聚类只能达到局部最优的这样一个结论,而一般不可能是全局最优。这是层次聚类的一个很大的缺点。