0%

集成学习

集成学习通过构建并结合多个学习器来完成学习任务,常可获得比单一学习器显著优越的泛化性能。本章讨论Boosting、Bagging两大流派、随机森林、结合策略与多样性度量。

第八章 集成学习

个体与集成

核心直觉:多个弱学习器互补,”三个臭皮匠顶个诸葛亮”。但要集成有效,个体学习器必须”好而不同”——既要有一定准确性,又要有多样性

两类集成方法:

  • 并行化(Bagging派):个体学习器独立生成,降低方差
  • 串行化(Boosting派):个体学习器依赖生成,降低偏差

经验法则:Bagging适合高方差模型(如深度决策树),Boosting适合高偏差模型(如浅层决策树)。这也是为什么两者都以决策树为基学习器——决策树的方差/偏差可通过深度灵活调整。

Boosting

Boosting将弱学习器提升为强学习器。核心机制:串行训练,每轮根据前一轮的表现调整训练样本的分布,使后续学习器聚焦于前面的错误。

AdaBoost

最经典的Boosting算法:

  1. 初始化样本权重:$w_i = 1/m$
  2. 对 $t = 1, \dots, T$:
    • 在加权分布上训练基学习器 $h_t$
    • 计算误差 $\epsilon_t = \sum_{i: h_t(x_i)\neq y_i} w_i$
    • 计算学习器权重 $\alpha_t = \frac{1}{2}\ln\frac{1-\epsilon_t}{\epsilon_t}$
    • 更新样本权重:$w_i \leftarrow w_i \cdot \exp(-\alpha_t y_i h_t(x_i))$,归一化
  3. 最终分类器:$H(x) = \text{sign}\left(\sum_{t=1}^T \alpha_t h_t(x)\right)$

AdaBoost的指数损失函数:$\ell_{\exp}(H|D) = \mathbb{E}_{x\sim D}[e^{-yH(x)}]$。可以证明,AdaBoost每步优化的是指数损失,且最终模型等价于对数几率回归的加性模型。

GBDT (梯度提升决策树)

AdaBoost通过调整样本权重间接优化损失,GBDT更直接——每棵树直接拟合上一轮的负梯度(残差)

第 $t$ 棵回归树拟合 $\{(x_i, r_{ti})\}$,最终模型为所有树输出的累加。

XGBoost与LightGBM

  • XGBoost:对损失函数做二阶泰勒展开(用到Hessian信息)+ 显式正则化项控制复杂度
  • LightGBM:基于直方图的决策树算法 + 叶子优先生长策略(Leaf-wise),训练更快、内存更省

Bagging与随机森林

Bagging (Bootstrap Aggregating)

自助采样产生 $T$ 个含 $m$ 个样本的训练集 → 训练 $T$ 个基学习器 → 分类投票 / 回归平均。

每个基学习器仅用到约63.2%的原始数据,剩下36.8%作为包外估计 (OOB) 用于泛化评估。

Bagging的核心价值在于降低方差,尤其适合容易受数据扰动影响的模型(如未剪枝决策树)。对于稳定模型(如KNN、朴素贝叶斯),Bagging提升有限。

随机森林 (Random Forest)

随机森林 = Bagging + 属性随机选择

  • 传统决策树:从全部 $d$ 个属性中选最优划分
  • 随机森林:先从 $d$ 个属性中随机选 $k$ 个,再从这 $k$ 个中选最优划分
  • 推荐 $k = \log_2 d$(分类)或 $k = \sqrt{d}$

双重随机性 = 样本扰动(自助采样)+ 属性扰动(随机子集)→ 多样性极大化,泛化能力远超单棵决策树。

结合策略

策略 方法 适用场景
平均法 简单平均 / 加权平均 回归任务
投票法 绝对多数 / 相对多数 / 加权投票 分类任务
学习法 (Stacking) 用次级学习器结合初级学习器的输出 异构模型组合

Stacking的精妙之处:初级学习器的输出(类别概率)成为次级学习器的特征。训练次级学习器时,必须用初级学习器从未见过的数据,否则过拟合风险极高。标准做法是用交叉验证生成”干净”的次级训练数据。

多样性

误差-分歧分解:集成泛化误差 = 个体平均误差 − 平均分歧($E = \bar{E} - \bar{A}$)。多样性越大,集成提升越大。

多样性度量方法:

  • 不合度量:统计基学习器预测不一致的比例
  • 相关系数:两两学习器输出的皮尔逊相关系数
  • $\kappa$ 统计量:去除随机一致后的分类一致性

增强多样性的常用手段:数据样本扰动、输入属性扰动、输出表示扰动、算法参数扰动。