集成学习:Bagging & Boosting

发布时间 2023-04-28 11:55:57作者: shiiiilong

核心思想

将多个弱分类器组装成一个强分类器 。

前置知识

Bias & Variance

定义:

$ bias=\bar{f}(x) -y $,为模型的期望预测与真实值之间的差异。

$ variance=\mathbb{E}_{\mathcal{D} }[(f(x;\mathcal{D})-\bar{f}(x))^2] $,模型在数据集 \(\mathcal{D}\) 上的鲁棒性。

image

Bagging (bootstrap aggregating)

Bootstrap:有放回的抽样方法

算法流程:

  • Bootstrap采样出来 k 份训练集(又放回抽样保证 k 份训练集相互独立)
  • 在 k 个训练集上训 k 个基模型
  • aggregating:
    • 分类任务:投票
    • 回归任务:平均值

优点:

  • 可以并行
  • 主要降低 Variance,对 Bias 无明显作用。适用于 High Variance & Low Bias 的模型
    • 当 k 个模型相互独立:\(Var(\frac{1}{k}\sum_i^k{X_i}) = \frac{1}{k^2}Var(\sum_i^k{X_i}) = \frac{\sigma ^2}{k}\)
      • \(Var(cX)=c^2Var(X)\)
      • $Var(X+Y)=Var(X)+Var(Y) $ ,其中 \(X\)\(Y\) 独立

算法代表

随机森林 = Bagging + 决策树

Boosting

算法流程:

  • 每轮迭代:
    • 针对上轮基模型结果:提高分错样本的权重,降低分对样本的权重
    • 在新样本权重上训本轮基模型
  • 线性组合所有基模型

算法优点:

1、序贯式集成方法(Sequential Ensemble)。每轮迭代生成的基模型,主要提升前一代基模型表现不好的地方。

2、不断迭代弱分类器,从而降低 Bias。适用于 Low Variance & High Bias 的模型

算法代表

AdaBoost

算法:
  • 初始化训练集权重分布值
  • while
    • 在当前权重上训练基模型 \(G_m(X)\)
    • 计算该模型权重 \(a_m\)(模型预测误差越小,权重越大)
    • 更新训练集权重(依据分类效果,分的差的权重高)
  • 加权各基模型,得到最终强分类器 \(f(X)=\sum_m^M{a_mG_m(X)}\)
其他:

正则化/步长 : \(v\)\(v\) 越小,需要迭代更多个基模型。

\(f_m(X)=f_{m-1}+ v a_mG_m(X)\)

通常用步长和最大迭代次数来决定拟合效果

、GBDT、XGBoost等。

提升树:每个基模型拟合上一个模型的残差

Bagging,Boosting二者之间的区别

1)样本选择:

Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。

Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。

2)样例权重:

Bagging:使用均匀取样,每个样例的权重相等

Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。

3)预测函数:

Bagging:所有预测函数的权重相等。

Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。

4)并行计算:

Bagging:可以并行生成

Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。