Adaboosting:
- 通过前向分步法,优化损失函数,为指数损失函数,然后梯度上升树。
- 可以 任意分类器作为弱分类器。
- 优化步长,与迭代次数。
GBDT
-
回归问题:
1) 拟合残差
2)CART树
3)拟合负梯度 -
分类问题:
1)改变拟合Loss, 比如: 逻辑回归,对数损失, Adaboost 指数损失。
2)训练更精准
3)没法并行处理 -
调参
GBDT
n_estimators: 弱学习做大迭代次数
learing_rate: 权重缩减系数,也称作步长。)
subsample: 子采样,不放回抽样,防止过拟合。不能太小,负责偏差大。
随机森林是有放回抽样
loss: 回归选误差函数, 分类选指数损失,或对数损失。
CART- max_feature: 最大特征树
2)max_depth: 决策树最大深度,默认是3,数据多特征多一般限制使用
3)mini_samples_split: 内部节点再划分使用的最小样本数。
4)mini_samples_leaf: 叶子节点最少样本数。用于剪枝
- max_feature: 最大特征树
XGBoost
- 优化方面
1)算法本身优化:
a. 弱分类模型选择上,可以支持更多弱分类器。
b. 损失函数上,添加正则化项,预防过拟合
c. 算法优化上,对误差做二阶泰勒展开,更加准备。 GBDT只做一阶泰勒展开。
2)算法运行效率
a. 每个弱分类器,建立过程并行选择,先对所有的特征的值进行排序分组,对分组特征,选择合适的分组大小,cpu缓存进行读取加速。
3) 算法健壮性
a.缺失值特征,枚举所有缺失值进入左子树还是右子树决定缺失值处理方法。 - 调参
1)booster: 默认是gbtree CART,gblinear
2)e_estimators : 弱分类器个数
3)objective 分类,还是损失,以及对应的损失函数。