其他分享
首页 > 其他分享> > GBDT与XGBoost学习体会

GBDT与XGBoost学习体会

作者:互联网

GBDT

GBDT = 梯度下降 + Boosting + 决策树

提升树与梯度提升树区别:提升树采用残差,而GBDT去拟合负当前模型损失函数的负梯度(当损失函数为均方误差的时候,就相当于残差,一般的损失函数优化复杂使用负梯度来近似残差)

 

经典的AdaBoost算法只能处理采用指数损失函数的二分类学习任务

而梯度提升方法通过设置不同的可微损失函数可以处理各类学习任务(多分类、回归、Ranking等),应用范围大大扩展。另一方面,AdaBoost算法对异常点(outlier)比较敏感,而梯度提升算法通过引入bagging思想、加入正则项等方法能够有效地抵御训练数据中的噪音,具有更好的健壮性

GBDT流程

1.初始化残差,构成弱学习器1。(预测特征所对应得特征值求平均值)2.计算残差(实际值 - 弱学习器1)。3.寻找回归树的最佳划分点(阈值)。遍历每个特征的每个特征值作为阈值,通过阈值将数据二分,分别计算方差,找到使方差最小的特征值为最佳二分阈值4.将二分后的残差值更新为实际值,计算实际值平均值 作为残差。构成弱学习器2。5.合并强学习器。(弱学习器1 + 弱学习器2)

GBDT总结:

GBDT全称是梯度提升决策树,是监督学习中,一种常见的集成树模型,可以用于处理分类和回归问题。其中,梯度提升(Grandient Boosting)是Boosting家族中的一种优化算法,决策树使用的是CART回归树作为GBDT的基学习器

梯度提升在每一轮迭代时,我们生成一个基学习器,基学习器的拟合目标是当前模型Loss的负梯度。当训练完成后,我们将该基学习器加入至模型。重复上述,继续训练基学习器,直至迭代次数达到目标。

局限性1.在高维稀疏的数据集上,表现不如支持向量机或者神经网络2.在处理文本分类特征问题上的优势不如在数值上明显3.训练需要串行训练,只能在决策树局部采用一些局部并行的手段提高训练速度

GBDT如何选择特征?遍历每个特征,然后对每个特征遍历它所有可能的切分点,找到最优特征m的最优切分点j

面试问题参考链接:https://blog.csdn.net/tinkle181129/article/details/79681702

XGBoost

目标函数=损失函数+正则项

损失函数的构建基于boosting的思想,基于前一颗树去学习后一棵树。找一棵树使目标函数值最小。

定义树的复杂度:树可以有若干个叶子节点来表达,构建一颗树也是为了找到每个节点的区域以及叶子节点的值。利用正则项(正则化项与树的叶子节点的数量T和叶子节点的值有关)对叶子节点进行惩罚,控制模型的复杂度。

分裂节点:贪心法和近似算法

GBDT和XGboost模型比较

GBDT的优势:

GBDT的劣势:

xgboost的优势:

gbdt的参数:boosting框架型参数以及catr树的参数

框架型参数:弱学习器的最大个数,学习率步长,无放回的采样比率

弱分类器参数:决策树最大深度,内部节点所需最小样本数,最大叶子节点数等

xgboost的taylor二阶导展开能够加快收敛速度

传统GBDT以CART作为基分类器,xgboost还支持线性分类器,这个时候xgboost相当于带L1和L2正则化项的逻辑回归(分类问题)或者线性回归(回归问题)

传统GBDT在优化时只用到一阶导数信息,xgboost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。

xgboost在代价函数里加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数、每个叶子节点上输出的score的L2模的平方和。正则项降低了模型的复杂度,使学习出来的模型更加简单,防止过拟合,这也是xgboost优于传统GBDT的一个特性。

 

 

标签:xgboost,梯度,XGBoost,学习,学习体会,正则,GBDT,节点
来源: https://blog.csdn.net/weixin_44868822/article/details/101224542