当前位置 博文首页 > dastu的博客:xgboost与gdbt区别比较
1.从本质上看
gbdt是机器学习算法的一种,xgboost是该算法的具体工程实现
2.基分类器
gbdt采用cart作为基分类器,而xgboost的基分类器可以是线性的
3.防止过拟合
xgboost在目标函数中显式的加入了正则化项来控制模型的复杂度
4.数据的使用
gbdt每轮迭代都使用全部数据,xgboost则可以对数据进行采用
5.对缺失值处理
XGBOOST可以自动学习出缺失值的分裂方向
6.列抽样
XGBOOST可以支持类似于随机森林的列抽样
7.模型训练
GBDT在训练模型时中使用了代价函数的一阶导数信息,而XGBOOST将代价函数进行了二次展开,使用了二阶导数的信息。
8.并行方式
两个模型从迭代上都不是并行的,因为同属于boosting,只能是串行的,但是从特征的粒度来看,xgboost可以实现并行。
决策树在确定最佳分割点时,需要对特征的值进行排序。XGBoost在训练之前,预先对数据进行了排序,然后保存为block(块)结构,后面的迭代中重复地使?这个结构,?大减小计算量。这个block结构也使得并行成为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行。
以上都是本人通过各种方式学习后总结了两者的一些不同。
cs