try ai
科普
编辑
分享
反馈
  • 提升决策树

提升决策树

SciencePedia玻尔百科
核心要点
  • 提升决策树通过依次添加简单的决策树来构建一个强大的模型,其中每棵新树都经过训练以纠正整个集成的错误。
  • “梯度提升”方法通过训练新树来预测所选损失函数的负梯度(伪残差),从而推广了这一过程,使其能够用于简单回归之外的各种任务。
  • 正则化技术,如收缩(学习率)、子采样和限制树深度,对于防止模型对训练数据过拟合以及确保其能很好地泛化到新数据至关重要。
  • BDT 可以通过单调约束融入先前的科学知识,其预测可以使用 SHAP 值等方法进行解释,从而将它们从“黑箱”转变为可解释的科学工具。

引言

面对复杂的数据分析,构建一个能够捕捉每一个细微差别的完美模型,往往是一项不可能完成的任务。这样的模型要么可能变得过于复杂而无法泛化,要么过于简单而完全偏离目标。一种替代性的、更强大的策略是采纳团队合作的概念:组建一个由简单、专注的模型构成的委员会,共同解决问题。这就是提升决策树(BDT)的基础思想,它是当今最有效和应用最广泛的机器学习方法之一。BDT 并非追求一蹴而就的天才之作,而是利用一个迭代过程,将“弱学习器”逐步组合,形成一个单一、稳健的“强学习器”。

本文旨在探索提升决策树的优雅框架,揭开其强大功能背后的原理。我们将首先深入探讨其核心的“原理与机制”,解释该算法如何利用基于梯度的优化从错误中学习,以及驯服其强大能力所需的一系列正则化技术。随后,在“应用与跨学科联系”部分,我们将遍览其在现实世界中的用例,看 BDT 如何不仅是预测工具,更是在高能物理到系统免疫学等领域中成为发现的仪器,使科学家能够编码物理定律、解释复杂结果,并推动知识的边界。

原理与机制

想象一下,你接手一个难题,比如在一片噪声的海洋中识别一个罕见的天文信号。你可以尝试构建一个单一、庞大、超复杂的模型来完成这项工作。但这极其困难。这个模型可能会变得过于复杂以至于无法泛化,或者过于僵化以至于完全错失信号。还有另一条路,一条更优雅、更强大的道路,根植于团队合作的思想。如果我们可以组建一个由许多头脑简单但专注的专家组成的委员会,而不是依赖一个天才呢?这就是​​提升决策树​​的核心。

团队的力量:从弱到强

提升方法的核心哲学是迭代改进。我们不试图一次性把所有事情都做对。我们从一个非常简单,甚至是幼稚的初步猜测开始。不出所料,这个初始模型会犯很多错误。但这些错误并非失败,而是机遇。它们精确地告诉我们模型的不足之处。

下一步是构建一个新的、简单的模型,其唯一目的就是纠正前一个模型的错误。然后我们将这个新专家的贡献加入到我们的整体模型中,使其变得更好一些。我们审视剩下的错误并重复这个过程,增加另一个专家,再一个,又一个。委员会的每个新成员都经过训练,专注于解决最困难的剩余问题。经过多次迭代,这个由“弱学习器”组成的集成(每个学习器本身都很简单)组合成一个单一、高度准确且稳健的“强学习器”。最终的预测是整个委员会的共识。

构建模块:朴素的决策树

那么,这些“简单的专家”是谁呢?在提升决策树(BDT)中,顾名思义,它们是​​决策树​​。决策树是整个机器学习中最直观的模型之一。它本质上是一个由简单的“如果-那么-否则”问题组成的流程图。

