GBDT、Xgb、Lgb对比以及常见面试题
之前写了一点RF的东西,作为决策树+bagging的模型自然经常会被拉出来和决策树+boosting的模型进行对比;而GBDT、Xgb、Lgb一系列的产物正式这种思路加上一些改进的工程产物,所以就一起放出来对比说明了。
GBDT
特点
GBDT 是梯度提升树(Gradient Boosting Decison Tree)的简称,GBDT 通过多轮迭代,每轮迭代产生一个弱分类器(二叉CART树,节点分裂标准是使得损失函数平方误差最小),每个分类器在上一轮分类器的残差基础上进行训练。对弱分类器的要求一般是足够简单,并且是低方差和高偏差的。因为训练的过程是通过降低偏差来不断提高最终分类器的精度。
并且GBDT的对样本的预测值是对所有树的加权平均,而每棵树的预测结果是样本对应的叶子节点的均值。(GBDT用于分类任务时也是按照回归的思想做的,像LR那样去预测对数几率的数值)
残差
GBDT迭代拟合的残差是当前模型损失函数的负梯度了一种通用的拟合损失误差的办法,这样无轮是分类问题还是回归问题,我们通过其损失函数的负梯度的拟合,就可以用GBDT来解决我们的分类回归问题。区别仅仅在于损失函数不同导致的负梯度不同而已。(类似梯度下降那样慢慢靠近)
正则化
正则化的话可以用步长(相当于各个树结果相加时的权重,和最大迭代次数配合使用),子采样比例,剪枝等操作。
Xgb
特点
Xgb是GBDT思想的一个工程实现,传统GBDT以CART作为基分类器,Xgb还支持线性分类器,这个时候xgboost相当于带L1和L2正则化项的LR(分类问题)或者线性回归(回归问题)。传统GBDT在优化时只用到一阶导数信息,xgboost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数(联想梯度下降法和牛顿法求解最优化问题)有利于梯度下降的更快更准。