[机器学习]bagging, boosting, stacking

集成学习通过结合多个基学习器的预测结果来提升模型性能,主要方法包括Bagging、Boosting和Stacking。

以下是它们的详细介绍及对比:


1. Bagging

核心思想
  • 并行训练 :通过自助采样(Bootstrap Sampling)生成多个子数据集,每个子数据集训练一个基学习器,最终通过投票(分类)或平均(回归)集成结果。
  • 目标:降低模型方差(Variance),适用于高方差、低偏差的模型(如决策树)。
关键步骤
  1. 采样 :从原始数据集中有放回地随机抽取样本,生成多个子集(子集样本数与原始数据相同,包含重复样本)。
  2. 训练:每个子集独立训练一个基学习器(如决策树)。
  3. 集成:所有基学习器的预测结果通过多数投票或平均值聚合。
典型算法
  • 随机森林(Random Forest) :在Bagging基础上,加入特征随机选择(每棵树分裂时随机选部分特征),进一步降低方差。
优缺点
  • 优点:减少过拟合,适合高方差模型;可并行训练,效率高。
  • 缺点:基学习器同质化可能限制性能提升;对低偏差模型效果有限。
应用场景
  • 图像分类、金融风控等需要稳定性的任务。

2. Boosting

核心思想
  • 串行训练:按顺序训练基学习器,后续模型专注于纠正前序模型的错误,最终通过加权投票(如分类)或累加(如回归)集成结果。
  • 目标:降低模型偏差(Bias),适用于弱学习器(仅略优于随机猜测的模型)。
关键步骤
  1. 初始化权重:所有样本初始权重相同。
  2. 迭代训练:每轮训练后,增加错误样本的权重,使后续模型更关注难例。
  3. 加权集成:根据模型准确率分配权重,组合所有基学习器的预测。
典型算法
  • AdaBoost:通过调整样本权重,强调被误分类的样本。
  • 梯度提升(GBDT、XGBoost、LightGBM) :用梯度下降优化损失函数,逐步拟合残差。
优缺点
  • 优点:显著降低偏差,对弱学习器提升明显。
  • 缺点:可能过拟合噪声数据;训练无法并行,速度较慢。
应用场景
  • 搜索排序(GBDT)、异常检测(AdaBoost)等复杂模式识别任务。

3. Stacking(堆叠泛化)

核心思想
  • 分层训练:将多个基学习器的预测结果作为新特征,训练一个元学习器(Meta-Learner)进行最终预测。
  • 目标:结合不同模型的优势,提升泛化性能。
关键步骤
  1. 基学习器训练 :用原始数据训练多个异质模型(如SVM、决策树、KNN等)。
  2. 生成元特征:基学习器对训练集的预测结果作为新特征(需交叉验证避免数据泄露)。
  3. 元学习器训练:基于新特征训练一个高阶模型(如逻辑回归或神经网络)。
典型结构
  • 基学习器层:多样化模型(异质性高效果更好)。
  • 元学习器层:简单模型(如线性回归)以减少过拟合风险。
优缺点
  • 优点:灵活性强,可融合不同模型优势;性能通常优于单一模型。
  • 缺点:计算成本高;结构复杂,需谨慎调参。
应用场景
  • 机器学习竞赛中模型融合,或需极致性能的场景。

三者的对比

维度 Bagging Boosting Stacking
训练方式 并行 串行 分层(基模型+元模型)
目标 降低方差 降低偏差 结合不同模型的优势
数据采样 自助采样(有放回) 调整样本权重 通常用原始数据或交叉验证
基学习器 同质(如全为决策树) 同质(如全为决策树) 异质(不同算法模型)
典型算法 随机森林 AdaBoost、GBDT、XGBoost 自定义组合(如SVM+LR)
过拟合风险 高(尤其数据噪声多时) 中(依赖元学习器选择)

总结

  • Bagging:通过"少数服从多数"降低方差,适合高方差模型(如深度决策树)。
  • Boosting:通过"逐步纠错"降低偏差,适合弱学习器(如浅层树)。
  • Stacking:通过"模型协作"提升泛化能力,适合需要融合异质模型的复杂任务。

实际应用中,可结合三者特点选择:追求稳定性用Bagging,追求精度用Boosting,追求极致性能用Stacking。

相关推荐
Mintopia2 分钟前
Three.js 深度冲突:当像素在 Z 轴上玩起 "挤地铁" 游戏
前端·javascript·three.js
Penk是个码农6 分钟前
web前端面试-- MVC、MVP、MVVM 架构模式对比
前端·面试·mvc
BFT白芙堂7 分钟前
睿尔曼系列机器人——以创新驱动未来,重塑智能协作新生态(上)
人工智能·机器学习·机器人·协作机器人·复合机器人·睿尔曼机器人
MrSkye9 分钟前
🔥JavaScript 入门必知:代码如何运行、变量提升与 let/const🔥
前端·javascript·面试
白瓷梅子汤13 分钟前
跟着官方示例学习 @tanStack-form --- Linked Fields
前端·react.js
爱学习的茄子17 分钟前
深入理解JavaScript闭包:从入门到精通的实战指南
前端·javascript·面试
李师兄说大模型31 分钟前
KDD 2025 | 地理定位中的群体智能:一个多智能体大型视觉语言模型协同框架
人工智能·深度学习·机器学习·语言模型·自然语言处理·大模型·deepseek
zhanshuo1 小时前
不依赖框架,如何用 JS 实现一个完整的前端路由系统
前端·javascript·html
火柴盒zhang1 小时前
websheet在线电子表格(spreadsheet)在集团型企业财务报表中的应用
前端·html·报表·合并·spreadsheet·websheet·集团财务
khalil1 小时前
基于 Vue3实现一款简历生成工具
前端·vue.js