
在一个数据饱和的世界里,于浩瀚的、无标签的数据集中发现有意义的模式是一项根本性的科学挑战。从为星系分组到为患者分类,我们不断寻求发现隐藏的结构,为混沌带来秩序。聚类算法正是为此目的而设计的计算工具:它们是无监督方法,能在无需预先知道这些群体可能是什么的情况下,识别出数据中固有的群体,或称“簇”。但这项任务比初看起来要复杂得多,因为“簇”的定义本身就是模糊的。它是一个密集的数据区域,一组围绕中心原型聚集的点,还是别的什么?这个问题的答案决定了算法的路径,并最终决定了我们发现的模式。
本文将对聚类算法进行全面探索,引导您从基础概念到高级应用及批判性思考。在第一章“原理与机制”中,我们将剖析支撑不同算法家族的核心理念,如 k-means、DBSCAN 和高斯混合模型。我们还将面对实践中出现的严峻挑战,包括臭名昭著的“维度灾难”和单个方法的不稳定性,并揭示像共识聚类这样的技术如何能提供更稳健的结果。随后,在“应用与跨学科联系”一章中,我们将展示这些算法如何作为强大的发现工具,在从粒子物理学到精准医学等不同领域中发挥作用,同时也会强调以科学的严谨性和审慎态度解读其输出的至关重要性。
想象你是一位图书馆员,面对着堆积如山的新书,这些书既没有书名也没有封面。你的任务是把它们整理上架。你会如何开始?你可能会开始阅读一些片段,注意到有些书是关于星星的,另一些是关于古罗马的,还有一些是诗歌。直觉上,你开始把它们分成几堆:“天文学那堆”、“历史那堆”、“诗歌那堆”。本质上,你正在一个混乱的集合中发现隐藏的结构。你正在进行聚类。
在科学和数据分析中,我们面临着同样的挑战,但规模要宏大得多。我们面对的可能不是书籍,而是成千上万的患者、数百万颗恒星或数十亿的互联网用户。而且,每个项目可能不是由几个定性特征来描述,而是由成百上千个定量测量值来描述。一个聚类算法就是我们的计算图书馆员,一个用于在数据中寻找这些固有群体——或称簇——的正式程序,而无需事先被告知要寻找什么。
但这引出了一个深刻的问题:一个“簇”究竟是什么?它是一群密集的点吗?是围绕一个共同原型聚集的一组点吗?答案取决于你所采纳的理念,而每一种理念都催生了不同系列的算法。
也许对簇最直接的理解是一组围绕一个中心点聚集的数据点,就像行星围绕太阳运行,或蜜蜂围绕蜂巢。这就是最著名的聚类算法之一k-means背后的理念。
想象一下我们的数据点散布在一张地图上。k-means 算法通过一个简单的迭代舞蹈来工作:
这个过程因其简洁而强大,但它有两个关键特征。首先,科学家必须在过程开始之前就选择簇的数量 。算法无法发现“正确”的群体数量;它只能按照你指定的群体数量来划分数据。在一个真实世界的场景中,比如一位材料科学家根据合金的硬度和耐腐蚀性寻找新的合金家族,选择 是一个至关重要的决定,它定义了算法将尝试寻找多少个家族。
其次,更微妙的是,k-means 有一个隐含的几何假设。通过使用标准的欧几里得距离,根据最近的质心来定义簇,该算法倾向于找到球状(或“球形”)且大小大致相同的簇。它将空间分割成凸区域(称为 Voronoi 单元),并且即使在真实结构并非如此时,也会强加这种结构。
如果真实的簇不是整洁的球状团块怎么办?考虑一位生物学家正在研究一种可以在几种稳定的三维形状之间快速切换的蛋白质。对这种蛋白质运动的模拟可能会揭示出与这些稳定构象相对应的密集点云,这些点云由代表从一种形状到另一种形状的罕见、短暂过渡的非常稀疏的点桥连接起来。或者,想一想一个癌性肿瘤浸润健康的脑组织。癌细胞的基因表达谱可能形成一个单一、连续的群体,但这个群体的形状蔓延而不规则,就像泼洒的墨水。
在这些情况下,k-means 会遇到困难。它可能会错误地将那个单一、蔓延的癌症簇分割成几个较小的人为“球状”群体。它还会迫使蛋白质的稀疏过渡路径点进入某个稳定状态簇,从而模糊了处于稳定状态的定义。这揭示了对更复杂理念的需求。
其中一种理念是基于密度的聚类。这里的思想是,一个簇仅仅是一个数据点密度高的区域,与其他簇被密度低的区域隔开。可以把它想象成在夜空中识别星系;它们是密集的恒星集合,被广阔的空旷空间隔开。这个家族中最著名的算法是 DBSCAN(基于密度的含噪声应用空间聚类)。
DBSCAN 的工作方式是检查每个数据点周围的邻域。如果一个点在某个半径()内有足够多的邻居,它就被认为是一个核心点——密集区域的一部分。然后,算法将所有相互可达的核心点连接起来,一个簇就由一组相连的核心点及其附近的邻居构成。这种方法的精妙之处有两点。首先,它可以发现任意形状的簇,优雅地描绘出我们蔓延的癌细胞或非球形蛋白质状态的形态。其次,任何不在密集区域内且不靠近密集区域的点都会被标记为噪声。这非常强大;DBSCAN 为我们提供了一种有原则的方法来识别和分离蛋白质的异常过渡状态与其稳定形式,这是 k-means 无法完成的壮举。
第三种主要理念是概率式。在这里,我们假设数据是由多种潜在的概率分布混合生成的。最常见的版本,高斯混合模型(GMM),假定每个簇对应一个高斯(钟形曲线)分布。虽然 k-means 可以被看作是一个简化的 GMM,其中每个高斯分布都是球形且大小相同,但一个完整的 GMM 允许每个簇有其自己的椭球形状、方向和大小。GMM 不会对一个点进行硬性分配到某个簇,而是为每个簇提供一个成员概率。例如,一个患者的数据可能有 的概率属于“健康”表型, 的概率属于“亚型 A”,以及 的概率属于“亚型 B”。这种软分配可以更真实地表示生物学上的模糊性。
我们的讨论一直隐含地假设我们是在一个可以轻松可视化的空间中工作,比如二维或三维。然而,聚类的真正威力是在高维空间中释放的。一位免疫学家可能会用 45 种不同蛋白质的水平来表征一个单细胞,使每个细胞成为 45 维空间中的一个点。一位系统生物学家可能会为每位患者测量 5000 个基因的表达,将他们置于 5000 维空间中。在这里,我们的直觉开始失灵,一个奇怪而幽灵般的现象出现了:维度灾难。
在高维空间中,体积增长得如此之快,以至于数据点变得非常稀疏。就好像你把一个拥挤房间里的所有人都散布到整个太阳系。一个与直觉相反的后果是,“距离”这个概念本身开始瓦解。数学家们已经严格证明,对于广泛的数据分布,当维度数 变得非常大时,任意两个随机选择的点之间的距离变得几乎完全相同。这些距离的方差与其平均值之比,作为其相对离散度的度量,会随着 而骤降至零。
想象一下,在一个每个人离你都几乎恰好是 1000 英里的世界里,试图找到你“最近的”朋友。“近”与“远”的区别消失了。这对我们的算法产生了毁灭性的后果。K-means、DBSCAN 和层次聚类都从根本上依赖于比较距离来找到“最近的”质心或邻居。当所有距离都相同时,它们的结果变得随机、不稳定且毫无意义。我们用来寻找结构的工具——距离——本身变得信息贫乏。这是现代数据分析中最大的挑战之一,通常需要在聚类生效之前进行仔细的特征选择(只选择信息最丰富的维度)或降维技术。
除了维度灾难,实际挑战比比皆是。如果我们的某些测量值缺失了怎么办?一个患者 5000 个基因图谱中的一个缺失值,使其在 5000 维空间中的位置变得不确定。我们再也无法计算他们与任何其他患者的距离,这从根本上破坏了任何基于距离的聚类尝试。与计算一个基因的简单平均值(我们可以直接忽略缺失的样本)不同,聚类是一个整体过程,需要每个数据点与其他所有数据点关系的完整画面。
此外,许多算法是不稳定的。用不同的随机起始质心猜测运行两次 k-means,可能会产生两组完全不同的簇。在 k-means、DBSCAN 或 GMM 之间进行选择,也可能产生截然不同的结果。哪一个是正确的?
也许这个问题问错了。与其从一个脆弱的方法中寻求一个单一、完美的答案,我们可以拥抱答案的多样性来构建一个更稳健的答案。这就是共识聚类背后美妙的思想。
策略很简单:我们运行一个或多个聚类算法很多次,每次都使用不同的随机起始点,甚至在数据的略微不同的子样本上运行。然后,对于每一对数据点——比如患者 A 和患者 B——我们计算在所有这些运行中它们最终被分在同一个簇里的次数比例。这个比例就是它们的共关联分数。
如果两个患者真正相似,无论算法的随机初始化如何,它们都会被持续地分在一组,它们的共关联分数将接近 1。如果它们真正不同,它们将很少(如果曾经)被聚在一起,它们的分数将接近 0。这个过程创建了一个新的共识矩阵,其中每个条目代表了一种稳健的、经过平均的相似性度量。
这个共识矩阵比任何单一的聚类结果都更稳定、更可靠。最后,优雅的一步是将一个聚类算法(如层次聚类)应用于这个新矩阵。通过平均掉单个运行的噪声和不稳定性,我们得到了一个最终的簇集合,它反映了数据的深层、稳定结构,而不是单次算法运行的偶然性。这是一个有力的证明,表明力量和真理并非来自单一、权威的声音,而是来自一群嘈杂估计的集体智慧。
在遍历了聚类的原理之后,我们可能会留下一个印象,即这是一个由点和分区构成的整洁、数学的世界。但这些算法真正的美妙之处在于,当我们把它们从黑板上解放出来,让它们在科学数据的狂野、混乱的景观中漫游时,才会展现出来。正是在这里,在寻找真实问题的答案的过程中,聚类从一套程序转变为一种强大的发现透镜。聚类的应用故事不仅仅是一份用途列表;它是一堂关于我们如何选择看待世界、我们寻求何种模式,以及我们必须如何防范自己创造物的愚蠢的课。
聚类的核心是按“相似性”分组。但什么是相似性?答案并非由算法给出,而是由科学家给出。第一个,也是最关键的一步,总是定义一个有意义的距离概念,有时最深刻的见解来自最意想不到的定义。
想象一下大型强子对撞机内部质子-质子碰撞后的混乱景象。从碎片中,出现了被称为“喷注”的粒子喷流。对物理学家来说,一个喷注是一个单一、高能量的夸克或胶子,表现为一连串可观测的粒子。为了找到这些喷注,他们必须对碎片进行聚类。但是,从一次碰撞中飞出的两个粒子之间的“距离”是什么?不是它们在米上的间隔。相反,物理学家发明了一种特殊的度量,即快度-方位角分离 ,它以一种尊重粒子碰撞几何学的方式捕捉了邻近性。只有在定义了这个奇怪的新“距离”之后,聚类才能开始。这教给我们一个根本性的教训:在任何算法运行之前,我们必须首先决定两样东西相似意味着什么。
这种看见原本不可见之物的能力在生物学中变得更加引人注目。思考一下在数百万健康细胞中找到一个罕见的癌细胞的挑战。一种名为流式细胞术的技术可以测量每个细胞表面十几种或更多的蛋白质标记,为每个细胞生成一个高维“签名”。一个人类分析师,受限于在散点图上一次只能查看两个标记,可能只看到一团毫无希望重叠的点云。那些因所有十几个标记的微妙组合而与众不同的罕见异常细胞,完全被隐藏了。但一个无监督聚类算法,在完整的高维空间中操作,能同时感受到所有维度上所有点之间的“距离”。它可以毫不费力地挑出一个微小、遥远的、对应于白血病细胞的点群,这是肉眼无法完成的壮举。在这里,聚类变成了一种计算显微镜,将我们的感官延伸到我们无法感知的维度。
这种发现的力量不仅仅是用于在草堆里找针;它是为了重新绘制我们的知识地图。几十年来,医学一直使用宽泛的诊断标签。“抑郁症”,例如,是一个涵盖了广泛痛苦谱系的单一术语。我们能做得更好吗?研究人员现在正将患者的症状、脑部扫描和血液生物标志物数据输入聚类算法。这些算法不效忠于旧的类别,正在寻找它们自己的模式。它们正在将患者划分为新的、数据驱动的亚型——例如,一个以炎症和疲劳为特征的“免疫代谢”组,以及一个具有独特激素谱和睡眠障碍的“忧郁”组。这不仅仅是重新贴标签;这是迈向精准精神病学的第一步,未来的治疗可能不再针对一个模糊的诊断,而是针对患者特定的生物学特征。
在这些案例中,聚类之所以成功,恰恰因为它是无监督的。想象一下,试图找到一小群对一种新药反应特别好的患者。一个标准的监督式机器学习模型,被训练来预测所有患者的平均反应,可能会完全错过这个亚组。它的目标是在平均水平上正确,并且会很乐意牺牲在一个小群体上的准确性来提高其整体得分。相比之下,聚类算法没有被给予答案。它只是查看患者数据的固有结构——他们的基因表达、他们的突变——并寻找自然的 groupings。它可能会发现一个小的、紧密的、共享独特遗传特征的患者簇。直到后来,当我们检查他们的临床结果时,我们才恍然大悟:这些是超级响应者。那个寻找已知信号的监督模型是盲目的。而那个仅仅探索数据景观的无监督算法,却偶然发现了金矿。
聚类的思想可以被推得更远。我们聚类的“事物”不一定非得是由一列特征描述的简单点。它们可以是远为复杂的实体。
在神经科学中,一个根本性的挑战是“脉冲放电分类”:监听来自微小脑电极的电活动噼啪声,并弄清楚每次是哪个神经元“说话”。每个电“脉冲”都是一个复杂的波形,一个在几毫秒内演变的信号片段。通过将每个波形视为一个数据点,聚类算法可以筛选这片嘈杂,并将每个脉冲分配给其源头神经元,有效地分离出单个脑细胞的声音。我们不再是聚类静态的点,而是动态的信号。
我们也可以聚类物理空间中的物体。借助空间转录组学等新技术,我们可以测量数千个细胞的基因活动,同时记录它们在组织切片中的位置。目标是发现组织结构:肝脏的小叶、大脑的皮层。在这里,相似性是双重的:如果两个细胞在物理上接近并且有相似的遗传程序,那么它们就是相似的。像 DBSCAN 这样的算法寻找高空间密度的区域,或者像谱聚类这样的算法在一个连接依赖于空间和分子相似性的图中找到社群,可以自动在组织图上绘制出这些区域的边界。
抽象还可以更深一层。在调控细胞生命的庞大基因网络中,如果我们感兴趣的是比直接连接更微妙的东西呢?如果我们想找到参与相同功能回路或“基序”的基因群呢?我们可以构建一个新的“共参与”图,其中两个基因之间的连接强度不是它们的直接相似性,而是它们共享的功能基序的数量。通过聚类这个更高阶的图,我们可以找到不仅仅是相似,而且是以相同方式协同工作的基因社群。同样,像马尔可夫聚类(MCL)算法这样强大的基于图的方法,通过模拟基因相似性网络上的“流动”过程来寻找基因家族。它让随机游走者探索图,然后使用一个巧妙的“膨胀”步骤来夸大常走路径和微弱踪迹之间的差异,导致游走者被困在相关基因的密集社群中。
这段旅程揭示了聚类算法并非世界的被动观察者。它是一种主动的工具,和任何工具一样,它有自己的属性和偏见。选择一个算法就像选择一个镜头;每一个都揭示了现实的不同方面,同时对其他方面视而不见。
这一点在拓扑数据分析(TDA)这一前沿领域表现得最为明显。一个名为 Mapper 的算法可以创建一个高维数据集的简化“骨架”或网络摘要。这个流程中的一个关键步骤涉及对数据的小块局部区域进行聚类。一项卓越的分析表明,数据的最终形态图景会因你插入哪个聚类算法而发生巨大变化。如果你使用 k-means,由于其内在偏好寻找圆形、球状的簇,它会将一个优雅、细长的数据流形打碎成一系列不相连的斑点。如果你使用单链接聚类,其“链接”点的倾向会使其对噪声极其敏感,从而产生虚假的连接。如果你使用像 DBSCAN 这样的基于密度的方法,它擅长寻找任意形状并忽略噪声,你或许能恢复那个真实、优雅的结构。这个教训是深刻的:你发现的“模式”是数据与你的工具之间的对话。不理解你的工具,你就无法理解结果。
这把我们带到了最重要的一课,一个关于聚类诱人力量及其人类解释者易错性的警告。聚类算法功能强大,但它们也很顺从。如果你要求它们找到 个簇,它们会尽职尽责地将世界划分为 个群体,无论这些群体是否真实存在。
思考一下聚类在人类遗传学中的应用。一个众所周知的结果是,如果你从地理位置遥远的地方——比如西非、北欧和东亚——的人群中采集基因数据,并运行像 PCA 或 STRUCTURE 这样的聚类算法,你会得到与大洲大致对应的不同簇。人们很容易看到这个结果就得出结论:“啊哈!算法发现了生物学上的种族。它验证了我们的民间分类。”
但这是一个深刻的科学错误。正如我们的一个指导性问题所阐明的,这个结果在很大程度上是一个有偏见的抽样策略造成的人为结果。如果你不是只在极端地区抽样,而是在整个大陆上均匀地抽样,画面就会完全改变。离散的簇消失了,取而代之的是一个美丽的、连续的梯度,或称“渐变群”。来自邻近村庄的人在基因上是相似的,并且相似性随着地理距离的增加而平滑递减。算法被迫将这个连续体划分为 个群体,它只能在沙上画出任意的界线。
因此,这些簇并没有揭示自然的、离散的类别。它们反映的是样本的结构和算法划分的内在天性。人类的基因变异主要是连续的,其绝大部分存在于任何大陆人群内部,而不是之间。“种族”是一个社会和政治建构,而不是一个生物学建构,在医学上用它作为个人生物学的粗略替代品是充满危险的。
这个最后的例子是负责任地使用聚类的终极教训。这些算法是探索、生成假设和以新方式看待世界的非凡工具。但它们不是真理的仲裁者。聚类算法的输出不是科学探究的终点;而是起点。它向我们呈现一个模式,而我们作为深思熟虑和批判性的科学家的工作,是去问它意味着什么——以及它是否真实。