题目标题

xgboost和GBDT有什么区别

难度:中级

机器学习
参考解析

a. GBDT 以 CART 作为基分类器,xgboost 还支持线性分类器.

b. GBDT在优化时只用到一阶导数信息,xgboost 则对损失函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。(xgboost 支持自定义一阶和二阶导数,即自定义损失函数).

c. xgboost在代价函数里加入了正则项(对每棵树的叶子节点个数和权重都做了惩罚),用于控制模型的复杂度。

d.Shrinkage(缩减),相当于学习速率(xgboost中的eta)。主要是为了削弱每棵树的影响,让后面有更大的学习空间.

e.列抽样(column subsampling)。xgboost借鉴了随机森林的做法,支持列抽样,不仅能降低过拟合,还能减少计算.

f.对于特征的值有缺失的样本,xgboost可以自动学习出它的分裂方向。

g.可并行的近似直方图算法。树节点在进行分裂时,我们需要计算每个特征的每个分割点对应的增益,即用贪心法枚举所有可能的分割点。当数据无法一次载入内存或者在分布式情况下,贪心算法效率就会变得很低,所以xgboost还提出了一种可并行的近似直方图算法,用于高效地生成候选的分割点。

h.xgboost工具支持并行。