链接: https://youtu.be/7xHsRkOdVwo?si=FmJsnHgNaa_2cP4z
踏上征程,开启统计探索之旅,这里是StatQuest。大家好,欢迎来到StatQuest。今天我们将探讨层次聚类算法。
层次聚类常与热图共同呈现。若您还不熟悉热图的基本概念,只需记住:列通常代表不同样本,行通常代表不同基因的测量值。红色通常表示基因高表达,蓝色或紫色则表示基因低表达。
层次聚类会根据相似度对行和/或列进行重新排序。这使得数据中的关联性一目了然。例如这些样本表达相同基因,这些基因表现模式一致。左侧是未经过层次聚类的热图,右侧是经过层次聚类的热图。可见聚类处理对数据呈现方式产生了显著影响。
热图常配有树状图,接下来我们也会详解这部分。现在正式开始。
我们先看一个简单示例:这个基础热图包含三个样本和四个基因。本例中我们仅对行(即基因)进行聚类重排。
从原理上说,第一步是找出与一号基因最相似的基因。一号与二号基因存在差异——通过颜色对比即可判断。一号基因在样本一中高表达,故显示红色。而二号基因在样本一中未高表达,故显示蓝色。在样本三中,一号基因低表达呈蓝色,二号基因高表达呈红色。
一号与三号基因表现相似:在样本一中两者均呈红色,表示高表达;在样本三中两者均呈蓝色,表示低表达。一号与四号基因也具相似性,但一号基因与三号基因相似度最高。
第二步是找出与二号基因最相似的基因。经过全面比对,发现二号基因与四号基因最相似。接着对三号、四号基因进行相同操作。
第三步:评估不同组合,确定相似度最高的两个基因。确定后将其合并为一个聚类。本例中,一号与三号基因的相似度高于其他任何组合。因此它们组成第一聚类。
第四步:返回第一步,但将新聚类视作单个基因处理。于是我们找出与第一聚类最相似的基因。发现第一聚类与四号基因最相似。同时确定与二号基因最相似的基因。此处二号基因与四号基因最相似。注意我们已将二号基因与第一聚类进行过比对。对四号基因执行相同操作后,在各类组合中锁定相似度最高的两个基因。将其合并为新聚类。本例中二号与四号基因组合相似度最高。因此它们形成第二聚类。
再次返回第一步时,由于仅剩两个聚类,直接进行合并。完成!大功告成。
层次聚类通常会配套展示树状图。它既标示相似度,也显示聚类形成的顺序。第一聚类最先形成,相似度最高,对应最短的树枝。第二聚类其次形成,相似度次之,对应较短的树枝。包含所有基因的第三聚类最后形成,对应最长的树枝。
现在我们来讨论一些细节问题。还记得第一步吗?要找出与一号基因最相似的基因?首先我们需要定义"最相似"的标准。确定相似度的方法是人为选择的。不过基因间的欧氏距离经常被采用。
来看一个例子。我们使用一个非常简单的热图,仅包含两个样本和两个基因。现在显示的是热图中颜色对应的具体数值。基因一与基因二的欧氏距离等于样本一的差值平方,加上样本二的差值平方,再开方。代入样本一的具体数值:1.6 减去负0.5。再代入样本二的数值:0.5 减去负1.9。计算得出:√(2.1² + 2.4²)可以将括号内的数值视为三角形的两条直角边。X轴代表基因一与基因二在样本一中的距离,Y轴代表它们在样本二中的距离。斜边就是两个基因间的实际距离。根据勾股定理,斜边等于√(x² + y²)在此例中就是√(2.1² + 2.4²)计算结果3.2就是基因一与基因二的距离。
当样本更多时,只需扩展这个公式。这并不复杂。
欧氏距离只是其中一种方法。还有很多其他方法,比如曼哈顿距离。曼哈顿距离就是各个差值的绝对值之和。不同于先平方再开方,我们直接取差值的绝对值。从几何角度理解,可以想象每个差值是一个线段。将所有线段首尾相连,其总长度就是曼哈顿距离。
是的,这会产生不同结果。注意看效果差异。这是使用欧氏距离绘制的热图。这是相同数据使用曼哈顿距离绘制的热图。两者非常相似,但也存在一些差异。距离度量标准的选择是任意的。
需要特别注意。选择哪种方法并没有生物学或物理学上的必然理由。选择能让你更深入理解数据的方法。
还记得我们如何将基因1和3合并为第一聚类并与其他基因比较吗?其实比较聚类也有多种方式。一个简单的方法是使用各样本测量值的平均值。但还有很多其他方法。这些选择也会影响聚类结果。现在我们来讨论不同的聚类比较方法。
为了直观展示不同方法的原理,假设我们的数据分布在XY平面上。假设已经形成了这两个聚类。我们只需要确定最后一个点属于哪个聚类。可以将该点与每个聚类的平均值进行比较。这种方法称为质心法。也可以比较该点与每个聚类中最近的点。这被称为单联动法。或者比较该点与每个聚类中最远的点。这被称为全联动法。此外还有其他方法。
这张热图展示的是基于最远点比较的聚类结果。顺便一提,如果使用R语言,这是HClust函数的默认设置。这张热图展示的是基于平均点比较的聚类结果。最后这张热图展示的是基于最近点比较的聚类结果。这些热图看起来相似,但在数据呈现方式上存在差异。
总结来说,聚类是基于某种相似性度量形成的。你需要自行定义这种相似性标准。不过大多数程序都提供了合理的默认设置。形成子聚类后,还需要决定如何与其他行、列或子聚类进行比较。大多数程序在这方面也提供了良好的默认设置。树状图中分支的高度显示了最相似的对象。
太棒了!我们又完成了一次精彩的数据探索之旅。如果您喜欢这个讲解,欢迎订阅我的频道,获取更多类似内容。如果您有特别想了解的主题,也欢迎在评论区留言告诉我。