一、什么是集成学习?
集成学习通过构建并结合多个学习器来完成学习任务,集成学习的一般结构:先产生一组“个体学习器”,再用某种策略将它们结合起来。
二、集成学习的分类
根据个体学习器的生成方式,目前的集成学习方法大致可分为两大类,即个体学习器间存在强依赖关系、必须串行生成的序列化方法;以及个体学习器间不存在强依赖关系,可同时生成的并行化方法。前者的代表是Boosting,后者的代表是Bagging和随机森林(random forest)。Bagging是为了让集成模型比单一模型更加正则化,而Boosting构建比单个模型容量更高的集成模型。
三、Boosting
Boosting是一组可将弱学习器提升为强学习器的算法,这族算法的工作机制类似:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续得到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。
Boosting算法要求基学习器能够对特定的数据分布进行学习,这可通过“重赋权法”实施,即在训练过程的每一轮,根据样本分布为每个训练样本重新赋予一个权重。对无法接受带权样本的及学习算法,则可通过“重采样法”来处理,即在每一轮学习中,根据样本分布对训练集重新进行采样,再用重采样而得的样本集对基学习器进行训练。
Boosting族算法最著名的代表是AdaBoost
从偏差-方差分解的角度分析,Boosting主要关注降低偏差,因此Boosting能基于泛化性能相当弱的学习器构建出很强的集成。
四、Bagging
Bagging基于自助采样法,即给定包含m个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样经过m次随机采样操作,我们得到含m个样本的采样集,初始训练集中有的样本在采样集中多次出现,有的从未出现。初始训练集中约有63.2%的样本会出现在采样集中。照这样可以构建T个含m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些学习器进行结合,这就是Bagging的基本流程。
例如:原始数据集为6、8、9,构建两个采样集可能分别为6、6、8和9、9,6.
在对预测输出进行结合时,Bagging通常对分类任务使用简单投票,对回归任务使用简单平均法。
从偏差-方差分解的角度看,Bagging主要关注降低方差,因此它在不剪枝决策树、神经网络等易受扰动的学习器上效用更加明显。
随机森林是Bagging的一个拓展变体,在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。泛化误差更低,训练效率更高。
Dropout可以被认为是集成大量深层神经网络的实用Bagging方法。区别在于Bagging情况下,每一个模型在其相应的训练集上训练到收敛,而在Dropout情况下,通常大部分模型都没有显式地被训练,因为父神经网络会很大,取而代之的是在单个步骤中我们训练一小部分的子网络,参数共享会使得剩余的子网络也能有好的参数设定。