回答思路
GBDT和XGBoost都属于集成学习(Ensemble Learning),集成学习的目的是通过结合多个基学习器的预测结果来改善单个学习器的泛化能力和鲁棒性。
GDBT是Gradient Boosting的缩写,和其它Boosting算法一样,通过将表现一般的数个模型(通常是深度固定的决策树)组合在一起来集成一个表现较好的模型。可以说Gradient Boosting = Gradient Descent + Boosting。
XGBoost的简称是XGB,由陈天奇(交大校友)提出的一种集成学习模型,属于boosting方法,可以通过减少偏差的方法,将若干弱学习器组合成强学习器,在各大竞赛中都展现了强大的威力。
两者的主要不同在于:
1.基分类器的选择:传统的GBDT以CART树作为基学习器,XGBoost还支持线性分类器,这个时候XGBoost相当于L1和L2正则化的逻辑斯蒂回归(分类)或者线性回归(回归);
2.梯度信息:传统的GBDT在优化的时候只用到一阶导数信息,XGBoost则对代价函数进行了二阶泰勒展开,得到一阶和二阶导数;另外,xgboost工具支持自定义代价函数,只要函数可一阶和二阶求导。
3.正则项:XGBoost在代价函数中加入了正则项,用于控制模型的复杂度。从权衡方差偏差来看,它降低了模型的方差,使学习出来的模型更加简单,减轻过拟合,这也是XGBoost优于传统GBDT的一个特性;
4.学习率:shrinkage(缩减),相当于学习速率(XGBoost中的eta)。XGBoost在进行完一次迭代时,会将叶子节点的权值乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间。(GBDT也有学习速率);
5.列抽样(column subsampling)。xgboost借鉴了随机森林的做法,支持列抽样,不仅能降低过拟合,还能减少计算,这也是xgboost异于传统gbdt的一个特性。
6.并行化:传统GBDT由于树之间的强依赖关系是无法实现并行处理的,但XGBoost工具支持并行。
7.除此之外,Xgboost实现了分裂点寻找近似算法、缺失值处理等包括一些工程上的优化,LightGBM是Xgboost的更高效实现。