当前位置: 首页 > news >正文

集成学习基础:Bagging 原理与应用

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术!

Bagging 介绍

1. 定义与全称:

  • BaggingBootstrap 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 的基本思想非常简单而强大:

  1. 引入随机性: 通过对原始训练数据集进行 有放回的随机抽样(Bootstrap Sampling),创建出多个不同的、略有重叠的子训练集。
  2. 并行训练: 使用这些不同的子训练集,独立地训练出多个 同质的 基学习器。这些学习器通常是同一种算法(例如都是决策树)。
  3. 聚合结果: 对于一个新的预测样本,让所有训练好的基学习器进行预测,然后将它们的预测结果进行聚合
    • 分类任务: 采用 多数投票法(Majority Voting),即选择得票最多的类别作为最终预测结果。
    • 回归任务: 采用 简单平均法(Averaging),即计算所有基学习器预测值的平均值作为最终预测结果。

3. 关键步骤详解:

  • Bootstrap Sampling (自助采样):

    • 假设原始训练集 D 包含 N 个样本。
    • 要训练 T 个基学习器,就需要创建 Tbootstrap 样本集 D_1, D_2, ..., D_T
    • 生成每个 D_t 的过程:
      1. 从原始训练集 D有放回地随机抽取一个样本。
      2. 将该样本放入 D_t 中。
      3. 重复步骤 1 和 2 N 次。这样 D_t 就包含了 N 个样本(注意:因为有放回,某些样本会被多次抽中,而另一些样本可能一次都没被抽中)。
    • 重要特性:
      • 每个 bootstrap 样本集 D_t 的大小与原始训练集 D 相同(N 个样本)。
      • 由于有放回抽样,原始训练集 D 中大约有 63.2% 的样本会出现在任意一个给定的 D_t 中。剩下的约 36.8% 的样本被称为该基学习器的 袋外样本
      • 不同的 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}算术平均值

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技术!

http://www.lqws.cn/news/512731.html

相关文章:

  • 多模态大模型(从0到1)
  • CRMEB PHP多门店版v3.2.1系统全开源+Uniapp前端+搭建教程
  • 【stm32】标准库学习——USART串口
  • 2023年全国青少年信息素养大赛Python 复赛真题——玩石头游戏
  • 大模型时代的创业机遇
  • 左神算法之双集合平均值优化操作的最大次数
  • SIAM-2011《Weighted Graph Compression for Parameter-free Clustering With PaCCo》
  • 【基础篇-消息队列】—— 如何实现单个队列的并行消费及如何保证消息的严格顺序
  • 爬取小红书相关数据导入到excel
  • SpringCloud系列(35)--使用HystrixDashboard进行服务监控
  • 《汇编语言:基于X86处理器》第4章 数据传送、寻址和算术运算(2)
  • 行为验证码 AJ-Captcha 使用文档
  • Golang Kratos 系列:领域层model定义是自洽还是直接依赖第三方(三)
  • C++字符串的行输入
  • MySQL之SQL性能优化策略
  • 《仿盒马》app开发技术分享-- 兑换列表展示(68)
  • git操作练习(3)
  • 【Python-Day 29】万物皆对象:详解 Python 类的定义、实例化与 `__init__` 方法
  • SQL Server从入门到项目实践(超值版)读书笔记 18
  • git commit --no-verify -m ““ 命令的作用是什么
  • LangChain网页自动化PlayWrightBrowserToolkit
  • Python训练营-Day40-训练和测试的规范写法
  • maven:迁移到 Maven Central 后 pom.xml的配置步骤
  • 马克思主义基本原理期末复习下
  • HarmonyOS开发基础 --鸿蒙仓颉语言基础语法入门
  • 基于元学习的回归预测模型如何设计?
  • 3D重建任务中的显式学习和隐式学习
  • 脉内频率捷变LFM信号
  • 【神经网络预测】基于LSTM、PSO - LSTM、随机森林和多项式拟合的火力机组排放预测
  • 解锁Selenium:Web自动化的常用操作秘籍