一、Boosting
1. Boosting介绍
1.1 实现过程
1.2 Boosting 和 Bagging的对比
- 区别一:数据方面
- Bagging:对数据进行采样训练;
- Boosting:根据前一轮学习结果调整数据的重要性。
- 区别二:投票方面
- Bagging:所有学习器平权投票;
- Boosting:对学习器进行加权投票。
- 区别三:学习顺序
- Bagging的学习是并行的,每个学习器没有依赖关系;
- Boosting学习是串行,学习有先后顺序。
- 区别四:主要作用
- Bagging主要用于提高泛化性能(解决过拟合,也可以说降低方差)
- Boosting主要用于提高训练精度 (解决欠拟合,也可以说降低偏差)
二. AdaBoost
Adaptive Boosting,”自适应增强”的缩写
1. 构造过程细节
- 步骤一:初始化训练数据权重相等,训练第一个学习器。
-
步骤二:AdaBoost反复学习基本分类器,在每一轮m = 1, 2, …, M 顺次的执行下列操作:
-
步骤三:对m个学习器进行加权投票
2. 关键点剖析
3. 案例
参考李航-《统计学习方法》相关案例
4. API介绍
- from sklearn.ensemble import AdaBoostClassifier
三、GBDT
GBDT 的全称是Gradient Boosting Decision Tree(梯度提升树)
- 更新强学习器,需要用到参数学习率:learning_rate=0.1,用lr表示
- 为什么要用学习率呢?这是Shrinkage的思想,如果每次都全部加上(学习率为1)很容易一步学到位导致过拟合。
- 这是因为数据简单每棵树长得一样,导致每一颗树的拟合效果一样,而每棵树都只学上一棵树残差的0.1倍,导致这颗树只能拟合剩余0.9了。