前置技能
决策树and回归树
https://www.jianshu.com/p/479e92cf4c2c
https://www.jianshu.com/p/b90a9ce05b28
关于集成学习
集成学习就是将多个弱的学习器结合起来组成一个强的学习器。这就涉及到,先产生一组‘个体学习器’,再用一个策略将它们结合起来。Boosting、bagging是集成学习的两种主要方法。
(这个有一个教程: https://www.jianshu.com/p/389d28f853c0)
boosting
boosting方法通过分步迭代的方式来构建模型,在迭代的每一步构建的弱学习器都是为了弥补已有模型的不足。
boosting 里面有两种常见的方法:
区别在于 :
AdaBoost算法通过给已有模型预测错误的样本更高的权重,使得先前的学习器做错的训练样本在后续受到更多的关注的方式来弥补已有模型的不足。
与AdaBoost算法不同,梯度提升方法在迭代的每一步构建一个能够沿着梯度最陡的方向降低损失(steepest-descent)的学习器来弥补已有模型的不足。(我的理解是 :Boosting的最大好处在于,每一步的残差计算其实变相地增大了分错instance的权重,而已经分对的instance则都趋向于0。)经典的AdaBoost算法只能处理采用指数损失函数的二分类学习任务,而梯度提升方法通过设置不同的可微损失函数可以处理各类学习任务(多分类、回归、Ranking等),应用范围大大扩展。
GBDT
GBDT ( gradient boosting decision tree )是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来做最终答案。它在被提出之初就和SVM一起被认为是泛化能力较强的算法。xgboost
XGBoost是一个优秀的GBDT开源软件库,有多种语言接口 。换句话说,xgboost的核心算法就是GBDT。
关于GBDT, 参考了这个教程 :
https://www.zybuluo.com/yxd/note/611571#gbdt%E7%AE%97%E6%B3%95
https://www.jianshu.com/p/005a4e6ac775
https://blog.csdn.net/suranxu007/article/details/49910323
关于xgb, 参考了这个教程 :
https://www.jianshu.com/p/7e0e2d66b3d4
https://www.jianshu.com/p/5709fa18cdb4
https://www.jiqizhixin.com/articles/2017-12-24-5
https://jiasuhui.com/article/14479
bagging
bagging:bootstrap aggregating 的缩写,是一种并行式集成学习方法,可用于二分类,多分类,回归等任务。
https://www.jianshu.com/p/907fecc7135c
Bagging 和 Boosting 的区别
- 样本选择:Bagging 的训练集是在原始集中有放回选取的,各轮训练集之间是独立的,每个样例的权重相等;Boosting 的训练集不变,只是每个样例在分类器中的权重发生变化,错误的样本会得到更大的重视;
- Bagging 的预测函数没有权重之分;Boosting 的预测函数是有权重之分,效果好的函数权重大;
- Bagging 的各个预测函数并行产生,容易 map-reduce ,Boosting 的预测是顺序产生,后一个模型参数需要前一轮模型的结果。
参考文献: