Random Forest、Adaboost、GBDT、XGBoost的区别是什么?
Random Forest是一种基于Bagging思想的Ensemble learning方法,它实际上就是Bagging + 决策树。Random Forest可以用来做分类也可以做回归,做分类时最后多棵树的分类器通过voting来决定分类结果;做回归时,由多棵树预测值的averaging来决定预测结果。
Adaboost是Boosting算法中的代表,它的思想也便是基于Boosting思想的。在adaboost的运算过程中,一开始在训练样本时,为每个子样本赋予一个权重,一开始这些权重都是相等的,然后在训练数据集上训练出一个弱分类器,并计算这个弱分类器在每个子样本上的错误率,在第二次对这同一数据集进行训练时,将会根据分类器的错误率对子数据集中各个权重进行调整,分类正确的权重降低,分类错误的权重上升,这些权重的总和不变。最终得到的分类器会基于这些训练的弱分类器的分类错误率来分配不同的决定系数,从而使权重更新时,错误样本具有更高的权重。最后以此来更新各个样本的权重,直至达到迭代次数或者错误率为0。所以Adaboost会对那些影响准确率的数据额外关注,从而会降低bias,而导致overfit。
GBDT也即是Gradient Boosting Decisioin Tree,中文是梯度提升决策树,它的基学习器是分类回归树CART。
XGBoost的基学习器除了GBDT中用到的CART还支持线性分类器。传统GBDT在优化时只用到一阶导数信息,xgboost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。XGBoost要比GBDT更快、效果更好。