本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术!
Bagging 介绍
1. 定义与全称:
- Bagging 是 Bootstrap Aggregating 的缩写,中文常译为 装袋法。
- 它是一种并行式的集成学习方法。
- 核心目标是通过构建多个基学习器的预测结果进行组合(通常是投票或平均),来获得比单一基学习器更稳定、更准确、泛化能力更强的模型。
- 其名字直接反映了它的两个关键步骤:Bootstrap(自助采样) 和 Aggregating(聚合)。
往期文章推荐:
- 20.CART算法全解析:分类回归双修的决策树之王
- 19.C4.5算法深度解析:决策树进化的里程碑
- 18.决策树:化繁为简的智能决策利器
- 17.深入解析ID3算法:信息熵驱动的决策树构建基石
- 16.类图:软件世界的“建筑蓝图”
- 15.饼图:数据可视化的“切蛋糕”艺术
- 14.用Mermaid代码画ER图:AI时代的数据建模利器
- 13.ER图:数据库设计的可视化语言 - 搞懂数据关系的基石
- 12.决策树:被低估的规则引擎,80%可解释性需求的首选方案
- 11.实战指南:用DataHub管理Hive元数据
- 10.一键规范代码:pre-commit自动化检查工具实战指南
- 9.如何数据的永久保存?将信息以加密电磁波形式发射至太空实现永久保存的可行性说明
- 8.NLP已死?大模型时代谁在悄悄重建「语言巴别塔」
- 7.撕掉时序图复杂度:Mermaid可视化极简实战指南
- 6.动手实践:LangChain流图可视化全解析
- 5.LangChain LCEL:三行代码构建AI工作流的秘密
- 4.LangChain执行引擎揭秘:RunnableConfig配置全解析
- 3.避坑指南:Windows下pygraphviz安装全攻略
- 2.Python3安装MySQL-python踩坑实录:从报错到完美解决的实战指南
- 1.Git可视化革命:3分钟学会用Mermaid+AI画专业分支图
2. 核心思想:
Bagging 的基本思想非常简单而强大:
- 引入随机性: 通过对原始训练数据集进行 有放回的随机抽样(Bootstrap Sampling),创建出多个不同的、略有重叠的子训练集。
- 并行训练: 使用这些不同的子训练集,独立地训练出多个 同质的 基学习器。这些学习器通常是同一种算法(例如都是决策树)。
- 聚合结果: 对于一个新的预测样本,让所有训练好的基学习器进行预测,然后将它们的预测结果进行聚合:
- 分类任务: 采用 多数投票法(Majority Voting),即选择得票最多的类别作为最终预测结果。
- 回归任务: 采用 简单平均法(Averaging),即计算所有基学习器预测值的平均值作为最终预测结果。
3. 关键步骤详解:
Bootstrap Sampling (自助采样):
- 假设原始训练集
D
包含N
个样本。 - 要训练
T
个基学习器,就需要创建T
个 bootstrap 样本集D_1, D_2, ..., D_T
。 - 生成每个
D_t
的过程:- 从原始训练集
D
中有放回地随机抽取一个样本。 - 将该样本放入
D_t
中。 - 重复步骤 1 和 2
N
次。这样D_t
就包含了N
个样本(注意:因为有放回,某些样本会被多次抽中,而另一些样本可能一次都没被抽中)。
- 从原始训练集
- 重要特性:
- 每个 bootstrap 样本集
D_t
的大小与原始训练集D
相同(N
个样本)。 - 由于有放回抽样,原始训练集
D
中大约有 63.2% 的样本会出现在任意一个给定的D_t
中。剩下的约 36.8% 的样本被称为该基学习器的 袋外样本。 - 不同的 bootstrap 样本集之间会有一定的重叠,但也存在差异。
- 每个 bootstrap 样本集
- 假设原始训练集
Base Learner Training (基学习器训练):
- 使用第
t
个 bootstrap 样本集D_t
独立地训练第t
个基学习器M_t
。 - 基学习器可以是任何学习算法(决策树、神经网络、线性回归等),但决策树因其高方差(不稳定)特性,常作为 Bagging 的首选基学习器(这就是随机森林的基础)。
- 训练过程是并行的,各个基学习器之间互不干扰。
- 使用第
Aggregating (聚合):
- 分类 (Classification):
- 对于一个新的输入样本
x
,每个基学习器M_t
预测一个类别标签y_t
。 - 最终的预测结果
y_final
是所有T
个预测标签{y_1, y_2, ..., y_T}
中出现次数最多的那个类别(即多数投票)。
- 对于一个新的输入样本
- 回归 (Regression):
- 对于一个新的输入样本
x
,每个基学习器M_t
预测一个数值r_t
。 - 最终的预测结果
r_final
是所有T
个预测值{r_1, r_2, ..., r_T}
的算术平均值。
- 对于一个新的输入样本
- 分类 (Classification):
4. 为什么 Bagging 有效?
Bagging 的核心价值在于它能够显著降低模型的方差(Variance),从而提高模型的稳定性和泛化能力,尤其对于高方差、低偏差的基学习器(如深度未剪枝的决策树)效果非常显著。
- 降低方差: 通过在不同的数据子集上训练多个模型,Bagging 减少了模型对训练数据中特定噪声或波动的敏感性。单个模型可能因为训练数据的微小变化而产生很大差异(高方差),但多个模型预测的平均或投票可以抵消这种波动,使得整体预测更加稳定和鲁棒。
- 轻微增加偏差: 由于每个基学习器只看到原始数据的部分样本(约63.2%),并且可能没有看到一些重要样本(袋外样本),单个基学习器的性能可能略低于在整个数据集上训练的模型(轻微增加偏差)。但是,通过聚合多个模型,这种轻微的偏差增加通常被方差的显著降低所补偿,最终整体模型效果更好。
- 降低过拟合风险: 通过降低方差,Bagging 有效地减少了模型过拟合训练数据的风险,提高了在未见数据上的泛化能力。
5. 优势:
- 有效降低方差: 对高方差的基学习器(如决策树)效果尤其显著。
- 提升模型稳定性与鲁棒性: 对训练数据的小变动不敏感,对噪声和异常值更具抵抗力。
- 减少过拟合: 提高泛化性能。
- 并行化: 基学习器的训练相互独立,天然适合并行计算,加速训练。
- 简单易用: 概念清晰,实现相对直接。
- 内置验证(利用袋外样本): 袋外样本可以用来评估单个基学习器的性能,它们的预测误差的平均值(袋外误差)可以作为Bagging集成模型泛化误差的一个近似无偏估计,无需额外划分验证集。
6. 局限性:
- 对高偏差模型提升有限: 如果基学习器本身偏差很高(欠拟合),Bagging 主要降低方差,对整体性能提升不大(偏差问题依然存在)。它不能有效降低偏差。
- 模型解释性降低: 集成的模型比单个基学习器更难解释。
- 计算成本: 需要训练多个模型,计算和存储开销大于单个模型。
- 可能损失部分信息: 每个基学习器只看到部分数据(约63.2%)。
7. 与 Boosting 的区别:
- 并行 vs 串行: Bagging 是并行训练基学习器;Boosting(如 AdaBoost, GBDT, XGBoost)是串行训练,后续模型重点关注之前模型预测错误的样本。
- 样本权重: Bagging 中所有样本在抽样时默认权重相同;Boosting 会根据之前模型的预测表现动态调整样本权重,错误样本权重增大。
- 目标: Bagging 主要降低方差;Boosting 主要降低偏差(并能一定程度降低方差)。
- 基学习器要求: Bagging 对基学习器要求不高,甚至可以是弱学习器(但效果会打折扣);Boosting 通常要求基学习器是弱学习器(仅比随机猜测略好)。
- 稳定性: Bagging 模型更稳定;Boosting 模型对数据和参数更敏感,容易过拟合(需仔细调参和正则化)。
8. 典型应用:
- 随机森林: 这是 Bagging 最著名和最成功的应用。它以决策树为基学习器,并在 Bagging 的基础上额外引入了特征随机性(在节点分裂时随机选择特征子集),进一步增强了多样性和效果。
- 其他模型的 Bagging 变体: 理论上,任何学习算法都可以作为 Bagging 的基学习器(如 Bagged KNN, Bagged SVMs 等),但决策树因其不稳定性而受益最大。
- 需要高稳定性模型的场景。
总结:
Bagging 是一种强大且实用的集成学习技术,其核心在于通过 Bootstrap 自助采样生成多样化的训练子集,并行训练多个基学习器,然后通过投票(分类)或平均(回归) 聚合它们的预测结果。它最擅长降低高方差模型的方差,从而提升模型的稳定性、鲁棒性和泛化能力,减少过拟合风险。随机森林是 Bagging 思想的杰出代表和扩展。理解 Bagging 是深入掌握集成学习,特别是随机森林的关键基础。
本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术!