Bagging与Boosting的区别
模型集成的方法主要有两种:Bagging和Boosting.
Bagging:
Bagging的思路就是将多个弱学习器得到的结果进行简单的合成,如果是分类则选取票数比较多的,如果是回归则取平均值.
对于 Bagging 算法来说,由于我们会并行地训练很多不同的分类器的目的就是降低模型方差(过拟合),所以对于每个基分类器来说,目标就是如何降低这个偏差(欠拟合),所以我们采用的基分类器应该尽量的复杂来降低偏差,而方差过大的问题交由Bagging来解决.例如:在随机森林中我们会采用深度很深甚至不剪枝的决策树来作为基分类器。
Boosting:
Boosting也是由多个弱学习器组成,不同与Bagging的弱学习器的相互独立,Boosting的弱学习的学习有前后依赖的关系,每新加入一个弱学习器,学习器的整体能力就会得到提升.
代表算法:Adaboost,GBDT,XGBoost.
GBDT、XGBoost算法都是基于梯度提升机(Gradient Boosting Machine,GBM)的算法思想.
对于 Boosting 来说,每一步我们都会在上一轮的基础上更加拟合原数据,所以 Boosting可以降低偏差(bias)(欠拟合),而对于每个基分类器来说,我们要选择选择方差更小的分类器,即更简单的分类器,例如:GBDT中我们会选择了深度很浅的决策树作为基分类器。
bagging集成与boosting集成的区别:
- 数据方面
Bagging:对数据进行采样训练;
Boosting:根据前一轮学习结果调整数据的重要性。
- 投票方面
Bagging:所有学习器平权投票;
Boosting:对学习器进行加权投票。
- 学习顺序
Bagging的学习是并行的,每个学习器没有依赖关系;
Boosting学习是串行,学习有先后顺序。
- 主要作用
Bagging主要用于提高泛化性能(解决过拟合,也可以说降低方差)
Boosting主要用于提高训练精度 (解决欠拟合,也可以说降低偏差)
Bagging
Bagging的思路就是将多个弱学习器得到的结果进行简单的合成,如果是分类则选取票数比较多的,如果是回归则取平均值.
Bagging并行建立多个弱学习器,弱学习器之间的是相互独立的.
Bagging一般均可在原有算法上提高约2%左右的泛化正确率
api
AdaBoosting
算法大概过程
1.将每个数据的权值都设置为1.训练第一个学习器
2.训练完成之后,调整数据权值,计算模型的权值.如何调整见下面
3.训练第二个学习器,且第二个模型应尽可能拟合上一个模型预测错误的数据
4.学习完成之后,再次调整数据分布,修改数据的权值并计算模型的权值
5.依次训练之后学习器,并调整数据分布.
6.融合所有弱模型,得到增强的学习器.学习器的预测结果为所有模型的预测结果分别乘以他们模型的权值之和.
如何确认投票权重
如何调整数据分布
AdaBoost的构造过程小结
sign为符号函数,用于将连续数值变成离散数值从而进行分类.
api
超参数:
base_estimator
: 弱学习器使用的模型.n_estimators
: 使用的弱学习器的最大数量。