RF、GBDT、XGBoost都属于集成学习。
通过结合多个基学习器都预测结果来改善单个学习器的泛化能力。
集成学习分为两大类:
- boosting:个体学习器之间存在强依赖关系、必须串行生成的序列化方法。
- bagging:个体学习器之间不存在强依赖关系,可同时生成的并行化方法。
RF:
提到随机森林就不得不提Bagging。
Bagging简单理解为,放回抽样、多数表决。
1、随机选择样本(放回抽样,每棵树采用60%样本)
2、随机选择特征,每个决策树只选特征集合的子集,然后再采用最优划分。
3、构建决策树,每棵决策树最大可能生长不剪枝,过拟合。
4、随机森林投票,分类任务采用简单投票法,回归任务采用简单平均法。
起始性能较差,随着学习器数目增多,收敛到更低的泛化误差。
在噪声较大的分类或回归问题上容易过拟合。
能够处理高纬数据,在训练完毕后,给出特征的重要性。
GBDT:
不得不提boosting。
每个新分类器根据已经训练的分类器的性能来训练。
Boosting通过关注被已有分类器错分的那些数据来获得新的分类器。
(注意:错分的数据)
每一次计算都是为了减少上一次的残差。
GradientBoost中,使之前的模型残差往梯度下降的的方法。
利用损失函数的负梯度在当前模型的值作为残差的近似值,进而拟合一颗CART回归树。
GBDT都是CART回归树、而不是分类树。
优点:灵活处理各类型数据。
缺点:难以并行训练数据。
XGB:
最大的认知在于其能够自动运用CPU多线程进行并行计算。
GBDT在优化时只用到一阶导数,XGB对代价函数进行二阶太累展开,得到一阶和二阶导数。
XGB在代价函数中加入了正则项,用于控制模型对复杂度。
shrinkage(缩减),相当于学习率,XGB在进行完一次迭代时,会将叶子节点的权值乘上该系数,消弱每棵树的影响,让后面有更大的学习空间。
XGB对分裂节点处理上做了优化。