想象一个来自对撞机实验的粒子数据集。一棵决策树可能会问:“这个粒子的动量是否大于 10 GeV?”如果是,则向左走;如果否,则向右走。在下一个节点,它会问另一个简单的问题,也许是关于粒子的角度。这个过程持续进行,每个问题对应于在单个特征上的分裂。这被称为​​轴对齐分裂​​。从几何上看,每次分裂都是用一个平行于某个坐标轴的超平面来切割高维特征空间。经过一系列这样的问题后,我们最终会到达一个终端节点,称为​​叶节点​​。每个叶节点代表了特征空间中一个特定的矩形区域,该区域由通往它的一系列答案所定义。所有落入同一叶节点的数据点都被视为一个组,并获得相同的预测分数。一棵浅层的树——只有几个问题的树——本身就是一个“弱学习器”;它只能画出粗略的边界。但作为提升集成的一部分,它的弱点变成了它的力量。

秘密武器:从梯度引导的错误中学习

一棵新树究竟如何从集成的“错误中学习”?我们最初的直觉可能是计算每个数据点的简单误差,即​​残差​​(ri=true_valuei−predictionir_i = \text{true\_value}_i - \text{prediction}_iri​=true_valuei​−predictioni​),然后训练一棵新树来预测这些残差。这是一个很好的起点,如果我们的目标是最小化一个简单的平方误差损失函数,这正是所发生的情况。

但如果我们想使用一个更复杂的误差度量,一个不同的​​损失函数​​呢?例如,在分类任务中,我们经常使用​​对数损失​​,它更适合于预测概率。在这里,简单残差的概念就不太够用了。这就是​​梯度提升​​中“梯度”一词的由来。事实证明,我们每一步应该纠正的“错误”不是简单的残差,而是损失函数相对于模型当前预测的负梯度。这个梯度向量,通常被称为​​伪残差​​,指向函数空间中能够最陡峭地降低损失的方向。

这是一个深刻的见解。该算法实际上是在进行梯度下降,但不是在简单的参数空间中,而是在广阔的、高维的可能函数空间中。每一棵新树都是朝着最能减少我们整体误差的方向迈出的一小步。这也是为什么梯度提升决策树(GBDT)内部的回归树被构建为在这些伪残差上最小化平方误差(一个有时被称为“Friedman MSE”的标准),而不是在原始标签上使用像基尼指数那样的分类不纯度。树的任务不是从头开始重新分类数据,而是近似当前模型误差的梯度,这是一个根本上不同且更专注的目标。

更新的艺术:从梯度到叶节点权重

一旦一棵树被生长出来并且数据被划分到各个叶节点中,我们面临一个关键问题:每个叶节点应该输出什么预测值?树结构本身只是一套用于路由数据的规则;在叶节点上赋予的实际值才构成了模型的输出。

在梯度提升中,答案一如既往,是选择那个能够为该叶节点中的数据点最好地最小化损失函数的值。

  • 对于简单的平方误差损失情况,一个叶节点的最优值非常直观,就是落入该叶节点的所有训练样本的伪残差的平均值。
  • 当我们的数据样本具有不同权重时(这在物理学中很常见,其中一些事件在统计上比其他事件更重要),这就变成了一个伪残差的加权平均值。对于对数损失,最优值与加权类别比例的对数几率相关。

然而,现代 GBDT 采用了一种更强大的方法,其灵感来自于优化中的牛顿法。它们不仅使用梯度(损失的一阶导数,gig_igi​),还使用​​海森矩阵​​(二阶导数,hih_ihi​)。海森矩阵衡量了损失函数的曲率。直观地说,梯度告诉我们哪条路是“下坡”,而海森矩阵告诉我们山坡的陡峭程度。

这导出了一个非常优雅的叶节点最优权重 w∗w^*w∗ 公式:

w∗=−∑gi∑hi+λw^{\ast} = - \frac{\sum g_{i}}{\sum h_{i} + \lambda}w∗=−∑hi​+λ∑gi​​

