Xgboost和GBDT有什么异同?

本文阅读 3 分钟
首页 知识库 正文

GBDT是机器学习算法,XGBoost是该算法的工程实现
传统GBDT以CART作为基分类器,XGBoost还支持线性分类器,这个时候XGBoost相当于带L1和L2正则化项的Logistic回归(分类问题)或者线性回归(回归问题)。
传统的GBDT只用了一阶导数信息(使用牛顿法的除外),而XGBoost对损失函数做了二阶泰勒展开。并且XGBoost支持自定义损失函数,只要损失函数一阶、二阶可导。
在使用CART作为基分类器时,XGBoost的目标函数多了正则项控制模型复杂度, 相当于预剪枝,使得学习出来的模型更加不容易过拟合。
传统的GBDT在每轮迭代时使用全部数据,XGBoost则采用了与随机森林相似的策略,支持对数据进行采样(行采样和列采样)。
对缺失值的处理。传统的GBDT没有涉及对缺失值进行处理,XGBoost能够自动学习出缺失值的处理策略。
XGBoost工具支持并行。当然这个并行是在特征的粒度上,而非tree粒度,因为本质还是boosting算法。我们知道,决策树的学习最耗时的一个步骤是对特征的值进行排序(因为要确定最佳分割点)。xgboost在训练之前,预先对数据进行了排序,然后保存为block结构,后面的迭代中重复地使用这个结构,大大减小计算量。这个block结构也使得并行成为可能。在进行节点分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行。
可并行的近似直方图计算。

解压密码: detechn或detechn.com

免责声明

本站所有资源出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。

本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户自行鉴别,做一个有主见和判断力的用户。

本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。

算法:用kd树的最近邻搜索
« 上一篇 07-11
为什么xgboost训练会那么快,主要优化点是什么?
下一篇 » 07-11

发表评论