常见的集成学习框架有三种:Bagging,Boosting 和 Stacking。
1 模型方差与偏差(缘起)
在 Bagging 和 Boosting 框架中,通过计算基模型的期望和方差我们可以得到模型整体的期望和方差。为了简化模型,我们假设基模型的期望为,方差,模型的权重为,两两模型间的相关系数$\rho $相等。由于 Bagging 和 Boosting 的基模型都是线性组成的,那么有:
模型总体期望:
模型总体方差(公式推导参考协方差的性质,协方差与方差的关系):
2 Bagging
2.1 基本思想
Bagging(Bootstrap aggregating)思路是这样的:
- 从原始样本集合 中 有放回抽取n个训练样本,共进行k论抽取,得到k个训练集。
- 对于k个训练集,分别训练k个模型(弱分类器,如决策树)
- 对于分类问题:k个分类器投票表决,选取投票数最高的那种分类作为最终分类;对于回归问题:k个回归器预测结果的均值作为最后预测结果
2.2 方差与偏差
对于 Bagging 来说,每个基模型的权重等于 1/m 且期望近似相等,故我们可以得到:
通过上式我们可以看到:
- 整体模型的期望等于基模型的期望,这也就意味着整体模型的偏差和基模型的偏差近似。
- 整体模型的方差小于等于基模型的方差,当且仅当相关性为 1 时取等号,随着基模型数量增多,整体模型的方差减少,从而防止过拟合的能力增强,模型的准确度得到提高。但是,模型的准确度一定会无限逼近于 1 吗?并不一定,当基模型数增加到一定程度时,方差公式第一项的改变对整体方差的作用很小,防止过拟合的能力达到极限,这便是准确度的极限了。
在此我们知道了为什么 Bagging 中的基模型一定要为强模型,如果 Bagging 使用弱模型则会导致整体模型的偏差提高,而准确度降低。
3 Boosting
3.1 基本思想
Boosting的思路是这样的,本质是不断迭代的过程:
- 对于训练集中每个样本建立权值,代表对每个样本的关注度。当某个样本被误分类的概率很高时,需要加大对该样本的权值
- 迭代训练的过程中,每一轮迭代中的每一步都会生成一个弱分类器/弱回归器。通过某种策略将其组合,作为最终模型。不同的Boosting实现 方法不尽相同
3.2 方差与偏差
对于 Boosting 来说,由于基模型共用同一套训练集,所以基模型间具有强相关性,故模型间的相关系数近似等于 1,针对 Boosting 化简公式为:
通过观察整体方差的表达式我们容易发现:
- 整体模型的方差等于基模型的方差,如果基模型不是弱模型,其方差相对较大,这将导致整体模型的方差很大,即无法达到防止过拟合的效果。因此,Boosting 框架中的基模型必须为弱模型。
- 此外 Boosting 框架中采用基于贪心策略的前向加法,整体模型的期望由基模型的期望累加而成,所以随着基模型数的增多,整体模型的期望值增加,整体模型的准确度提高。
4 Stacking
Stacking 是先用全部数据训练好基模型,然后每个基模型都对每个训练样本进行的预测,其预测值将作为训练样本的特征值,最终会得到新的训练样本,然后基于新的训练样本进行训练得到模型,然后得到最终预测结果
5 Bagging和Boosting的区别
- 样本选择:Bagging采用的是随机有放回的抽样;Boosting每一轮训练都使用同样的训练集,改变的只是每个样本的权值。
- 样本权值: Bagging认为每个样本拥有同样的权值,即人人平等;Boosting会根据错误率来调整样本权值,错误率越大,权值越大,会哭的孩子有奶吃,就是这个道理。
- 弱分类器权值:Bagging认为每个弱分类器拥有同样的权值,即干好干坏都发一样的工资;Boosting会根据分类误差小的弱分类器分配更高的权值,即干得好升职加薪。
- 并行计算:Bagging各个弱分类器可以并行生成互不干扰;Boosting有迭代概念,各个弱分类器必须按照顺序生成。
- 串行的Boosting和并行的Bagging,前者通过对错判训练样本重新赋权来重复训练,以提高基学习器准确性,降低偏差;后者通过采样方法,训练出多样性的基学习器,降低方差。
- Bagging + 决策树 = RF
- 一阶Gradient Boosting + 决策树 = GBDT
- 二阶Gradient Boosting + 一阶Gradi Boosting + 决策树 = XGBoost