集成学习:对比 Boosting & Bagging、Stacking
1、集成学习(Emsemble Learning)
- 通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统(Multi-classifier System)
- 通俗说法:先产生一组“个体学习器”,再用某种策略将它们结合。
- 作用:通过结合多个学习器,通常可获得比单一学习器显著优越的泛化性能。
- 分类:① 侧重于得到个体学习器(Boosting & Bagging) ② 侧重于结合个体学习器(Stacking)
2、Boosting & Bagging
Boosting & Bagging 算法皆侧重于得到更合适的学习器,最主要的区别在于:
- Boosting:个体学习器间存在强依赖关系、必须串行生成的序列化方法(eg:AdaBoost、GBDT)
- Bagging:个体学习器间不存在强依赖关系、可同时生成的并行化方法(eg:随机森林)
2.1 Boosting
- Boosting 是一族可将弱学习器提升为强学习器的算法,其工作机制类似:
① 先从初始训练集训练出一个基学习器
② 再根据基学习器的表现对样本分布进行调整,使做错的样本得到更多的关注
③ 再基于调整后的样本分布来训练下一个基学习器
④ 如此重复进行,直到基学习器数目达到之前指定的值T
⑤ 最终将T个基学习器进行加权结合,得到结合的学习器
2.2 Bagging
- Bagging 通过有放回的随机采样(有放回的采样可得到有交叠的采样子集),使得集成中的个体学习器在不会差别太大的情况下,尽可能相互独立,从而得到泛化性能更强的集成。其工作机制类似于:
① 对训练样本采样,产生若干不同的子集
② 再从每个子集中训练出基学习器
③ 再将基学习器进行结合(通常对分类任务采用简单投票法,对回归任务采用简单平均法)
④ 在采样过程中未被采样的数据可用作验证集,对泛化性能进行包外估计,以减少过拟合风险
2.3 对比 Boosting & Bagging
对比维度 | Boosting | Bagging |
---|---|---|
样本选择 | 每轮训练集不变,只改变错误样例权重 | 每轮训练集不同,有放回的随机采样 |
计算模式 | 顺序计算,n模型基于n-1模型的结果 | 可并行生成各个体学习器(基模型) |
依赖关系 | 个体学习器间 存在 强依赖关系 | 个体学习器间 不存在 强依赖关系 |
结合模式 | 误差小的个体学习器具有更大的权重 | 各个体学习器具有相等的权重 |
误差影响 | 减少模型的偏度 Bias | 减少模型的方差 variance |
分类模型 | 弱学习器,最终将弱学习器提升为强学习器 | 强分类器 |
3、Stacking
- Stacking 是指训练一个模型用于结合其它模型的集成学习方法。
- 把各个体学习器称为初级学习器,用于结合的学习器称为次级学习器或元学习器(meta-learner)
① 对训练样本,进行 K 折交叉验证(将训练样本分为K份,并对其中K-1份进行训练),得到训练后的初级学习器(M1, M2, …, MT);
② 对未用来训练的样本进行 K 次预测,并将之结合得到完整预测( p1, p2, …, pT )P 数据集;
③ 对测试样本进行预测,得到( t1, t2, …, tT )T 数据集;
④ 利用得到的 P 数据集与训练样本中的标签值 Y,训练第二层模型 M;
⑤ 利用次级学习器 M 预测第一层模型预测出的次级验证集 T,得到最终的预测结果
参考文章:https://www.jianshu.com/p/fc8dc9d36fde