Xgboost与Gbdt的区别

  1. GBDT以CART作为基分类器,CART以gini指数选择特征,gini指数越小,纯度越高。离散特征会依次将每个取值作为分割点计算gini系数,连续特征会依次将连续两个值的中间值作为分割点,将数据分割为S1和S2两部分,并计算该分割点的gini增益为S1和S2方差之和,随后选取gini增益最小的值作为分割点,并当做离线特征计算该特征的gini系数,最后取gini指数最小的作为最优特征与最优切分点。Xgboost还支持线性分类器,相当于带L1和L2正则化项的LR。
  2. GBDT在优化时只用到一阶导数信息,Xgboost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数,具有更高的精度。此外,Xgboost工具支持自定义代价函数,只要函数可一阶和二阶求导。
  3. Xgboost在代价函数里加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数、每个叶子节点上输出的score的L2模的平方和。
  4. Xgboost具有学习速率衰减特性,具体为eta参数,在进行完一次迭代后,会将叶子节点的权重乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间。
  5. Xgboost借鉴了随机森林的做法,支持列抽样,不仅能降低过拟合,还能减少计算量。
  6. 对于特征的值有缺失的样本,Xgboost能自动学习出它的分裂方向。
  7. Xgboost工具支持并行,并行是在特征粒度上的。通常来说,决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点) ,Xgboost在训练之前,预先对数据进行了排序,然后保存为block结构,后面的迭代中重复地使用这个结构,大大减小计算量。这个block结构也使得并行成为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行。
  8. 可并行的近似直方图算法。树节点在进行分裂时,我们需要计算每个特征的每个分割点对应的增益,即用贪心法枚举所有可能的分割点。当数据无法一次载入内存或者在分布式情况下,贪心算法效率就会变得很低,所以xgboost还提出了一种可并行的近似直方图算法,用于高效地生成候选的分割点。

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值