集成学习笔记

一、整体定位

  • 主题:集成学习(Ensemble Learning)

  • 核心思想:把"多个弱/强模型"按某种策略组合,通常比单一模型更准、更稳、更不易过拟合。

二、集成学习三要素

  1. 个体学习器(基学习器):决策树、SVM、KNN、逻辑回归等均可。

  2. 差异性:数据差异、特征差异、算法差异,保证"众人拾柴火焰高"。

  3. 结合策略

    • 平均法:简单平均、加权平均(回归)

    • 投票法:多数投票、加权投票(分类)

    • 学习法:Stacking 用元模型再学一次

三、三大类集成方法

  1. Bagging(Bootstrap Aggregating)

    • 特点:并行训练、减小方差、抗过拟合

    • 步骤:有放回采样 → 并行训练多个基学习器 → 投票/平均

    • 代表算法:随机森林(Random Forest)

  2. Boosting

    • 特点:串行训练、减小偏差、逐步提升

    • 关键:每轮调整样本权重或残差,错误样本权重↑,正确样本权重↓

    • 代表算法:AdaBoost、Gradient Boosting、XGBoost、LightGBM

  3. Stacking(Stacked Generalization)

    • 特点:分阶段"模型套模型"

    • 步骤:

      ① Level-0:训练多个异质基模型 → 输出预测结果

      ② Level-1:用这些预测结果作为新特征,再训练一个元模型(Meta-learner)

    • 优点:能融合不同类型模型,表现力强

    • 风险:易过拟合,需交叉验证或留出法生成元特征

四、随机森林(Bagging 代表)

  1. 二重随机

    • 数据随机:Bootstrap 采样(有放回)

    • 特征随机:每棵树分裂时只考虑随机子集(max_features)

  2. 优点

    • 高维数据无需特征选择

    • 自带特征重要性评估(Gini/Permutation)

    • 支持并行,训练速度快

    • 有 OOB(Out-of-Bag)误差,近似交叉验证

  3. sklearn API

    RandomForestClassifier / RandomForestRegressor

    • n_estimators:树数量,默认 100

    • bootstrap:True(有放回采样)

    • oob_score:True 开启 OOB 评估

    • max_samples:单棵树用的样本量(None=全部)

五、AdaBoost(Boosting 代表)

  1. 算法流程

    ① 初始化权重:w_i = 1/N

    ② 训练弱分类器(如单层决策树)

    ③ 计算加权错误率 ε_t,计算该分类器权重 α_t = ½ ln[(1-ε_t)/ε_t]

    ④ 更新样本权重:错分样本权重↑,正确样本权重↓,再归一化

    ⑤ 重复 T 轮,最终强分类器 H(x) = sign(Σ α_t h_t(x))

  2. 特点

    • 对异常点敏感(权重被放大)

    • 基学习器必须"弱而快",常用决策树桩(depth=1)

六、Stacking 细节补充

  • Base Model 建议"异质":KNN、SVM、RF、XGBoost、神经网络...

  • Meta Model 常用:Logistic 回归、LightGBM(简单、正则强)

  • 避免信息泄漏:用 K-fold 交叉预测产生元特征,或直接 hold-out

七、对比速查表

维度 Bagging Boosting Stacking
训练方式 并行 串行 两阶段
主要目标 减方差 减偏差 综合提升
代表算法 随机森林 AdaBoost, GBDT 任意模型组合
对异常值 不敏感 敏感 视元模型而定
计算成本 低-中 最高