核心思想
将多个弱分类器组装成一个强分类器 。
前置知识
Bias & Variance
定义:
$ bias=\bar{f}(x) -y $,为模型的期望预测与真实值之间的差异。
$ variance=\mathbb{E}_{\mathcal{D} }[(f(x;\mathcal{D})-\bar{f}(x))^2] $,模型在数据集 \(\mathcal{D}\) 上的鲁棒性。
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\) 独立
- 当 k 个模型相互独立:\(Var(\frac{1}{k}\sum_i^k{X_i}) = \frac{1}{k^2}Var(\sum_i^k{X_i}) = \frac{\sigma ^2}{k}\)
算法代表
随机森林 = 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:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。