XGBoost 与 GBDT 的联系和区别有哪些?

51 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第二十二天,点击查看活动详情

总结:此文为12月更文计划第二十二天第三十七篇。

XGBoost 与 GBDT 的联系和区别有哪些?

image.png

然而从所有的树结构中寻找最优的树结构是一个 NP-hard 问题,因此在实际中 往往采用贪心法来构建出一个次优的树结构,基本思想是从根节点开始,每次对 一个叶子节点进行分裂,针对每一种可能的分裂,根据特定的准则选取最优的分 裂。不同的决策树算法采用不同的准则,如 ID3 算法采用信息增益,C4.5 算法为了 克服信息增益中容易偏向取值较多的特征而采用信息增益比,CART 算法使用基尼 指数和平方误差,XGBoost 也有特定的准则来选取最优分裂。 通过将预测值代入到损失函数中可求得损失函数的最小值

XGBoost 采用最大化这个差值作为准则来进行决策树的构建,通过遍历所有特 征的所有取值,寻找使得损失函数前后相差最大时对应的分裂方式。此外,由于 损失函数前后存在差值一定为正的限制,此时γ起到了一定的预剪枝效果。 除了算法上与传统的 GBDT 有一些不同外,XGBoost 还在工程实现上做了大量 的优化。总的来说,两者之间的区别和联系可以总结成以下几个方面。

( 1)GBDT 是机器学习算法,XGBoost 是该算法的工程实现。

( 2)在使用 CART 作为基分类器时,XGBoost 显式地加入了正则项来控制模 型的复杂度,有利于防止过拟合,从而提高模型的泛化能力。

( 3)GBDT 在模型训练时只使用了代价函数的一阶导数信息,XGBoost 对代 价函数进行二阶泰勒展开,可以同时使用一阶和二阶导数。

( 4)传统的 GBDT 采用 CART 作为基分类器,XGBoost 支持多种类型的基分类 器,比如线性分类器。

( 5)传统的 GBDT 在每轮迭代时使用全部的数据,XGBoost 则采用了与随机 森林相似的策略,支持对数据进行采样。

( 6)传统的 GBDT 没有设计对缺失值进行处理,XGBoost 能够自动学习出缺 失值的处理策略。