GBDT算法(Gradient Boosting Decision Tree)梯度提升树

引入梯度下降的思想

将每一个小树加在一起

函数空间的梯度下降

无论GBDT处理的是回归问题还是二分类问题还是多分类问题,GBDT使用的都是CART回归树,因为GBDT每次要拟合的是梯度值,是连续值所以要用回归树。

每颗回归树都是拟合负梯度,gbdt在应用于回归问题的时候,正好损失函数用的是mse的时候,拟合的就是残差(负梯度),使用残差作为标签去训练一棵新的树,

gbdt的loss函数如果是mse,则gbdt用来做回归问题,
不同的损失函数可以做不同的问题,但是损失函数必须是可导的。

shrinkage衰减系数,可以迭代训练更多的树,其实就是学习率,走的更稳健。

gbdt做二分类,拟合的也是残差,logistics regression逻辑回归

boosting是串行
多元线性回归
逻辑回归(LR)是做非线性变换,gbdt也是同样的思想,两者的loss都是交叉熵
图片说明

gbdt做二分类,model的使用,把新的样本放在每一棵小树里边,把每一棵小树进行加和,求得z,然后做非线性变换,得到预测值。
训练的时候才会用到求梯度。
如何训练model:
训练集数据带进model,得到预测值,做非线性变换然后与真实值比较得到loss,然后利用loss求得负梯度,再反向传播调节模型,反复这样迭代。
对于gbdt来说model是许多小树,加和。
对于LR来书model是θ

gbdt做回归的流程:
随机森林做回归,用的basemodel是每一棵树,有数据,对数据进行随机采样,得到不同的数据集,又放回的采样,不同的数据集可以得到不同的树,最终结果求平均。
用随机森林做分类,用的是gini系数,少数服从多数,进行投票
adaboost分类,用的是决策桩,不断地变化权重

gbdt做回归的流程:
根据x和第0时刻的残差训练第一课树,依次训练后边多棵树,每棵树不同之处在于残差(负梯度)。每次迭代,每次都是尽可能的将loss减少。
图片说明

gbdt做多分类;
model得出的是z,对z进行sigmod函数,进行非线性变换就可以做二分类。
假设数据服从多项式分布,每一次迭代要训练k个数,
gbdt做多分类,每一个决策树会给出一个预测结果,对应不同的one-hot编码,

gbdt做特征选择:
特征和特征值不是一回事,

逻辑回归就是线性的分类器,

做推荐的时候就是gbdt+LR这个算法。

gbdt做多分类时候,有几个类就需要训练几棵树,x数据相同,y不相同

要训练小树,根据什么生成树,要根据特征和特征值用mse,mse怎么算的呢?一个样本无法实现分类,训练集肯定有很多样本,
gbdt如果做分类,节点里边的是概率值的期望和概率值本身

图片说明
图中y1对应公式中的c1
y1为label的均值,label不是1就是0,只有这两种情况,c1则为label的均值,
用不同的特征维度的特征值训练树,会得到不同的叶子节点,根据叶子节点做总的mse,要最小才最好。得到最小的mse之后,这个特征维度对应的特征值就是最合适的分开点。

以mse为指标生成决策树,这个最小的mse就是经过训练之后训出的,利用了某个特征维度,里边的最合适的特征值,是一步步训练迭代出来的。

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务