在这里,∑gi\sum g_i∑gi​ 是叶节点中所有事件的梯度之和,∑hi\sum h_i∑hi​ 是海森矩阵值之和。λ\lambdaλ 项是一个我们稍后会讨论的正则化参数。这个公式是现代 GBDT 的引擎。它告诉模型应该迈出多大的一步。如果损失函数平坦(曲率低,∑hi\sum h_i∑hi​ 小),模型就可以迈出一大步。如果损失函数急剧弯曲(∑hi\sum h_i∑hi​ 大),模型就必须采取一个更谨慎、更小的步子,以避免越过最小值。

驯服野兽:正则化的多种面貌

一个无约束的 BDT 是一个极其强大的学习器。事实上,它如此强大,以至于很容易“过拟合”——它可以记住训练数据,包括所有的噪声,从而失去了对新的、未见过的数据的泛化能力。我们可以在验证曲线上看到这一点,其中训练损失持续骤降,而对未见数据的验证损失开始上升。驯服这只野兽需要一套正则化技术。

  • ​​收缩(学习率 ν\nuν):​​ 我们不是加上每棵新树的完整预测,而是只加上它的一小部分,由一个学习率 ν≪1\nu \ll 1ν≪1 控制。这就像一位画家用许多细小、谨慎的笔触来叠加颜色,而不是一笔巨大、笨拙的涂抹。它迫使模型学习得更慢,并找到一个更稳健的解决方案。较低的学习率通常需要更多的树来达到最优模型,但往往会带来更好的最终性能。

  • ​​子采样(fff):​​ 这种技术引入了随机性。对于我们构建的每棵树,我们只使用训练数据的一个随机部分 f≤1f \le 1f≤1。这可以防止任何单棵树被少数特定的数据点过度影响。它还有一个奇妙的效果,即降低集成中树之间的相关性。正如一个委员会如果其成员有不同视角会更强大一样,一个由相关性较低的树组成的集成具有较低的方差,并且不太可能过拟合。

  • ​​树深度(ddd):​​ 我们可以通过限制其最大深度来直接限制每个独立学习器的复杂性。浅层树(小 ddd)是非常弱的学习器,只能模拟简单的交互作用。深层树更强大,可以模拟复杂的高阶交互作用,但它们也有更高的方差,更容易过拟合。在偏差-方差权衡中找到正确的平衡是关键。

  • ​​L2 正则化(λ\lambdaλ):​​ 这让我们回到了叶节点权重公式中的 λ\lambdaλ。这个项惩罚大的叶节点权重,有效地将它们“收缩”到零。它防止任何单棵树对最终预测产生过大的影响。此外,它还提供了一个关键的数学好处:它确保分母 (∑hi+λ)(\sum h_i + \lambda)(∑hi​+λ) 永远不为零,从而防止了除零错误,并使算法在数值上保持稳定,尤其是在数据稀少或损失曲率低的区域。

  • ​​早停:​​ 随着我们添加更多的树,模型变得越来越复杂。我们可以认为模型的复杂度与集成中叶节点的总数有关,这个数量随着我们添加更多的树而增加。早停是一种简单但强大的做法,即在一个单独的验证数据集上监控模型的性能,并在性能开始下降时立即停止训练过程。这是一种务实的说法:“当增加复杂性不再有帮助时,就停止。”

为现实而设计:损失函数与缺失数据

