00 Index
01 GBDT和XGBoost的原理介绍
02 GBDT和XGBoost的异同点分析
03 什么风控建模场景下常用这两个明星算法?
04 GBDT的评估与调参思路
05 XGBoost的评估与调参思路
06 总结一下
🙊 01 GBDT和XGBoost的原理介绍
我们都知道这两个算法都属于Boosting算法,所谓的Boosting算法就是从一个初始权重的基弱学习器进行模型训练,根据模型的学习误差来调整样本的权重,让下次模型迭代更加去关注那些被分类错误的样本,不断迭代更新模型知道得到一个强学习器。所以可以看出来Boosting它迭代的方式是串行的,并且下一个学习器依赖上一个学习器的训练结果。
🚀 GBDT
GBDT,全称Gradient Boosting Decision Tree,也是属于Boosting集成算法,通过梯度下降来对新的学习器进行迭代,基学习器为CART
决策树,它的核心就在于每一次迭代的决策树都是在学习之前所有树结论和的残差,节点分裂的方式采用的是Gini系数。
🚀 XGBoost
我们都知道XGBoost是由陈天奇大佬和他的伙伴们一起提出来的一个基于GBDT优化的算法,在Paper中,作者是这样子定义XGBoost的:
a scalable machine learning system for tree boosting.
XGBoost全称是 Extreme Gradient Boosting,它的目标函数由训练损失(Training loss)和正则项(Regularization term)组成。其最大的优点就是可以实现特征选择的并行处理,正则使用L2的稀疏感知算法,同时引入有效的缓存结构,这样子对于训练效率有很大的提升。更多关于XGBoost的介绍,可以看一下之前的一篇文章《带你撸一遍 XGBoost论文》。
🙊 02 GBDT和XGBoost的异同点分析
🚀 相同点
XGBoost严格意义上并不是一种单一算法,而是Gradient Boosting的一种极度高效的系统实现,也可以理解是基于GBDT的一次深度优化。所以GBDT算法有的特性,XGBoost也基本上有,比如:
都属于Boosting集成树算法
都支持CART基分类器
都是会根据上一次基分类器的预测结果调整后续样本权重
...
🚀 不同点
说不同点,其实还倒不如说是XGBoost的“个人秀”。
基分类器
:GBDT的基分类器为CART
(Classification And Regression Trees),而XGBoost不仅支持CART,还支持线性分类器
;正则项
:XGBoost的目标函数里多了一项正则项
,这有利于防止过拟合,从而提高模型的泛化能力;损失函数
:传统GBDT只是对目标函数用到了一阶导数,而XGBoost则是引入二阶泰勒展开式进行求导。二阶展开式可以描述梯度变化方向是怎么变化的,能够让梯度收敛得更快;抽样
:XGBoost