集成学习,简单的来讲就是构建多个弱分类器对数据集进行预测,然后用某种策略将多个弱分类器的预测结果集成起来。
集成学习要求每个弱分类器有一定的准确性,且各个分类器之间具备一定的差异性。
根据各个分类之间有无依赖关系,集成学习可以分为Boosting,Bagging两大流派。
Boosting流派:各个分类器之间有依赖关系,必须串行。典型的如AdaBoost,GBDT,XGBoost。
Bagging流派:各个分类器之间没有依赖关系,可各自并行。典型的如随机森林。
简单介绍一下常见的分类器:
一.Boosting流派:
1.AdaBoost(Adaptive Boosting)
全称自适应增强,最早提出于1995年。
AdaBoost的自适应在于:前一个弱分类器分错的样本权重会得到增强,加权后全体样本再次被用来训练下一个弱分类器。同时,每一轮加入一个新的弱分类器,直到达到某个预定的足够小的错误率或者达到最大迭代次数。
AdaBoost的训练过程为:1.初始化训练数据的权值分布。若有N个样本,则每个样本最开始都被赋予相同的权重:1/N;2.训练弱分类器。若某个样本点已被准确分类,则构造下一个训练集时,权值降低,反之则提高。权值更新过的样本集被用于训练下一个弱分类器,迭代进行;3.将各个训练得到的弱分类器组合成强分类器。训练结束后,加大分类误差率小的分类器的权重,降低分类误差率大的分类器的权重。即误差率低的弱分类器在最终的分类器中占的权重较大。
AdaBoost的实例推荐看这个博客 AdaBoost实例。
2.GBDT(Gradient Boost Decision Tree)
全称梯度下决策树。
GBDT的每一次计算都是为了减少上一次的残差,进而在残差减少(负梯度)的方向上建立一个新模型。
举个例子:如第一个样本为[(2,4,5)->4],即输入为2,4,5;标签为4。而决策树1的预测结果为3.3。则接下来决策树2的样本标签就会更新为[(2,4,5)->0.7]。依此迭代进行,直到构建完成。
回归树形成的关键点在于:1.分裂点依据什么来划分(均方误差最小,loss);2.分类后的节点预测值多少。
3.XGBoost
XGBoost主要是改进了GBDT。相比GBDT,XGBoost更快,且准确率更高。
XGBoost和GBDT的主要不同在于目标函数的定义。