1.1 介绍
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,如绝对值损失、合页损失,是通过拟合负梯度作为下一棵树拟合的目标。参见下图作为残差和负梯度的比较:
![](https://img.haomeiwen.com/i6193382/a26c46d697b2dc08.png)
平方损失作为loss function会有异常点敏感的缺点,因此在回归问题上,一般选用绝对值和合页损失作为loss function
GBDT算法流程如下:
![](https://img.haomeiwen.com/i6193382/527d35a07564537f.png)
在构建一个树的过程中,会对节点进行切分,切分的准则使用的是friedman_mse的准则,这个是Greedy Function Approximation: A Gradient Boosting Machine论文中的(32)式:
![](https://img.haomeiwen.com/i6193382/e87c47728f1ae8a2.png)
sklearn中的
GradientBoostingClassifier
里面的loss参数有logistic回归和指数,如果是指数就退化成了AdaBoost算法,官方介绍如下:![](https://img.haomeiwen.com/i6193382/b5dc6683197799a3.png)
sklearn中的GradientBoostingRegressor
里面的loss参数有{‘ls’, ‘lad’, ‘huber’, ‘quantile’}
,官方介绍如下:
![](https://img.haomeiwen.com/i6193382/e9ee1c7c158232b0.png)
正则化
sklearn中的GBDT的正则化是通过指定learning_rate、sumsample、max_depth来解决,其中learning_rate是shrinkage的体现,通过每次给新添加的树一个权重,每次走一小步,提高算法的泛化能力,一般可以通过指定学习率和subsample组合的方式指定,不同正则化效果对比如下:
![](https://img.haomeiwen.com/i6193382/e41f3f183ca5c180.png)
网友评论