随机森林(random forest)和GBDT都是属于集成学习(ensemble learning)的范畴。集成学习下有两个重要的策略Bagging和Boosting。
1 Bagging和Boosting含义
Bagging算法是这样做的:每个分类器都随机从原样本中做有放回的采样,然后分别在这些采样后的样本上训练分类器,然后再把这些分类器组合起来。简单的多数投票一般就可以。其代表算法是随机森林。
Boosting的意思是这样,他通过迭代地训练一系列的分类器,每个分类器采用的样本分布都和上一轮的学习结果有关。其代表算法是AdaBoost, GBDT,xgboost。
大多数boost方法会改变数据的概率分布(改变数据权值),adaboost具体是提高前一轮训练中被错分类的数据的权值,降低正确分类数据的权值,使得被错误分类的数据在下轮的训练中更受关注;然后根据不同分布调用弱学习算法得到一系列弱学习器实现的,再将这些学习器线性组合,具体组合方法是误差率小的学习器会被增大权值,误差率大的学习器会被减小权值。gbdt是每轮使用残差来学校。
2 偏差(拟合程度)方差(泛化能力)
Boosting主要关注降低偏差(用偏差不断迭代学习),因此Boosting能基于泛化性能相当弱的学习器构建出很强的集成;
Bagging主要关注降低方差(用很多简单模型,简单模型稳定,所以低方差),因此它在不剪枝的决策树、神经网络等学习器上效用更为明显。
3 为什么boosting模型要比bagging模型中树的深度要浅?
对于Bagging算法来说,由于我们会并行地训练很多不同的分类器的目的就是降低这个方差(variance) ,因为采用了相互独立的基分类器多了以后,h的值自然就会靠近.所以对于每个基分类器来说,目标就是如何降低这个偏差(bias),所以我们会采用深度很深甚至不剪枝的决策树。
对于Boosting来说,每一步我们都会在上一轮的基础上更加拟合原数据,所以可以保证偏差(bias),所以对于每个基分类器来说,问题就在于如何选择variance更小的分类器,即更简单的分类器,所以我们选择了深度很浅的决策树。
https://www.jianshu.com/p/005a4e6ac775