尽管装袋法(Bagging)通过平均独立模型来构建集成,但提升法(Boosting)采用的是更具协作性、更讲究顺序的方法。它不是让能力相当的模型进行一轮投票,而是构建一个专家团队,其中每个新成员都经过训练,以修正团队迄今为止所犯的错误。这个迭代过程是提升法能够生成高准确度模型的根本。设想一群学生正在学习一门有难度的主题。第一个学生学习材料并进行一次练习测试,他们答对了一些问题,也答错了一些。老师随后给第二个学生相同的材料,但会着重指出第一个学生答错的问题。第二个学生会将精力集中在这些有难度的问题上。这个过程会持续下去,每个后续的学生都专注于剩余的薄弱环节。最终的“模型”是所有学生知识的结合,对于那些掌握了更难知识点的学生,会给予更多肯定。这正是提升法背后的原理。该算法构建了一系列模型,通常是称为弱学习器的简单模型,链中的每个模型都经过训练,以修正其前一个模型的错误。顺序学习过程弱学习器是一种表现仅略好于随机猜测的模型。在提升法中,最常见的弱学习器是决策树桩,它是一种只有单次分裂的决策树。单独来看,决策树桩并不是非常强大。然而,通过以结构化、顺序化的方式结合数百或数千个决策树桩,提升法算法可以构建出高准确度且强大的最终模型。该过程通常遵循以下步骤:初始化:从一个初始模型开始,它可能简单到仅预测所有数据点的平均值。迭代:对于指定次数的迭代: a. 训练弱学习器:将一个新的弱学习器拟合到数据上,侧重于当前集成表现不佳的实例。 b. 更新集成:将新的弱学习器添加到集成中,根据其表现为其分配一个权重。它帮助正确分类的实例在下一次迭代中会得到较少关注。组合:最终预测是所有弱学习器预测的加权和。下图说明了这个迭代流程。digraph G { rankdir=TB; splines=ortho; node [shape=box, style="rounded,filled", fontname="sans-serif", fillcolor="#e9ecef", color="#868e96"]; edge [fontname="sans-serif", color="#495057"]; subgraph cluster_0 { label = "第1次迭代"; style=invis; d1 [label="原始数据集"]; m1 [label="训练弱学习器1", fillcolor="#a5d8ff"]; d1 -> m1 [label=" 等权重"]; e1 [label="识别错误\n(分类错误的点)", shape=ellipse, fillcolor="#ffc9c9"]; m1 -> e1; } subgraph cluster_1 { label = "第2次迭代"; style=invis; d2 [label="重新加权数据集"]; m2 [label="训练弱学习器2", fillcolor="#a5d8ff"]; d2 -> m2 [label=" 对错误\n给予更高权重"]; e2 [label="识别新错误", shape=ellipse, fillcolor="#ffc9c9"]; m2 -> e2; } subgraph cluster_2 { label = "第T次迭代"; style=invis; dt [label="重新加权数据集"]; mt [label="训练弱学习器T", fillcolor="#a5d8ff"]; dt -> mt [label=" 对剩余错误\n给予更高权重"]; } e1 -> d2 [style=dashed]; e2 -> dt [style=dashed]; Final [label="最终强模型\n(加权组合)", shape=cds, fillcolor="#b2f2bb"]; m1 -> Final [label="α₁"]; m2 -> Final [label="α₂"]; mt -> Final [label="α_T"]; }每个弱学习器都在一个数据集版本上进行训练,其中被先前学习器错误分类的点被赋予更高的关注。最终模型是所有学习器预测的加权和。模型如何“侧重”于错误“侧重于错误”的方法是区分不同提升算法之处。从宏观层面来看,主要有两种方法:通过重新加权实例: 这种方法(由AdaBoost等算法使用)增加了错误分类数据点的权重。在下一次迭代中,弱学习器的训练目标会进行调整,使其更关注正确分类这些高权重点的任务。通过拟合残差: 这是梯度提升(Gradient Boosting)使用的方法。新的弱学习器不是重新加权原始数据,而是被训练来预测当前集成的错误,或者说残差。对于一个给定的数据点,如果模型预测为8,而真实值为10,则残差为2。下一个弱学习器将尝试预测这个2的值,从而直接修正错误。形成最终预测无论具体技术如何,最终预测并非仅由最后一个模型做出。相反,它是训练过程中所有弱学习器的加权组合。一个强学习器 $H(x)$,通过对所有弱学习器 $h_t(x)$ 的输出求和形成,每个输出都由一个权重 $\alpha_t$ 进行缩放。$$ H(x) = \sum_{t=1}^{T} \alpha_t h_t(x) $$权重 $\alpha_t$ 通常反映了弱学习器 $h_t(x)$ 的表现;表现更好的学习器在最终结果中拥有更大的发言权。这种加权聚合将一系列简单、弱的模型转化为一个单一、强大的预测器。这种顺序的、修正错误的过程是提升法的决定性特点。在下一节中,我们将研究AdaBoost,它是第一个实用且非常成功的提升算法,以此来了解这些思想的具体实现。