梯度提升框架的美妙之处在于其通用性。我们可以根据我们的目标插入不同的损失函数。

  • ​​指数损失与对数损失:​​ 最初的 AdaBoost 算法可以被看作是使用​​指数损失​​。这种损失函数在惩罚被错误分类的点时非常激进,给它们施加了巨大的权重。而​​对数损失​​则更为宽容。它的曲率是有界的,这意味着它对异常值的惩罚不会指数级增长。这使得使用对数损失训练的模型对噪声和错误标记的数据更具鲁棒性,这是在现实世界应用中的常见选择。

  • ​​缺失值:​​ 当我们的数据不完整时会发生什么?一种天真的方法可能是丢弃有缺失数据的事件,或者用简单的均值或中位数进行插补。高性能的 BDT 做法要聪明得多。在训练期间,当评估一个特征上的分裂时,算法会为该特征缺失的任何事件学习一个最优的​​默认方向​​。它通过临时将所有缺失值事件发送到左侧并计算潜在增益,然后将它们全部发送到右侧并计算增益,并选择那个能最大化改善模型损失函数的方向。此外,它还可以学习​​代理分裂​​——使用其他特征来最好地模仿主分裂的备用问题。在预测时,如果一个特征缺失,模型有一个预先学习好的、确定性的、最优的计划来路由该事件。这将一个实际的麻烦变成了一个数据中可学习的方面,展示了使这些模型在实践中如此有效的深思熟虑的工程设计。

从一个简单的团队合作理念出发,我们经历了一段旅程,穿越了函数空间中的梯度下降、二阶优化以及一套复杂的正则化技术。其结果就是提升决策树:它不是一个黑箱,而是一个结构精美、有原则且高效的工具,用于解开数据的复杂性。

应用与跨学科联系

在理解了驱动提升决策树的原理和机制之后,我们可能会倾向于仅仅将它们视为强大的预测引擎。但这就像是只欣赏望远镜镜片的质量,却从未将它对准天空。一个伟大科学工具的真正奇迹不仅在于其构造本身,还在于它所揭示的新世界和它所带来的新思维方式。事实证明,提升树不仅仅是一种预测工具;它们是一种用于阐明复杂假设的通用语言,一种用于窥探高维数据错综复杂机制的显微镜,以及一个在众多科学领域中进行发现的强大引擎。

现在,让我们踏上探索其中一些应用的旅程。我们将看到一个单一的算法思想如何能够在看似不相关的领域之间架起桥梁,从在宇宙中寻找新粒子到在我们自己体内与疾病作斗争。

融入已知科学的结构

现代提升树框架最优雅的特性之一是它们不仅能取代,而且能融合现有的科学知识。在许多领域,我们可能不知道一个关系精确的数学形式,但我们对其方向有强烈的、基于物理的直觉。

考虑设计新材料的挑战。一位材料化学家可能正在探索多孔陶瓷复合材料,旨在创造一种具有高弹性模量——一种硬度度量——的材料。他们从力学的基本原理中知道,在其他条件相同的情况下,使材料更多孔应该会使其刚度降低。这种关系是单调的:弹性模量应该是孔隙率分数的一个非增函数。或者,在临床环境中,一个研究新药副作用的安全团队知道,不良事件的风险不应随着日剂量的增加而降低。

一个无约束的、高度灵活的模型,在其急于拟合有限数据集的噪声和怪癖时,可能会学到一个虚假的关系——一个“最佳点”,在这个点上,略高的孔隙率或剂量似乎反而改善了结果。这不仅在物理上是荒谬的,而且是危险的。在这里,提升树提供了一个漂亮的解决方案:​​单调约束​​。我们可以指示算法,它学习的函数必须相对于某些特征是单调非递减(或非递增)的。这是一种强大的正则化形式,我们不仅将模型向零收缩,而且将其收缩到遵守已知物理定律的函数空间中。这种数据驱动的灵活性与基于原则的约束的结合,通常会产生不仅更准确,而且更值得信赖的模型。

