GBDT

大家都是成年人,直入主题了
1.gbdt的算法流程
2.gbdt如何选择特征
3.gbdt为什么可以构造特征
4.gbdt如何用于多分类
5.gbdt通过什么方式减少误差
6.gbdt相比于LR,SVM为什么效果好一点
7.gbdt如何加速训练
8.gbdt的参数有哪些,如何调参
9.gbdt的优缺点

这里先明确:GBDT的弱分类器为cart回归树(二分类)
1.gbdt的算法流程
其实就是树的构建过程
前向分步算法Fm(x) = Fm-1(x) + αGm(x)
损失函数为最小二乘损失
GBDT
gbdt的每一层都是一个cart树的构建,下一层的数据是上一层数据的残差

2.gbdt如何选择特征
gbdt特征的选择,其实就是cart树的特征选择呀

3.gbdt为什么可以构造特征
gbdt,我们不生产特征,只是特征的搬运工,
GBDT
4.gbdt如何用于多分类
这里明确,因为gbdt用的弱分类器为cart回归树,因此,它本质上是解决一个二分类问题,那么如何解决多分类呢?
每一个类构造一颗树,而且需要每个类别的第一层构造完,才可以构造第二层
GBDT
5.gbdt通过什么方式减少误差
这个看损失函数吗,就是不断拟合真实值于预测值之间的误差,具体方式是拟合残差,来使误差减小。

6.gbdt相比于LR,SVM为什么效果好一点
因为gbdt是集成学习方法,本身就比单一学习器效果好,其次,gbdt基学习器为cart树,对数据的缺失值干扰不明显

7.gbdt如何加速训练
从算法的训练角度来说的话,在每一层的树的构建是并列关系,我们可以在每一层树构建的时候,扔给多cpu去处理。

8.gbdt的参数(在sklearn中)
n_estimators:弱学习器的个数
learning_rate:学习率
subsample:子采样防止过拟合
max_features:最大特征数
max_depth:最大树深,太大过拟合
min_sample_split:内部节点在划分时,所需的最小样本数
min_weight_fraction_leaf:叶子节点的最小样本权重和。如果存在较多样本有缺失值,或者分类树样本的的分布类别偏差很大,就会引入雅各布权重和。
max_leaf_nodes:最大叶子节点数,太大过拟合。
min_impurity_split:节点划分最小不纯度。
presort:是否对数据进行预分类,以加快过拟合中最佳分裂点的发现。默认为False,适用于大数据集,小数据集为True,可以加快训练。

9.gbdt如何调参
首先:步长learning_rate 和迭代次数n_estimators,选择要给较小的步长,来搜索最好的迭代次数
然后:树的最大深度,和内部节点划分所需虽小样本,叶子节点所需最小样本数
min_samples_split要做两次网格寻优,一次是树的最大深度max_depth,一次是叶子节点最少样本数min_samples_leaf。
继续对最大特征数max_features进行网格搜索。做完这一步可以看看寻找出的最优参数组合给出的分类器的效果。
可以进一步考虑对子采样的比例进行网格搜索,得到subsample的寻优参数
回归到第2步调整设定的步长(learning rate)和迭代次数(n_estimators),注意两者的乘积保持不变,这里可以分析得到:通过减小步长可以提高泛化能力,但是步长设定过小,也会导致拟合效果反而变差,也就是说,步长不能设置的过小

参考文章
https://blog.****.net/tinkle181129/article/details/79681702