本文为阅读西瓜书的总结笔记。部分参考懒死骆驼
何为集成学习
集成学习通过构建并结合多个学习器来完成学习任务。先训练一组个体学习器,再通过策略将其结合起来。
集成学习的关键
如何使多个学习器的结合比单一学习器性能优越?关键在于学习器的多样性与准确性。
即个体学习器需要有一定的准确性,不能太坏,同时又需要有多样性,个体之间要有差异。但多样性与准确性往往相互冲突。
如何产生并结合好而不同的个体学习器是集成学习的核心。
集成学习的分类
目前集成学习主要可分为2大类,即:
- boosting:弱学习器之间存在强依赖关系,必须串行生成的序列化方法。
- bagging:弱学习器之间不存在强依赖关系,可以并行生成。
bagging和boosting分别是关注降低方差和降低偏差的两个代表,GDBT的每棵树生成都要比上棵树偏差小。
boosting
首先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多的关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权组合。
举个例子:输入数据$(\mathbf{x},\mathbf{y})$,通过一个弱学习器得到 $f_1(\mathbf{x})=\mathbf{y^*}$ ,为了使$f(x) \rightarrow \mathbf{y}$,则可用第二个学习器学习之前学习器的“误差”(不足) $\mathbf{y}-f_1(x)$,即用数据$(\mathbf{x},\mathbf{y}-f_1(x))$训练学习器$f_2(\mathbf{x})$,不停训练下去,直到误差小于一定值或迭代达上限步数。
代表Adaboost
首先看Adaboost如何解决集成学习中的关键问题:
- 在得到一系列弱分类器后,如何将弱分类器组合成一个强分类器?
- 答:有很多方法,比较基础的是线性加权模型$H(x)=\sum\limits_{t=1}^{T}\alpha_th_t(x)$
- 在每一轮训练中,如何改变训练数据的权值/概率分布?
- 提高那些被前一轮弱分类器错误分类样本的权值,而降低那些被正确分类样本的权值。(让被错误分类的样本得到当前弱分类器更多的关注)
Adaboost的核心便在于更新这2个权值,一个是弱分类器结合成强分类器的权值,另一个是训练下一个弱分类器的时,样本所占的权值(分类错误的样本更受关注)。
算法流程(来自西瓜书):
Adaboost算法在每次得到$H_{t-1}$之后对样本分布进行调整,使下一轮的基学习器能够纠正$H_{t-1}$的错误。
bagging
bagging方法的基本思想是:使用不同的训练集训练基学习器,可以使学习器差异化,可以采用有放回的抽样方式,可以采样出T个训练集,并训练T个基学习器。对预测输出进行结合时,通常采用投票法,对回归分析则采用简单平均法。
优点
- 高效(训练一个bagging集成与训练一个基学习器复杂度同阶)
- 与Adaboost不同,bagging可以不经修改地适用于多分类以及回归问题
- 包外估计——自助采样过程中剩余的样本可以作为验证集来对泛化性能进行“包外估计”
- 当基学习器为决策树时,还可使用包外样本来辅助剪枝,或用于估计决策树中各结点的后验概率以辅助对零训练样本节点的处理。
- 当基学习器为神经网络时,可使用包外样本来辅助早停。
从偏差-方差角度看,Bagging主要关注降低方差,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效用更为明显。
拓展变体:随机森林(rf)
概念
就如同名字一样,rf是以决策树为基学习器的bagging集成,为保持多样性,rf在决策树的训练过程中引入了随机属性选择。具体差异为:
- 传统决策树在划分节点时,将从当前节点的属性集合(假定有d个属性)中选择一个最优节点划分方式。
- rf的决策树在属性划分时,将从当前节点的属性集合(假定有d个属性)随机选择k个,然后选择一个最优属性。
与bagging比较
- 随机属性选择有助于提升决策树的多样性,但对单个决策树而言性能将会下降(不一定能选择最优属性划分),因此rf初始性能较差。随着个体学习器的增加,rf将收敛到更低的训练误差(相较于传统bagging)
- 训练效率更快,因为只对节点的属性子集进行考察。
结合策略
学习器结合的好处
- 统计的角度:假设空间很大时,可能存在多个假设在训练集上达到同等性能,但学习其可能误选导致泛化性能不佳,结合多个学习器可以减小该风险
- 计算的角度:降低陷入糟糕局部极小点的风险
- 表示的角度:结合多个学习器可扩大假设空间,对于真实假设在假设空间之外的情形可能学得更好的近似
结合策略
- 平均法(Averaging)
- 简单平均法
- 加权平均法——BMA(贝叶斯模型平均:基于后验概率来为不同模型赋予权重)
- 投票法(Voting)
- 多数投票法
- 绝对多数投票法:若某标记得票过半数则预测为该标记,否则拒绝预测(可靠性)
- 相对多数投票法:预测为得票最多的标记
- 加权投票法
- 若按个体学习器输出值类型划分
- 硬投票:预测为0/1
- 软投票:相当于对后验概率的一个估计
- 多数投票法
- 学习法
Stacking:先从初始数据集训练出初级学习器,然后生成一个新的数据集用于训练元学习器,在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记;一般使用交叉验证法或留一法来用训练初级学习器未使用的样本来产生元学习器的训练样本
多样性的增强方式
- 数据样本扰动(给定初始数据集,可从中产生不同的数据子集,再利用不同的数据子集训练出不同的个体学习器,通常基于采样法),适用于不稳定学习器:决策树、神经网络
- 输入属性扰动(从初始属性集中抽取若干个属性子集、基于每个属性子集训练一个基学习器(如随机子空间算法),最后结合),适用于包含大量冗余属性的数据
- 输出表示扰动(对输出表示进行操纵,比如1、对训练样本的类标记稍作变动(翻转法) 2、对输出表示进行转化,如输出调制法 3、将原任务拆解成多个可同时求解的子任务,如Ecoc法)
- 算法参数扰动(随机设置不同的参数,比如 1、负相关法 2、对参数较少的算法,可将其学习过程中某些环节用其他类似方式替代)