然而,这个强大的特性带有一个微妙的陷阱,揭示了关于树如何工作的更深层次的真相。想象一下,我们正在建模一个我们知道随 x1x_1x1​ 和 x2x_2x2​ 都会增加的响应。我们可能会想,“啊,它们的交互作用 z=x1x2z = x_1 x_2z=x1​x2​ 可能也很重要!”并将其作为一个新特征添加进去。如果 x1,x2≥0x_1, x_2 \ge 0x1​,x2​≥0,那么 zzz 也应该有积极的影响。所以,我们对所有三个特征施加了单调递增的约束:x1x_1x1​、x2x_2x2​ 和 zzz。我们帮助了模型吗?不,我们可能破坏了它!单调性的保证适用于每个特征在其他条件不变的情况下(ceteris paribus)。但是我们在改变 x1x_1x1​ 的同时无法保持 zzz 不变。模型输出相对于 x1x_1x1​ 的总变化是其对 x1x_1x1​ 的直接依赖和通过 zzz 的间接依赖之和。来自 zzz 项的负权重贡献(即使模型被约束为在 zzz 上是单调的)可能会压倒来自 x1x_1x1​ 的正贡献,从而违反了我们试图强制执行的定律。这个教训是深刻的:提升树已经通过其分支结构隐式地捕捉了交互作用。一个在 x1x_1x1​ 上的分裂后跟着一个在 x2x_2x2​ 上的分裂,自然地模拟了它们的联合效应。这是在单调性下处理交互作用的更安全、更自然的方式,是对算法内在设计的无声证明。

物理原理与模型构建之间的这种对话,在高能物理学中表现得最为明显。在大型强子对撞机的质子-质子碰撞火球中,物理学家寻找新粒子。为此,他们必须教会机器区分潜在信号的微弱低语和背景过程的震耳欲聋的轰鸣。人们不会简单地将原始粒子轨迹输入模型。相反,物理学家进行了一项优美的特征工程活动,构建了尊重爱因斯坦狭义相对论所描述的宇宙基本对称性的变量。他们构建了洛伦兹不变量,如双喷注不变质量 mjjm_{jj}mjj​,其值对所有观察者都是相同的。他们使用像快度差 Δy\Delta yΔy 这样的变量,它在沿束流方向的增强下是不变的。这确保了分类器是根据事件的内在属性来判断它们,而不是根据它们相对于探测器的偶然运动。然后,提升树接收这些具有物理意义的输入,并学习它们之间复杂的、非线性的关系,从而最好地区分信号和背景。

窥探黑箱内部

一个能做出正确预测的模型是有用的。一个能解释其为何做出该预测的模型是革命性的。在医学、材料科学等高风险领域,“为什么”往往比“是什么”更重要。

想象一个系统免疫学团队试图预测败血症(一种危及生命的疾病)的死亡率。他们的模型是一个 GBDT,分析了数百个特征——细胞因子水平、免疫细胞计数、通路得分——并将一名患者标记为高风险。如果这个预测无法被解释,它就是无用的,甚至是危险的。医生需要知道是哪些生物指标在驱动风险评估,才能考虑采取行动方案。

这就是可解释性的挑战。很长一段时间里,像 BDT 这样的模型的强大能力似乎是以成为“黑箱”为代价的。但近年来,来自合作博弈论的一个优美思想——沙普利值——提供了一把钥匙。其核心思想是将特征视为游戏中的玩家,合作产生模型的预测。沙普利值提供了一种有原则的方法来公平地在特征之间分配“回报”(即预测)。像 TreeSHAP 这样的算法使得为基于树的模型精确高效地计算这些值成为可能,利用它们的结构来避免指数级复杂的计算。输出是一组 SHAP 值 ϕj\phi_jϕj​,每个特征一个,告诉我们该特征的值在多大程度上将预测从基线向上或向下推动。

这种将预测归因于其组成部分的能力,开启了一种新的科学探究模式:模型验证。我们不仅可以检查预测准确性,还可以检查物理一致性。在我们的粒子物理学例子中,我们可能期望具有更高双喷注质量 mjjm_{jj}mjj​ 的事件更像信号,因此模型的分数应该增加。我们可以通过查看 SHAP 值来直接验证这一点:mjjm_{jj}mjj​ 的 SHAP 值 ϕmjj\phi_{m_{jj}}ϕmjj​​ 是否通常为正,并且它是否随着 mjjm_{jj}mjj​ 的值而增加?如果不是,这表明我们的模型中存在潜在问题或对物理的误解,从而将可解释性变成了一个强大的调试工具。

