XGBoost(eXtreme Gradient Boosting)是GBDT方法的一种高效、灵活、便携的工程化实现。

注意,XGBoost不是一种算法的名称,而是同属于GBDT框架下,一种Boosting的思想。另外,随着代码版本的迭代,很多新特性也被借鉴进来,比如LightGBM中的直方图方法,在2017年就被加入到了XGBoost中。

相比传统的GBDT实现,XGBoost(以版本1.4.2为例)区别有以下几点:

1、XGBoost损失函数使用二阶泰勒展开作为近似。

2、支持自定义损失函数,需要函数一阶和二阶可导。

3、加入了更多的正则项,比如除了叶子节点权重的 L2 范式,还有树的叶子节点个数。

4、缺失值处理。

5、列抽样。

6、更多的树方法(Tree Method),传统的GBDT在选择树的分割点时,通常是遍历每个特征的每种取值,XGBoost支持更多的树方法,除了传统GBDT的精确(exact)方法,还增加了近似(approx)和直方图(hist)方法。

下面详细说说这些区别。

缺失值处理

在scikit-learn 0.24.2本身实现的GBDT,如果特征存在缺失值,模型训练时会报错。

列抽样

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