主要是看看随机森林,GBDT,XGBoost这些基于树的集成方法之间的异同。
随机森林(RF)
- Bagging思想
- 利用Boostrap采样,从样本中选取不同的集合构造决策树,整个过程可以并行;
- Boostrap采样方式带来了一个优势,能留下32%的数据从未被用过,可以用来进行包外估计
- 两种扰动方式,样本扰动和属性扰动,增加了模型的多样性以及最终的泛化能力
- 最终结果的得出:分类问题用投票,回归问题用平均
- 随机森林由于行采样增加扰动,所以每次都是完全建树,分到不能分为止,而且最后不用剪枝
- 偏差方差分解角度,Bagging降低方差
GBDT
- Boosting方法,与Bagging相区别,串行化建树过程,基学习器之间具有强依赖性
- AdaBoost也是Boosting方法,区别在于AdaBoost每次是通过改变样本的权重进行学习,而GBDT中是样本是没有权重的
- GBDT可以认为是函数空间的梯度下降,每次寻找使损失函数下降最快的方向,这也是梯度的由来。但是其本质是拟合前面得到的模型的残差
- GBDT的并行不可以从树的层面做,但是在特征选择层面是可以的
- GBDT中每一棵树都是回归树(CART)
- 降低偏差。在训练的时候,设置树的深度很小的时候,也可以达到很好的效果。
- shrikage,小步逼近,防止过拟合
XGBoost
- 基于GBDT的框架,Boosting思想
- 基学习器可以选择树(gbtree),也可以使用线形分类器(gblinear)
- 自带正则的目标函数,L1+L2,L1是对叶结点数量的限制,L2是对叶结点输出值的限制,防止过拟合
- 通过利用泰勒的二阶展开,对目标函数进行近似,从而提出了一种应用更为广泛的分裂评价指标,凡是目标函数可以进行二阶泰勒展开的都可以用,level-wise
- 支持shrinkage,列采样,行采样,都可以防止过拟合,通常列采样效果好于行采样
- 可以处理缺失值,通过学习寻找最优的划分方向
- 并行加速是通过对特征值进行排序/直方图,事先计算好存为block,以后用的时候直接查表即可