Likan Zhan

聚类分析

侃侃迩行 · 2017-06-01

1. 什么是聚类分析

聚类分析 (clustering) 基于样本或变量的相似性或距离,把样本分解为不同的类别。 例如,在一项基因表达研究中,我们或许希望找到具有类似基因表达的被试亚类,或者找到被试群体中具有类似表达的基因亚类。聚类分析是一种非监督式的学习 (unsupervised learning),它有不同的方法组成。此处我们关注两种常见的方法:层级性聚类分析 (hierarchical clustering) 和 K-均值聚类 (k-means clustering )。层次性聚类可以利用任何一种相似性测量来进行;而 K-均值聚类则主要用欧氏距离 (Euclidean distance) 或相关距离 (correlation distance)。

一般意义上来讲,所有的聚类分析方法都使用了相同的策略。首先,我们计算相似度并利用该相似度把研究对象划分成不同的类别。但是,只有当类别所对应的数据特征没有被用于定义不同的组别时,该类别才是有用的。要判断一个聚类分析的有效性,我们需要外部信息;聚类不是事先确定的。例如,如果每一个类别中的病人有共同的基因型,或者一个类别中的基因含有共同的序列膜体 (sequence motif) 越高,我们对该聚类分析的有效性就越有信心。但只有当该信息在最开始的时候没有用来判断相似性的时候,这种判断的信心才会有所提升。

2. 相似性的计算

那么相似性是如何计算的呢?假如我们的数据是 n=15 个病人在五个基因 A-E 中的基因表达谱 (gene expression profile)。我们想比较这些表达谱和参考谱 (reference profile) 之间的关系 (图1)。直觉的观察可能是有误导性的。例如,基因 B 的表达谱与参考谱之间的差异要小于基因 A。基于此,我们也许会认为基因 B 的表达谱与其参考谱的相似性要大于基因 A 的表达谱与其参考谱的相似性。但实际上,基因 B 的表现谱与其参考铺展现出了完全不同的模式,而基因 A 的表现谱和参考谱的模式之间则有非常高的相似性。

测量上述两个谱之间相似性的方法很多,包括主观测量,此处我们用均方根 (root mean, square, r.m.s),即欧式距离。该统计量包含了一个 $1/\sqrt{n}$ 以消除样本量 n 对该数值的影响,例如两个谱之间的差异是一个常数。基于此,我们可以把相似性表示为 $|c - r.m.s|$。此处 c 是一个常数,如表示不同对象之间的最大距离,所以两个距离大于等于 c 的物体之间的相似性为零。

实际应用中,基因表达的相似性应该基于调节的变化过程 (varying regulation) 而不是绝对的丰度 (absolute abundance)。为了突出调节过程,我们可以把表达值进行中心化,即把所有的分数都减掉其平均值 (图 1b )。为了更好的关注调节的模式而不是调节数量本身,我们可以把数量转化成 z 分数 (图 1c)。z分数谱的均方根是 1-r,其中 r 是这两个谱之间的相关系数。所以完美相关谱之间的均方根为 0。如果某个基因的调节过程与参考谱的变化过程是完全相反的,如基因 D,那么距离就可以用 1-|r| 来表示。如果距离使用相关距离来表示的,那么我们通常需要删除掉方差非常小的样本,因为这些样本中的模式可能是由随机因素导致的。

3. 层级性聚类

一旦找到了不同物体之间的相似性,我们就可以把他们组合成不同的类别了。在层级性聚类分析中,分析的节点开始于每一个物体,然后根据节点之间的两两的距离顺序组合到一起 (图 2a)。距离的计算方法有很多,但是最常用的方法有完整链接聚类法 (complete linkage clustering) 和单一链接聚类法 (single linkage clustering )。他们分别返回两两距离最近和最远的距离。聚类分析的结果通常用系统树图 (dendrogram) 表示。图中分支高度代表节点在哪一步合并到一起或者节点之间的距离 (图 2b)。聚类分析具体产生的类别通过对该树形图的切分形成。例如,我们可以在一个特定高度上把该树形图进行切割,那么切割之后的每一个独立的树都可以被认为是一个类别。类别的成员受到切割位置和相似性的双重影响 (图3)。另外,研究者也可以根据相关理论知识确定切割位置,以找到有理论价值的组别。

当对两个系统树图进行比较时,要知道树图中树枝的顺序是没有意义的。把一个树枝进行反转后,曾经挨在一起的两个节点就会丧失其空间上的临近性 (图 3b 中的 D5 和 E5)。

4. k- 均值聚类

与层级性聚类法不同,k-均值聚类法要求我们首先要确定类别的个数,即 k。图 4a 展示了 k=3 的 k 均值聚类法。该图中,研究者随机产生了一个二维的数据集合。该集合中,产生的点阵随机位于三个相邻的区域 (灰色的圆圈)。该算法首先选择 k 个点作为圆心 (空心圆圈)。在我们的例子中,这 k 个点是从我们的数据中随机抽取的,但是这 k 个圆心也可以在数据结构的范围内随机产生。第一步,我们需要计算所有数据点和这三个圆心之间的相似性。相似性通常用欧式距离或相关距离来表示。不同点的点将与离其最近的圆心组合成到一起。随后根据与每一个圆心组合起来的数据点,计算圆心位置。然后根据新的圆心位置,重新对数据进行分组,重新确定圆心位置。重复该过程很多次,直到圆心和分组不再变化为止。

5. 聚类结果的取舍

聚类的质量可以通过类别内相似性和类别间相似性来考察。除非不同的类别间有很好的区分,类别内相似度很高,而类别间相似性很低,就算使用相同的方法来计算相似度,不同的聚类方法通常会产生不同的聚类结果。在判断聚类的效果时,组内相似性标准的权重要高于组间差异性的权重,因为不同组别之间的边界可能是人为的,并没有很好的被区分。

当聚类过程没有辐合到某一个解决方案时,例如 k-均值聚类法的分类结果往往受圆心选择的影响,我们可以用类别内相似性来比较不同的解决方案。例如在 10 000 模拟数据中,出现次数最多的解决方案 (图 4c) 就不是距离最小的方案 (图 4a)。当不同类别围绕其圆心在空间上形成的独立的球状结构时 (图 4c),k-均值分类与完整链接聚类法的结果就非常像了。当 k-均值分类的某些类别粘合到一起时 (图 4e-g),其分类结果与单一链接类聚法类似。在我们前述的例子中,不同类别并没有很好的区分开来,这反映在相应的解决方案上就是这些聚类方案并没有很好的重构我们数据的产生方式 (图 4e-g)。

确定类别的数量也是一个难题。通常来说研究者在开始的时候并不知道类别的数量。所以,我们可以通过探索类别数量和和类别质量之间的关系来最终确定合适的类别数量。另外一种方法是画出每一个类别中的不同个体 (图 3),来确定同一类别中个体的变异程度,以及确定是否存在一些相似程度很高的类别,从而我们可以把这些类别组合成一个类别。

聚类研究方法始终会发现一些类别,就算数据中不存在一个自然的类别。类别的最终确定应该考虑到该类别的有用和可用性。研究者应该始终问下面这么一个问题:同一类别中的所有个体是否有一些共同的特征。这将有利于研究者探索数据和提出假设。

6. 参考文献

Altman, N., & Krzywinski, M. (2017). Points of Significance: Clustering. Nature Methods, 14(6), 545-546. doi:10.1038/nmeth.4299