一、整体定位
-
主题:集成学习(Ensemble Learning)
-
核心思想:把"多个弱/强模型"按某种策略组合,通常比单一模型更准、更稳、更不易过拟合。
二、集成学习三要素
-
个体学习器(基学习器):决策树、SVM、KNN、逻辑回归等均可。
-
差异性:数据差异、特征差异、算法差异,保证"众人拾柴火焰高"。
-
结合策略
• 平均法:简单平均、加权平均(回归)
• 投票法:多数投票、加权投票(分类)
• 学习法:Stacking 用元模型再学一次
三、三大类集成方法
-
Bagging(Bootstrap Aggregating)
-
特点:并行训练、减小方差、抗过拟合
-
步骤:有放回采样 → 并行训练多个基学习器 → 投票/平均
-
代表算法:随机森林(Random Forest)
-
-
Boosting
-
特点:串行训练、减小偏差、逐步提升
-
关键:每轮调整样本权重或残差,错误样本权重↑,正确样本权重↓
-
代表算法:AdaBoost、Gradient Boosting、XGBoost、LightGBM
-
-
Stacking(Stacked Generalization)
-
特点:分阶段"模型套模型"
-
步骤:
① Level-0:训练多个异质基模型 → 输出预测结果
② Level-1:用这些预测结果作为新特征,再训练一个元模型(Meta-learner)
-
优点:能融合不同类型模型,表现力强
-
风险:易过拟合,需交叉验证或留出法生成元特征
-
四、随机森林(Bagging 代表)
-
二重随机
-
数据随机:Bootstrap 采样(有放回)
-
特征随机:每棵树分裂时只考虑随机子集(max_features)
-
-
优点
-
高维数据无需特征选择
-
自带特征重要性评估(Gini/Permutation)
-
支持并行,训练速度快
-
有 OOB(Out-of-Bag)误差,近似交叉验证
-
-
sklearn API
RandomForestClassifier / RandomForestRegressor
-
n_estimators:树数量,默认 100
-
bootstrap:True(有放回采样)
-
oob_score:True 开启 OOB 评估
-
max_samples:单棵树用的样本量(None=全部)
-
五、AdaBoost(Boosting 代表)
-
算法流程
① 初始化权重:w_i = 1/N
② 训练弱分类器(如单层决策树)
③ 计算加权错误率 ε_t,计算该分类器权重 α_t = ½ ln[(1-ε_t)/ε_t]
④ 更新样本权重:错分样本权重↑,正确样本权重↓,再归一化
⑤ 重复 T 轮,最终强分类器 H(x) = sign(Σ α_t h_t(x))
-
特点
-
对异常点敏感(权重被放大)
-
基学习器必须"弱而快",常用决策树桩(depth=1)
-
六、Stacking 细节补充
-
Base Model 建议"异质":KNN、SVM、RF、XGBoost、神经网络...
-
Meta Model 常用:Logistic 回归、LightGBM(简单、正则强)
-
避免信息泄漏:用 K-fold 交叉预测产生元特征,或直接 hold-out
七、对比速查表
维度 | Bagging | Boosting | Stacking |
---|---|---|---|
训练方式 | 并行 | 串行 | 两阶段 |
主要目标 | 减方差 | 减偏差 | 综合提升 |
代表算法 | 随机森林 | AdaBoost, GBDT | 任意模型组合 |
对异常值 | 不敏感 | 敏感 | 视元模型而定 |
计算成本 | 低-中 | 高 | 最高 |