集成学习(boosting、bagging、GBDT、XGBoost)
集成学习
-
什么是集成学习
- 超级个体和弱者联盟对比
- 解决欠拟合问题 弱弱组合变强 boosting
- 解决过拟合问题 互相 遏制变壮 Bagging
-
Bagging
- 采样 从所有样本里采样
- 学习 训练弱学习器
- 集成 使用平权投票
-
随机森林
- 随机森林 = Bagging + 决策树
- 流程
- 随机选取m条数据
- 随机选取k个特征
- 训练决策树
- 重复1-3
- 对上面的决策树进行平权投票
- 随机选取样本 且有放回的抽取
- 选取特征的时候,选择m << M(所有特征数)
- from sklearn.ensemble import RandomForestClassifier
- n_estimators 森林里树木的个数
- criterion 分割特征的测量方法 gini
- max_depth
- bootstrap 默认值True 是否放回抽样
- max_feature = auto\sqrt\log2 最大特征值
- min_samples_split 节点划分最少样本数
- min_samples_lea 叶子节点的最小样本数
-
bagging优点
- Bagging + 决策树/线性回归/逻辑回归/深度学习 = bagging集成学习方法
- 可在原有算法上提高2%左右的泛化正确率 简单方便
-
Boosting
- 随着学习的积累从弱到强
- 实现过程
- 初始化训练数据权重,初始权重是相等的
- 通过这个学习器,计算错误率
- 计算这个学习器的投票权重
- 对每个样本进行重新赋权,将下一轮学习器的注意力集中在错误的数据上
- 重复前面1-4
- 对构建后的最后的学习器进加权投票
- 3如何确认投票权重
- 正确率越高,投票权重越大,乱猜投票权重为0
- 权重_t = 1/2 * ln( (1 - 第t个学习器的错误率) / 第t个学习器的错误率)
- 4如何重新赋权
- D_t+1 = D_t / Z_t(归一化系数) * (e^ -权重_t 预测==真实 | e^权重_t 预测!=真实)
-
bagging集成与boosting集成的区别:
- 数据方面:
- bagging:重新采样
- boosting:对数据进行权重调整
- 投票方面:
- bagging:平权
- boosting:加权
- 学习顺序方面:
- bagging:并行
- boosting:串行
- 主要作用:
- bagging:过拟合 降低方差
- boosting:欠拟合 降低偏差
- 数据方面:
-
GBDT
- 梯度提升决策树(GBDT Gradient Boosting Decision Tree)
- GBDT = 梯度下降 + Boosting + 决策树
-
XGBoost
- XGBoost= 二阶泰勒展开+boosting+决策树+正则化
- Boosting: XGBoost使用Boosting提升思想对多个弱学习器进行迭代式学习
- 二阶泰勒展开:每一轮学习中,XGBoost对损失函数进行二阶泰勒展开,使用一阶和二阶梯度进行优化。
- 决策树:在每一轮学习中,XGBoost使用决策树算法作为弱学习进行优化。
- 正则化:在优化过程中XGBoost为防止过拟合,在损失函数中加入惩罚项,限制决策树的叶子节点个数以及决策树叶子节点的值。