首页 > 试题广场 >

说说XGBoost和GBDT的不同

[问答题]
说说XGBoost和GBDT的不同
推荐
GBDT和XGBoost都属于集成学习(Ensemble Learning),集成学习的目的是通过结合多个基学习器的预测结果来改善单个学习器的泛化能力和鲁棒性。
GDBT 是Gradient Boosting的缩写,和其它 Boosting 算法一样,通过将表现一般的数个模型(通常是深度固定的决策树)组合在一起来集成一个表现较好的模型。可以说 Gradient Boosting = Gradient Descent + Boosting。
XGBoost的简称是XGB,由陈天奇(交大校友)提出的一种集成学习模型,属于boosting方法,可以通过减少偏差的方法,将若干弱学习器组合成强学习器,在各大竞赛中都展现了强大的威力。
两者的主要不同在于:
  1. 基分类器的选择:传统的GBDT以CART树作为基学习器,XGBoost还支持线性分类器,这个时候XGBoost相当于L1和L2正则化的逻辑斯蒂回归(分类)或者线性回归(回归);
  2. 梯度信息: 传统的GBDT在优化的时候只用到一阶导数信息,XGBoost则对代价函数进行了二阶泰勒展开,得到一阶和二阶导数;另外,xgboost工具支持自定义代价函数,只要函数可一阶和二阶求导。
  3. 正则项:XGBoost在代价函数中加入了正则项,用于控制模型的复杂度。从权衡方差偏差来看,它降低了模型的方差,使学习出来的模型更加简单,减轻过拟合,这也是XGBoost优于传统GBDT的一个特性;
  4. 学习率:shrinkage(缩减),相当于学习速率(XGBoost中的eta)。XGBoost在进行完一次迭代时,会将叶子节点的权值乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间。(GBDT也有学习速率);
  5. 列抽样(column subsampling)。xgboost借鉴了随机森林的做法,支持列抽样,不仅能降低过拟合,还能减少计算,这也是xgboost异于传统gbdt的一个特性。
  6. 并行化:传统GBDT由于树之间的强依赖关系是无法实现并行处理的,但XGBoost工具支持并行。
  7. 除此之外,Xgboost实现了分裂点寻找近似算法、缺失值处理等包括一些工程上的优化,LightGBM是Xgboost的更高效实现。

延伸考点

集成学习有哪两种典型的思路?
提示:boosting 和 bagging。
编辑于 2021-09-15 18:16:05 回复(0)
第一,GBDT将目标函数泰勒展开到一阶,而xgboost将目标函数泰勒展开到了二阶。保留了更多有关目标函数的信息,对提升效果有帮助。第二,GBDT是给新的基模型寻找新的拟合标签(前面加法模型的负梯度),而xgboost是给新的基模型寻找新的目标函数(目标函数关于新的基模型的二阶泰勒展开)。第三,xgboost加入了和叶子权重的L2正则化项,因而有利于模型获得更低的方差。第四,xgboost增加了自动处理缺失值特征的策略。通过把带缺失值样本分别划分到左子树或者右子树,比较两种方案下目标函数的优劣,从而自动对有缺失值的样本进行划分,无需对缺失特征进行填充预处理。
发表于 2022-09-06 16:38:06 回复(0)
1.GBDT使用cart基分类器 xgboost支持多种分类器
2.GBDT是机器学习算法 Xgboost工程实现
3.GBDT只用到了一阶导 通过负梯度来拟合 着重于寻找新的标签 XGBoost 泰勒二阶展开  需按照新的目标函数
4.GBDT每次用所有的训练集 xgboost 采用随机森林的策略 部分采样数据
5.xgboost加入了正则项 泛化性好
6.xgboot缺失值处理 自动学习
发表于 2022-09-13 00:33:16 回复(0)