1. gbdt以CART作为基分类器,xgb还支持线性分类器,这个时候xgb相当于带L1和L2正则项的LR或线性回归,(带正则可以控制模型的复杂度)
2. gbdt在优化时只用到一阶导数,xgb则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数,顺便,xgb支持支持自定义代价函数,只要函数一阶和二阶导数
3 .Shrinkage(缩减),相当于学习速率(xgb中的eta),xgb在进行完一次迭代后,会将叶子节点的权重乘上该系数,主要是为了削弱各棵树的影响,让后面有更大的学习空间
4. 列抽样(column subsampling),xgb借鉴了rf的做法,支持列抽样,不仅能降低过拟合,还能减少计算。
5. 对于特征的值有缺失的样本,xgb可以自动学习出它的分裂方向。
6.xgb支持并行(在特征粒度上并行(xgboost在训练之前,预先对数据进行排序,然后保存为block结构,后面的迭代中重复地使用这个结构,大大减小计算量,这个block结构也使得并行成为了可能,在进行节点分裂时,需要计算每个特征的增益,最终选择增益最大的那个特征去做分裂,那么各个特征的增益计算就可以并行化))
7. 可并行的近似直方图算法。树节点在进行分裂时,需要计算每个特征的每个分裂点对应的增益,即用贪心法枚举所有可能的分割点。当数据无法一次载入内存或者在分布式情况下,贪心算法效率会变得很低,所以xgb还提出了一种可并行的近似直方图算法,用于高效地生成候选的分割点。