当然,现实世界是复杂的。在生物学中,特征之间通常高度相关。参与同一信号通路的细胞因子会一同升高和降低。天真地将功劳归于其中之一可能会产生误导。是高 IL-6 预测死亡率,还是它只是真正因果因子 TNF-α\text{TNF-}\alphaTNF-α 的一个伴随者?复杂的 SHAP 应用认识到这一点,不再询问单个特征,而是询问逻辑上的特征组。或者它们采用更复杂的概率模型来解开这些相关性,尊重底层的生物学现实。解释,就像科学本身一样,是一个不断完善我们的问题以更接近真相的过程。

发现的架构

除了塑造和解释单个预测之外,提升树是现代大规模科学发现更广泛架构中的核心组成部分。这涉及到应对统计学、工程学乃至哲学的挑战。

许多科学发现,如希格斯玻色子,都是“大海捞针”的问题。信号事件极其稀有,可能万亿中才有一个。在如此极端不平衡的数据集上训练分类器是困难的。一个常见的策略是在人工平衡的样本上进行训练。但这样一来,分类器就被“校准”到一个不存在的世界。我们如何将其应用于现实世界?答案在于贝叶斯决策理论的一个优美应用。一个校准良好的 BDT 的输出可以转化为对数似然比。基本的概率论精确地告诉我们如何调整这个分数上的决策阈值,以考虑真实的运行类别概率,甚至是非对称成本(例如,错过一个信号的成本远大于一次误报的成本)。这使我们能够为了方便而在一个人造世界中训练,并在真实世界中进行最优部署,所有这些都无需重新训练模型[@problem-id:3506523]。

当用于分类的特征之一恰好也是我们希望看到信号的那个特征时,一个更深刻的挑战就出现了。在共振峰寻找中,我们寻找不变质量谱中的一个“凸起”。如果我们强大的 BDT 分类器使用与质量相关的信息来区分信号和背景,它可能会无意中“雕刻”背景质量分布,从而在一个本不存在的地方制造出一个凸起!这是科学家的噩梦,一种自找的“旁视效应”。在这里,一个惊人优雅的类比来自算法公平性的世界。就像我们可能要求一个信用评分模型对种族等敏感属性保持“公平”一样,我们可以要求我们的物理分类器对质量保持“公平”。我们可以强制分类器的输出分数对于背景事件在统计上与质量无关。这是通过在 BDT 的目标函数中添加一个惩罚项来实现的,该惩罚项通常基于互信息,惩罚分数与质量之间的任何相关性。这就产生了一个权衡:我们牺牲了一些原始的判别能力,但我们获得了对系统误差的巨大鲁棒性,确保我们所发现的是自然的特征,而不是我们工具的产物。

最后,如果 BDT 不能在现代科学的规模上运行,这一切都不可能实现。LHC 的实验产生 PB 级别的数据。在这样的数据集上训练模型需要从算法学到工程学的飞跃。扩展 BDT 的主要策略涉及数据并行和直方图化的巧妙结合。海量数据集被分片到数千个计算机核心上。每个核心计算其本地数据的压缩摘要——一组特征值的直方图。然后,这些小的、固定大小的直方图通过一种称为 All-Reduce 的高效集体通信步骤在整个集群中聚合。通信成本变得与数据点数量无关,仅取决于特征和分箱的数量。这种将数据密集型问题转化为通信密集型问题的转变,是高性能计算的一大胜利,使得提升树能够与我们不断增长的探测宇宙的能力保持同步。

从编码物理定律、实现可解释性,到驾驭发现过程中的统计暗礁、扩展至海量数据集,提升决策树已经证明自己远不止是一个分类器。它们是一种通用的思维工具,一种连接物理学家、生物学家、化学家和统计学家,共同追求知识的共享语言。