自适应提升#
术语解释#
AdaBoost(Adaptive Boosting,自适应提升算法) 是一种极为经典的提升(Boosting)集成学习方法,它通过串行训练一系列基模型,并根据前一个模型的表现来调整样本权重,最终将这些模型组合起来以提高整体的泛化能力。
AdaBoost 的核心在于为每个训练样本赋予一个权重值。在迭代过程中,被上一个基模型分错的样本会在下一个模型训练时获得更高的权重,从而迫使新模型更加关注这些“难题”。
训练流程:
-
初始化所有样本权重相等。
-
串行训练 $M$ 个基模型(通常是决策树)。
-
每次训练后计算模型误差,并据此计算该模型的权重(置信度)以及更新样本权重。
-
最终的预测结果是所有基模型输出的加权线性组合,准确率越高的模型在最终决策中占比越大。
出现动机#
-
提高模型精度:当单个弱学习器(如深度较浅的决策树)效果有限时,通过集成多个各具侧重点的模型,可以获得远超单一模型的预测效果。
-
改善高偏差(欠拟合):提升算法的主要动机是解决模型容易出现欠拟合的问题。它通过分步修正误差,使模型能够逐渐拟合复杂的真实规律。
-
构建通用的训练框架:AdaBoost 本质上是一套模型训练策略,理论上可以应用于任何已有的机器学习模型(如逻辑回归、KNN 等),不仅局限于某种特定算法。
直观示例#
下面通过一个实际的示例来介绍AdaBoost算法的思想。

如图9-5所示,图中一共有10个样本点,包含方块和圆形两个类别。假定现在通过某种算法构建了模型1(每个样本点具有相等的权重值)并对图9-5中的样本进行分类,得到的分类结果如图9-6所示。

从图9-6的分类结果可知,样本③和④被划分到了错误的类别中,因此可以再次构建模型2并同时赋予样本③和④更高的权重,并对所有样本点进行分类,最终可以得到图9-7中的分类结果。

从图9-7的分类结果可知,此时样本③和④已经被正确划分了,但是样本⑦和样本⑨却又出现了错误,于是可以再次构建模型3并同时赋予样本⑦和⑨更高的权重,并对所有样本点进行分类,最终可以得到图9-8中的分类结果。

从图9-8的分类结果可知,此时模型3并没有同时将样本⑦和样本⑨都分类正确,并且样本②和④也被误分了。此时,可以再次构建模型4并同时赋予样本②④⑦更高的权重,并对所有样本点进行分类,最终可以得到图9-9中的分类结果。

从图9-9所示的结果可以看出,模型4为了同时将所有方形和样本④分类正确,导致样本①②⑥⑦均分类错误。此时可以发现,虽然上述4个模型均没有将所有样本都正确的分类,但是最后可以将4个模型的结果集成起来看做一个模型的输出结果,如图9-10所示。

根据图9-10可知,以先前的4个模型为基础,然后以某种策略将各个模型的输出结果集成起来作为最终的预测输出,这样便可以得到一个相较于单个模型更好的预测结果(模型1到模型4的分类准确率分别为0.8、0.8、0.7和0.6,而最终集成模型的准确率为0.9)。当然,事实上如果再构建一个模型5便可以实现百分之百的准确率。
以上就是AdaBoost算法的核心思想,从这里也可以看出AdaBoost算法本质上也可以看做是一种模型的训练策略(这也类似于在「第13.1节 Self-Training原理:半监督学习中的自训练算法」中将要介绍的Self-Training算法),因此不管是任何模型都可以采用AdaBoost策略来进行建模,只是对于不同的算法在如何融入样本权重来进行建模有不同的做法。
更多相关原理内容,可参见「9.4 AdaBoost原理与实现:提升算法训练流程解析」。
优点缺点#
-
优点:
-
泛化能力强:AdaBoost 能显著提高弱学习器的性能,在许多分类任务中表现优异。
-
不易过拟合(在特定条件下):由于它是一种分步累加的过程,且可以通过调整学习率等超参数来平滑模型更新,因此具有一定的鲁棒性。
-
数学理论坚实:其算法逻辑可以从“前向分步加法模型”和“指数损失函数”的角度得到完美的数学解释。
-
-
缺点:
-
对噪声和异常值异常敏感:这是 AdaBoost 最显著的弊端。由于它会极力试图分对每一个样本,如果数据中存在离群点或错误标注的噪声,模型会赋予其极高的权重,从而导致过拟合噪声。
-
训练成本高:由于基模型必须串行训练(后一个模型依赖前一个模型的结果),它无法像随机森林(Bagging)那样进行大规模并行计算,训练时间较长。
-
二分类局限(针对原始算法):原始 AdaBoost 主要针对二分类任务设计。在多分类场景下,若基模型误差大于 0.5,会导致权重计算出现负值,使得算法失效(这一问题后续通过 SAMME 算法 得到修正)。
-
相关术语#
-
AdaBoost
-
GBDT