【第二章:机器学习与神经网络概述】03.类算法理论与实践-(4)集成方法(Ensemble Methods)

发布于:2025-07-01 ⋅ 阅读:(20) ⋅ 点赞:(0)

第二章: 机器学习与神经网络概述

第三部分:类算法理论与实践

第四节:集成方法

内容:Bagging与Boosting、随机森林与梯度提升树(GBDT)。

集成方法通过组合多个弱分类器来构建一个更强的学习模型,从而提高预测性能、降低过拟合风险,是现代机器学习中非常重要的一类算法。


一、集成方法的基本思想

  • 弱分类器(Weak Learner):泛化能力略优于随机猜测的模型(如浅层决策树)

  • 集成策略

    • Bagging(Bootstrap Aggregating)

    • Boosting

    • Stacking(叠加)(进阶内容)


二、Bagging:自助采样法

核心思想:并行训练多个模型,进行投票或平均

  • 对训练数据进行有放回采样,生成多个子训练集

  • 每个子集上训练一个模型(通常是决策树)

  • 对于分类问题:投票表决;回归问题:取平均

典型算法:随机森林(Random Forest)
  • 在 Bagging 基础上,引入特征随机选择

  • 每棵树划分节点时,从特征子集中选最优特征

  • 有效降低模型方差,抗过拟合能力强

from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(n_estimators=100, max_depth=5)
rf.fit(X_train, y_train)

三、Boosting:顺序学习,重点关注错误

核心思想:串行训练模型,每一轮关注前一轮错误的样本

  • 每一轮训练一个弱分类器

  • 每轮根据错误样本调整样本权重残差

  • 最终组合所有弱分类器(加权)

典型算法:梯度提升树(GBDT)
  • 每一轮拟合上轮残差

  • 通过梯度下降方向最小化损失函数

  • 对小数据、高准确率有很强表现

from sklearn.ensemble import GradientBoostingClassifier

gbdt = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1)
gbdt.fit(X_train, y_train)

四、Bagging vs Boosting 对比

特性 Bagging Boosting
模型训练方式 并行训练 串行训练
误差目标 减小方差(Variance) 减小偏差(Bias)
抗噪声能力 强(如随机森林) 弱(容易过拟合)
常见算法 随机森林(Random Forest) GBDT、AdaBoost、XGBoost、LightGBM 等

五、Python中常用集成方法(sklearn.ensemble

模型 简介
RandomForest 多棵决策树+随机特征选择
AdaBoost 基于错误样本调整权重
GradientBoosting 基于梯度残差建模
VotingClassifier 多模型组合投票
StackingClassifier 模型融合 + 二层训练器

六、常见应用场景

  • 高维数据分类问题(如文本、图像)

  • 需要模型泛化能力强的任务

  • 小样本、精度要求高的建模问题


七、总结

特点 Bagging Boosting
代表算法 随机森林 GBDT, AdaBoost
偏差/方差优化 减少方差 减少偏差
并行/串行 并行 串行
模型解释性 一般 较弱(可使用特征重要性工具)

以下是 Bagging、Boosting、Stacking 和单模型 的对比表,帮助你快速理解它们之间的异同:


集成方法模型对比表

对比维度 Bagging(如随机森林) Boosting(如GBDT、XGBoost) Stacking(堆叠法) 单模型(如决策树)
训练方式 并行训练多个弱模型 串行训练多个弱模型 多个基础模型 + 元学习器 单个模型
主要目标 降低方差(Variance) 降低偏差(Bias) 提升综合预测能力 学习训练集规律
样本处理 自助采样(Bootstrap) 错误样本加权或残差建模 所有模型共享同一训练集 一次性使用全部训练数据
对噪声鲁棒性 较强(不易过拟合) 一般(可能过拟合) 取决于基础模型 易受噪声影响
特征处理方式 每棵树选取特征子集 每轮用全部特征(可调) 不限,可混合特征选择机制 通常使用全部特征
典型算法 随机森林(Random Forest) GBDT、AdaBoost、XGBoost、LightGBM 堆叠模型(StackingClassifier) 决策树、SVM、KNN 等
是否易并行化 ✅ 易并行 ❌ 串行,难并行 ⚠️ 第二层训练器难并行 ✅ 容易
是否支持概率预测 ✅ 支持 ✅ 支持 ✅ 支持(取决于元模型) 部分支持
模型复杂性 中等 较高 较低
可解释性 一般(可视化特征重要性) 较差 高(如单棵树)
性能表现 稳定,抗噪声 高精度,小样本优 泛化性能强,多任务适用 依赖模型类型,波动大


网站公告

今日签到

点亮在社区的每一天
去签到