在集成算法中,Adaboost, GBDT与XGBoost属于boosting的方式,Random Forest属于bagging的方式。
boosting和bagging的异同
相同之处:
- boosting和bagging都属于模型融合方法,将弱学习器组合成强学习器,提升预测效果。
不同之处:
- Bagging:从样本中有放回地随机抽样,组成N个训练样本,每个样本训练一个模型,对需要解决的问题通过投票(分类问题)或者求均值(回归问题)得到结果。每个模型相互独立,可以并行计算。
- Boosting:后一个模型的训练依赖于前一个模型的结果,模型之间需要顺序生成。Adaboost与(GBDT、XGBoost)的处理方式略有不同:Adaboost根据错误率调整样本权重(增大错分样本权重,降低争正确分类的样本权重),加入弱分类器进行融合;GBDT与XGBoost,通过不断减少残差,通过不断加入新的树,为了在减少残差(负梯度)的方向建立新的模型。
XGBoost的优势
- 借鉴了随机森林的算法,对样本、特征进行抽样,在降低过拟合的同时,减少计算量
- 可以自定义损失函数
- 有规范化的正则项,使训练出的模型不易过拟合
- 能够进行并行计算,内存缓存;此处的并行计算,并不是指树方向的并行,决策树非常耗时的一点就在于对特征进行排序&#