
在数据分析中,我们常常面临一个根本性挑战:当不知道数据集的底层结构时,我们该如何对其建模?传统方法通常要求我们做出严格的假设,例如指定我们期望找到的簇或组的确切数量。这种方法有将现实过度简化、忽略数据中隐藏的真实复杂性的风险。如果我们能让数据本身告诉我们有多少个组,那会怎样呢?
这正是狄利克雷过程(DP)所要解决的问题,它是贝叶斯非参数方法的一块基石。它提供了一个灵活而强大的框架,用于在不预先固定模型复杂性的情况下发现数据中的结构。狄利克雷过程遵循一个优雅的原则:数据集中的类别数量不是一个需要选择的固定参数,而是一个需要推断的随机量。
本文将引导您了解狄利克雷过程的概念和实践全貌。在第一章“原理与机制”中,我们将通过“中餐馆过程”等直观的类比来揭示狄利克雷过程背后的理论,并探讨其生成簇的方式。随后,在“应用与跨学科联系”一章中,将展示这一统计工具如何在从基因组学、自然语言处理到生物统计学和材料科学等领域中成为不可或缺的发现工具。
在科学中,我们经常与概率分布打交道。我们可能会讨论人群中身高的分布(通常呈钟形曲线),或者骰子点数的分布(是均匀分布)。在这些情况下,我们讨论的是关于简单数值的分布。但如果我们想更有雄心一些呢?如果我们想讨论*分布的分布*呢?
想象一下,作为一名分析师,你面对一个新数据集。你绘制了一张直方图,它呈现出某种形状。也许它有一个峰,或者两个,或者一系列锯齿状的山丘。这个分布的确切形状是未知的。传统方法可能会迫使你假设一个特定的形式——比如,两个或三个钟形曲线的混合。但如果它有四个峰呢?或者十个?或者如果它的形状完全是别的样子呢?我们常常被迫进行猜测,这种简化可能会忽略我们试图建模的现实世界中真正的丰富性。
这就是狄利克雷过程(DP)登场的地方。它是一个极其优雅的数学工具,提供了一种在无限、灵活的可能性空间上设置概率分布的方法。它让我们在数据面前保持谦逊,可以说:“我不知道存在多少个组或类别,所以让数据自己来揭示其结构。”这种自动建模未知数量的“众数”或簇的能力,使狄利克雷过程成为现代贝叶斯非参数方法的基石。
狄利克雷过程的核心是一个简单而迷人的思想,一种你可以在周围随处可见的动态:“富者愈富”现象。受欢迎的事物往往会变得更受欢迎。让我们通过一个简单的故事来看看这是如何发生的。
想象你正在从一个神奇的、无限大的袋子中抽取彩球。开始时,袋子是空的。你从一个拥有所有可想象颜色的无限供应库中取出一个球,比如一个红球,然后把它放进袋子里。现在,你再抽一次。会发生什么?你有两个选择:以某种概率,你可以从那个无限供应库中取出一个全新的颜色——蓝色、绿色、黄绿色,等等。或者,以另一种概率,你可以从袋子里面抽一个球。因为里面只有一个红球,所以你会抽到那个红球。但神奇之处在于:抽到它之后,你把它放回去,同时再放入一个同色的球。所以现在袋子里有两个红球。
如果你重复这个过程,你就能看到会发生什么。袋中某种颜色的球积累得越多,下一次抽到该颜色的机会就越大,而这又会增加一个同色的球,进一步提高其概率。这是一个自我强化的过程。这个生成故事被称为波利亚罐子(Pólya Urn)或Blackwell-MacQueen罐子模型。
这个简单的故事就是狄利克雷过程的灵魂。如果我们用“数据值”替换“颜色”,我们就得到了一个生成观测序列 的过程。在给定我们已经看过的 个观测的情况下,下一个观测 的预测概率可以被优美而精确地写出来。它混合了两种可能性:
让我们来拆解这个表达式,因为它包含了全部的秘密。
是基分布(base measure)。可以把它想象成那个“拥有所有可想象颜色的无限供应库”。它代表了我们对于新值可能是什么样子的先验信念。当我们生成一个前所未见的值时,我们是从 中抽取的。
是集中度参数(concentration parameter)。这是一个正数,控制我们进行探索的倾向。它是我们从供应库 中抽取全新颜色的权重。如果 很大, 这一项就更大,我们更有可能生成全新的值。如果 很小,我们就更保守,倾向于重复我们已经见过的值。
第二项,由 加权,代表从“已在袋中的球”里抽取。它是一个由我们已经观测到的 个数据点组成的离散分布。我们拥有的数据越多,第二项的主导作用就越强,这个过程也越来越受其自身历史的支配。
一个绝妙而简单的例子说明了 的作用。假设我们已经抽取了一个观测值 。我们的下一个观测值 与其完全相同的概率是多少?使用上述规则(并假设我们的基分布 是连续的,因此从中抽取到完全相同值的概率为零),答案恰好是 。如果 很大(例如 100),这个概率就非常小——我们期望出现新值。如果 很小(例如 0.1),这个概率就很大——我们期望出现重复。
波利亚罐子模型是一个完美的机械类比,但一个更令人愉快且更具社会性的比喻来描述狄利克雷过程的聚类特性,则是中餐馆过程(CRP)。
想象一家有无限张桌子的中餐馆。顾客(我们的数据点)一个接一个地到来。
注意这些概率!它们与我们预测公式中的概率完全相同。“富者愈富”的动态现在变成了一种社会动态:受欢迎的桌子会吸引更多的人。参数 再次扮演了社交性参数的角色;高 值意味着顾客不善交际,倾向于新开桌子,导致出现许多小簇。低 值意味着顾客喜欢合群,倾向于加入现有桌子,导致出现少数几个大簇。
每张桌子上供应的“菜肴”可以被看作是定义该簇的参数。例如,如果我们按身高对人进行聚类,那么桌子 上的菜肴就是该组的平均身高 。该桌的所有顾客共享这道菜。
这个过程定义了一个在所有可能的将 位顾客分配到不同桌子(即所有可能的数据聚类方式)的方案上的概率分布。任何特定划分的概率,比如说,将 7 个数据点划分为大小为 3、2 和 2 的三个簇,都可以使用所谓的可交换划分概率函数(EPPF)精确计算。中餐馆过程的神奇之处在于簇的数量不是固定的,而是过程的一个随机结果。那么,我们应该期望看到多少个簇呢?在 位顾客就座后,桌子的期望数量 大约以 的速度增长。这种对数增长极为重要:它意味着模型可以随着更多数据的到来而创建新的簇,但它这样做是节俭的。模型的复杂性会适应数据的复杂性。
那么,我们有了这个用于数据聚类的绝妙理论机器。我们该如何实际使用它呢?将划分上的中餐馆过程先验与数据的似然相结合,被称为狄利克雷过程混合模型。
假设我们有数据点 并希望对它们进行聚类。所有可能划分上的完整后验分布是巨大的,因此我们无法直接计算它。相反,我们使用马尔可夫链蒙特卡洛(MCMC)等计算方法来探索它。一种常见且直观的算法是折叠吉布斯采样(collapsed Gibbs sampling)。
过程很简单:我们一次一个地遍历每个数据点 ,暂时将其从其桌子中移除,然后决定它应该坐在哪里。将其分配到任何给定桌子(无论是现有桌子还是新桌子)的概率是贝叶斯规则的一个优美应用。它由两个简单问题的乘积得出:
通过迭代这个过程,一次移动一个顾客,系统最终会稳定下来,为我们提供一个来自聚类后验分布的良好样本。虽然简单,但这种吉布斯采样器有时会陷入困境。像分裂-合并移动(split-merge moves)这样的更高级技术已经被开发出来,用于提议一次性移动整组顾客,从而更有效地探索可能划分的广阔空间。这些方法必须精心设计,以直接作用于划分本身,因为我们给簇的具体标签——'1', '2', '3'——是任意的,没有内在含义。重要的是分组,而不是组的名称。
当我们开始将这些想法层叠起来时,狄利克雷过程的力量才真正显现出来。如果我们的数据是自然分组的呢?例如,我们可能正在对一个文档集合中的主题进行建模,其中每个文档是一个组,而单词是数据。或者我们可能正在对来自不同患者的组织样本中发现的细胞类型进行建模。
我们可能期望每个文档都有其自己的主题混合,但我们也期望所有文档共享可能的主题集。像“体育”这样的主题可能会出现在许多文档中,而像“贝叶斯非参数方法”这样的主题可能更罕见,但它仍然是从人类知识的同一个共享词汇库中抽取的。
分层狄利克雷过程(HDP)为这种情况提供了一个完美的框架,并附带了它自己迷人的比喻:中餐馆加盟连锁(Chinese Restaurant Franchise)。
这个结构非常巧妙。它允许各组之间共享统计强度。当一家餐馆的某张桌子从全局菜单中选择一道菜时,它会使这道菜稍微更受欢迎,从而增加了其他餐馆的桌子也选择它的机会。这就是模型学习哪些主题在整个集合中是常见的,同时仍然允许每个文档在这些主题上有其自己独特分布的方式。
从一个简单的自我强化规则出发,我们构建了一个丰富的、层次化的结构,能够在复杂数据中发现多层共享模式。狄利克雷过程及其扩展不仅仅是算法;它们是一种关于不确定性和结构的思维方式,提供了一种语言来描述我们的信念,即世界是由数量丰富且可能未知的类别组成的,我们可以一次一个观测地去发现它们。
在理解了狄利克雷过程的原理之后,你可能会觉得它是一个相当抽象、奇特的数学工具。你是对的。但正是这种抽象性使其如此强大。这就像发现了杠杆原理;起初,它只是一根棍子和一个支点,但很快你就会意识到你可以用它来撬动世界。狄利克雷过程是一种统计杠杆。它使我们能够撬开复杂的系统,让它们揭示自身的内部结构,而无需我们事先猜测。
让我们用一个简单的类比来思考。想象你是宇宙厨房里的一位厨师,得到了一大堆来自一个新发现星球的、杂乱无章的奇异水果。你的任务是把它们分类。老式的方法是先决定碗的数量。“我要把它们分成五类,”你根据某种先入为主的观念宣布。但如果实际上有七种呢?或者二十种?或者如果你所谓的两种“类型”其实只是同一种水果的轻微变种呢?你把自己的偏见强加给了数据。
狄利克雷过程则是一位更聪明,也许也更“懒惰”的厨师的策略。这位厨师拿起第一个水果,放进一个碗里。对于第二个水果,他们看看第一个碗。“这个新水果和那个属于一类吗?”如果足够相似,就放进去。如果不是,厨师叹口气,拿来一个新碗。对于第三个水果,他们看看已经有水果的碗。一个碗里的水果越多,它对一个相似的新水果就越有“吸引力”——这是一种“富者愈富”的机制。但总有那么一个微小而恼人的可能性——一个由我们的朋友,集中度参数 控制的机会——这个水果是如此独特,以至于它需要一个属于自己的碗。
碗的最终数量不是预先决定的,而是被发现的。这种“加入现有组或开始一个新组”的简单迭代过程是狄利克雷过程实用性的核心,并已进入了各种各样令人惊叹的科学学科。
我们“宇宙厨师”分类策略最直接的应用就是聚类:在数据中寻找有意义群组的艺术。几乎每个领域的科学家都面临着这项任务。
想象一位计算生物学家,凝视着满是成千上万个基因数据的屏幕,每个基因的活性水平都随时间被测量。他们的梦想是找到“共同调控”的基因——即协同作用、同步开关以执行某种生物学功能的基因群。通过将每个基因的时间序列数据建模为高维空间中的一个点,狄利克雷过程混合模型可以用来问数据:“这里存在多少个功能组?”它将基因分到不同的簇中,而不需要生物学家预先指定簇的数量 ——这个数字他们不可能知道。同样的逻辑也适用于研究一种材料不同晶体结构(多晶型)能量学的材料科学家。狄利克雷过程混合模型可以筛选来自密度泛函理论(DFT)的含噪声计算结果,以发现具有相似性质的隐藏多晶型“家族”,从而揭示材料稳定性的潜在图景。
这个想法不仅限于自然科学。它已成为现代人工智能和自然语言处理的基石。想象你有一百万个句子的集合,并且你想发现其潜在的语义主题。你可以使用强大的语言模型将每个句子转换成一个数值向量——即“嵌入”。然后,就像处理基因一样,你可以将狄利克雷过程应用于这些向量。它会自动将关于“体育”、“金融”或“烹饪”的句子分组,而无需被告知这些主题是什么。模型发现了语言的潜在语义结构,其中集中度参数 充当一个旋钮,控制我们对文本主题丰富性的先验期望。
狄利克雷过程不仅仅是一个复杂的分类算法。当我们将它不仅用于聚类数据点,而且用于建模未知分布或函数时,其真正的威力才得以展现。
在医学和生物统计学中,一项至关重要的任务是生存分析:对患者在接受某种治疗后存活多长时间进行建模。一种常见的方法是加速失效时间(AFT)模型,它将患者的特征(如年龄或体重)与其生存时间联系起来。该模型包含一个“误差项”,这是一个捕获了已知特征无法解释的内在变异性的随机变量。这个误差的概率分布是什么?它是一个简单的钟形曲线吗?通常,现实情况更为复杂。我们可以不在误差分布上假设一个简单的形状,而是在其本身上放置一个狄利克雷过程先验。这使得模型能够直接从数据中学习一个灵活的、可能为多峰的形状,从而捕捉到像不同患者亚组对治疗反应不同这样的复杂现实。这是一种极其强大的技术,尤其是在处理这样一个实际问题时:对于许多患者,我们只知道他们的“失效时间”发生在某个区间内(区间删失)。
同样的原理也让我们能够探索进化的根本法则。“分子钟”理论假定基因突变随时间以相对恒定的速率累积。然而,这一点经常被违背;一些谱系比其他谱系进化得更快。我们可以通过为系统发育树的每个分支分配其自身的进化速率来对此进行建模。但是,存在多少个不同的速率,哪些分支共享一个速率?这是一个聚类问题,但作用于科学理论的参数之上。通过在所有分支速率的集合上放置一个狄利克雷过程先验,我们创建了一个“局部时钟”模型。狄利克雷过程自动将生命之树的分支划分为共享一个共同进化“速度极限”的组,让基因数据本身告诉我们,在广阔的进化历史长河中,时钟是如何以不同方式滴答作响的。
狄利克雷过程最美妙、最微妙的特性或许是其在不同组之间“借用统计强度”的能力。在处理稀疏或含噪声数据时,这一点尤其重要。
让我们回到一个更简单的统计问题。假设你正在根据商店所在的城市对销售额进行建模。你在纽约有50家店,在洛杉矶有48家,但在一个小镇,比如水箱温泉镇(Radiator Springs),只有一家店。一个标准的回归模型会基于那一个含噪声的数据点来估计“水箱温泉镇效应”,很可能会得出一个偏差大且不可靠的估计值。
狄利克雷过程提供了一个更优雅、更稳健的解决方案。通过在特定于城市效应的集合上放置一个狄利克雷过程先验,我们含蓄地表达了我们的信念,即水箱温泉镇的效应很可能与某些其他观测更充分的城市的效应相似。水箱温泉镇效应的后验估计值会从其基于单一观测的含噪声值,“收缩”到它最可能属于的那个更大簇的均值。这种自动的、数据驱动的信息“收缩”或“汇集”是一种统计上的谦逊;它防止我们过度解读稀疏数据,并且通常会带来更好的预测。
正是这个原理使得狄利克雷过程在现代基因组学中如此有价值。在单细胞生物学中,一个主要挑战是“脱落”(dropout),即由于测量噪声,一个基因在一个细胞中被检测到,但在另一个细胞中却没有。我们可以为每个基因建模一个脱落概率,但由于有成千上万个基因,许多基因的估计值将是不可靠的。通过在脱落概率上放置一个狄利克雷过程先验,我们允许具有相似技术行为的基因被聚类,从而汇集它们的信息以获得其真实脱落率的更稳定估计。
类似地,当从含噪声的测序读数中推断线粒体DNA单倍型的数量和频率时,许多读数可能是模糊的。狄利克雷过程混合模型将每个读数视为来自未知数量的单倍型簇之一。通过汇集来自许多含噪声读数的证据,即使单个读数不可靠,该模型也能自信地推断出不同单倍型的存在及其比例。
从细胞的内部运作,到语言的结构,生命的进化,以及新材料的特性,狄利克雷过程一再出现。它不仅仅是一个数学工具;它代表了建模哲学上的一种转变。它用一种灵活的、数据驱动的方法取代了预先指定模型复杂度的僵化要求,这种方法允许复杂性根据需要而显现。
它告诉我们,有时最明智的方法是承认我们所不知道的,并构建能够支持发现的模型。狄利克雷过程为实现这一目标提供了一种统一而优美的语言,揭示了现实中隐藏的簇群,这些簇群一旦被发现,就显得全然自然。它深刻地提醒我们,在科学这幅多样化的织锦上,对知识的探寻往往是对结构的探寻,而最强大的结构往往是我们发现的,而非发明的。