更新于 2026年8月10日

集成学习#


术语解释#

集成学习(Ensemble Learning) 是一种通过结合多个基模型来提高整体泛化能力的机器学习方法。其核心思想类似于俗语“三个臭皮匠,赛过诸葛亮”,即通过多个模型的组合来弥补单个模型在特定样本上的错误。

集成学习通过构建并结合多个同类或不同类的学习器(基模型)来完成预测任务,主要类型有:

  • Bagging:并行训练多个独立的模型(如随机森林),通过投票或平均策略组合结果,主要用于降低高方差(过拟合)。

  • Boosting:串行训练具有依赖关系的模型(如 AdaBoost、梯度提升),每个模型修正前一个模型的错误,主要用于改善高偏差(欠拟合)。

  • Stacking:并行训练不同类型的模型,并将其输出作为输入训练一个新的“元模型”来得出最终预测。

更多相关内容可参见「9.2 随机森林原理:集成学习中的树模型方法」「9.4 AdaBoost原理与实现:提升算法训练流程解析」等内容。


出现动机#

  • 提高模型精度:当单个模型在处理复杂任务时效果有限时,通过集成多个表现稍弱但各具特色的模型,可以获得比任何单一模型都更好的预测结果。

  • 平衡偏差与方差:针对模型容易出现的过拟合(高方差)或欠拟合(高偏差)状态,采用不同的集成策略(Bagging 或 Boosting)进行针对性优化。

  • 克服单模型局限性:某些模型在特定数据区域可能表现不佳,集成学习可以利用其他模型在这些区域的优势来纠正偏差。


直观示例#

假如现在选择A、B、C这3个模型进行建模,最后得到结果是: A的分类准确率为0.93,B的分类准确率为0.95,C的分类准确率为0.88。那最终应该选择哪一个模型呢?是模型B吗?

假设现在一共有100个样本,其标签为二分类(正、负两类),3个模型的部分分类结果如下表所示。

不同模型分类结果对比表
不同模型分类结果对比表

在上面结果中的5个样本,模型A和模型C均能分类正确,而模型B不能分类正确,但如果此时将这3个模型一起用于分类任务的预测,并且对于每个样本的最终输出结果采用基于投票的规则在3个模型的输出结果中进行选择。例如表中的第1个样本,模型A和模型C均判定为“负类”只有模型B判定为“正类”,则最后的输出便为“负类”。那么此时,我们就可以得到一个分类准确率为1的“混合”模型。

注意: 在其余的95个样本中,假设根据投票规则均能分类正确。


优点缺点#

  • 优点:

    • 泛化能力强:这是集成学习最显著的优势,它能有效提高模型在未知数据上的预测稳定性。

    • 容错性高:由于最终决策基于多个模型,个别基模型的误判不容易直接导致最终结果错误。

    • 灵活性:可以根据任务需求选择并行(Bagging)以提高稳定,或选择串行(Boosting)以提升精度。

  • 缺点:

    • 训练成本高:需要对同一份数据训练许多不同的模型,大幅增加了训练阶段的时间和算力投入。

    • 可解释性降低:相比于单一的线性回归或决策树,集成模型内部的决策逻辑更加复杂,难以直观解释模型做出某种预测的具体原因。

阅读 --

9.1 集成学习算法

在本节中,我们首先介绍了机器学习中集成学习的基本思想,接着介绍了3种常见集成学习方法Bagging、Boosting和Stacking的基本思想,最后分别就这3种集成学习方法各自在sklearn中的示例用法进行了详细介绍。

9.2 随机森林

在本节中,我们首先介绍了随机森林的基本原理,然后介绍了sklearn中随机森林模块RandomForestClassifier的基本用法及其中常见参数的作用,最后详细介绍了如何通过随机森林来对特征进行重要性评估,包括具体的计算及示例代码等。

9.4 AdaBoost原理与实现

通过9.1.4节内容的介绍,我们对于Boosting集成学习的基本思想已经有了一定的了解。在本节内容中,将会介绍Boosing算法中第1种常见的提升学习算法——AdaBoost (Adaptive Boosting) 。