集成学习
- 概述
- 一、Boosting
- 1、Boosting
- 2、GBDT (Gradient Boosting Decision Tree)
- 3、XGBoost(Extreme Gradient Boosting)
- 二、Bagging 与 Random Forest
- 1、Bagging
- 2、RF(Random Forest)
概述
集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务。
要获得好的集成,个体学习器应该“好而不同
”
集成学习分类:
个体学习器间存在强依赖关系,必须串行生成的序列化方法:Boosting
个体学习器间不存在强依赖关系,可以同时生成的并行化方法:Bagging、随机森林(Random Forest)
一、Boosting
1、Boosting
工作机制:先从初始训练集训练出一个基学习器,然后根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本再后续会受到更多关注
,然后基于调整后的训练样本分布来训练下一个基学习器;如此重复进行,直至基学习器数量达到事先指定的值T,最终结果是将这T个基学习器进行加权结合
。
从偏差-方差的角度看,Boosting 主要关注降低偏差
。
【Boosting 族算法最著名的代表是 AdaBoost,即基学习器的线性组合】
2、GBDT (Gradient Boosting Decision Tree)
GBDT(梯度提升决策树)与传统的Boosting区别较大,它的每一次计算都是为了减少上一次的残差,而为了消除残差,我们可以在残差减小的梯度方向上建立模型。所以说,在GradientBoost中,每个新的模型的建立是为了使得之前的模型的残差往梯度下降的方向
,与传统的Boosting中关注正确错误的样本加权有着很大的区别。
在GradientBoosting算法中,关键就是利用损失函数的负梯度方向在当前模型的值作为残差的近似值,进而拟合一棵CART回归树。
GBDT的会累加所有树的结果,而这种累加是无法通过分类完成的,因此GBDT的树都是CART回归树,而不是分类树(尽管GBDT调整后也可以用于分类但不代表GBDT的树为分类树)。
优点:
- 它能灵活的处理各种类型的数据;
- 在相对较少的调参时间下,预测的准确度较高。
- 预测阶段的计算速度快,树与树之间可并行化计算。
- 在分布稠密的数据集上,泛化能力和表达能力都很好。
- 采用决策树作为弱分类器使得GBDT模型具有较好的解释性和鲁棒性,能够自动发现特征间的高阶关系。
缺点:
- 由于它是Boosting,因此基学习器之前存在串行关系,难以并行训练数据
- GBDT在高维稀疏的数据集上,表现不如支持向量机或者神经网络。
- GBDT在处理文本分类特征问题上,相对其他模型的优势不如它在处理数值特征时明显。
- 训练过程需要串行训练,只能在决策树内部采用一些局部并行的手段提高训练速度。
3、XGBoost(Extreme Gradient Boosting)
XGBoost的性能在GBDT上又有一步提升,能够自动地运用CPU的多线程进行并行计算
,同时在算法精度上也进行了精度的提高。
由于GBDT在合理的参数设置下,往往要生成一定数量的树才能达到令人满意的准确率,在数据集较复杂时,模型可能需要几千次迭代运算。但是XGBoost利用并行的CPU更好的解决了这个问题。
其实XGBoost和GBDT的差别也较大,这一点也同样体现在其性能表现上,详见XGBoost与GBDT的区别。
二、Bagging 与 Random Forest
为了获得“好而不同”的基学习器,可以考虑使用相互有交叠的采样子集。
自助采样法(bootstrap sampling):m 个样本数据集进行有放回的 m 次抽样得到一个采样集(初始训练集中约有63.2%的样本出现在采样集中)
1、Bagging
Bagging 直接基于自助采样法,采样出 T 个含有 m 个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些学习器进行结合。在对预测输出进行结合时,通常对分类任务使用简单投票法,对回归任务使用简单平均法
。
优点:
- 与标准AdaBoost只适用于二分类任务不同,Bagging能不经修改地用于多分类、回归。
- 自助采样中剩余的约36.8%的样本有很多别的用处,如:用作验证集进行“包外估计”,决策树的辅助剪枝,估计决策树各结点的后验概率辅助对零训练样本结点的处理。神经网络的辅助及早停止以减小过拟合。
2、RF(Random Forest)
Random Forest 是Bagging的扩展变体,它在以决策树 为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机特征选择,因此可以概括RF包括四个部分:
- 随机选择样本(放回抽样);
- 随机选择特征;
- 构建决策树;
- 随机森林投票(平均)。
随机选择样本和Bagging相同,随机选择特征是指在树的构建中,会从样本集的特征集合中随机选择部分特征,然后再从这个子集中选择最优的属 性用于划分,这种随机性导致随机森林的偏差会有稍微的增加(相比于单棵不随机树),但是由于随机森林的‘平均’特性,会使得它的方差减小
,而且方差的减小补偿了偏差的增大,因此总体而言是更好的模型。
优点:
- 在数据集上表现良好,相对于其他算法有较大的优势(训练速度、预测准确度)
- 能够处理很高维的数据,并且不用特征选择,而且在训练完后,给出特征的重要性
- 容易做成并行化方法。
缺点:在噪声较大的分类或者回归问题上会过拟合。
RF和Bagging对比:
RF的起始性能较差,特别当只有一个基学习器时,随着学习器数目增多,随机森林通常会收敛到更低的泛化误差。随机森林的训练效率也会高于Bagging,因为在单个决策树的构建中,Bagging使用的是‘确定性’决策树,在选择特征划分结点时,要对所有的特征进行考虑,而随机森林使用的是‘随机性’特征数,只需考虑特征的子集。
RF(随机森林)与GBDT对比:
相同点:
- 都是由多棵树组成,最终的结果都是由多棵树一起决定。
- RF和GBDT在使用CART树时,可以是分类树或者回归树。
不同点:
- 组成随机森林的树可以并行生成,而GBDT是串行生成
- 随机森林的结果是多数表决表决的,而GBDT则是多棵树累加之和
- 随机森林对异常值不敏感,而GBDT对异常值比较敏感
- 随机森林是减少模型的方差,而GBDT是减少模型的偏差
- 随机森林不需要进行特征归一化。而GBDT则需要进行特征归一化(因为GBDT的树是在上一颗树的基础上通过梯度下降求解最优解,归一化能收敛的更快,而随机森林本来就是通过减少方差提高性能的,树之间建立关系是独立的,不需要归一化)