GBDT总结

1.1 介绍 【GBDT总结】GBDT = Gradient Boosting + Decision Tree
Gradient Boosting = Gradient Descent + Boosting
Boosting是一种按照加法模型叠加simple model的方法,Decision Tree是决策树,Gradient Descent是常用的梯度下降算法。
GBDT一般是使用残差的方式来描述,残差适用于loss function为平方损失。但是其他loss function不能通过残差作为拟合下一棵树的输出,通用的GBDT可以使用其他loss function,如绝对值损失、合页损失,是通过拟合负梯度作为下一棵树拟合的目标。参见下图作为残差和负梯度的比较:

GBDT总结
文章图片
Snipaste_2018-08-13_19-12-40.png
平方损失作为loss function会有异常点敏感的缺点,因此在回归问题上,一般选用绝对值和合页损失作为loss function
GBDT算法流程如下:
GBDT总结
文章图片
Snipaste_2018-08-13_16-37-00.png
在构建一个树的过程中,会对节点进行切分,切分的准则使用的是friedman_mse的准则,这个是Greedy Function Approximation: A Gradient Boosting Machine论文中的(32)式:

GBDT总结
文章图片
Snipaste_2018-08-13_19-20-44.png
sklearn中的 GradientBoostingClassifier里面的loss参数有logistic回归和指数,如果是指数就退化成了AdaBoost算法,官方介绍如下:
GBDT总结
文章图片
Snipaste_2018-08-13_19-22-41.png
sklearn中的GradientBoostingRegressor里面的loss参数有{‘ls’, ‘lad’, ‘huber’, ‘quantile’},官方介绍如下:

GBDT总结
文章图片
Snipaste_2018-08-13_19-22-54.png
正则化 sklearn中的GBDT的正则化是通过指定learning_rate、sumsample、max_depth来解决,其中learning_rate是shrinkage的体现,通过每次给新添加的树一个权重,每次走一小步,提高算法的泛化能力,一般可以通过指定学习率和subsample组合的方式指定,不同正则化效果对比如下:

GBDT总结
文章图片
Snipaste_2018-08-13_19-41-42.png

    推荐阅读