集成学习
个体与集成
集成学习通过构造多个学习器来完成学习任务。集成学习的构造是先产生一组个体学习器,然后用某种策略将他们结合起来。
集成中只包含同类个体学习器,这样的集成是同质的,其个体学习器称为基学习器,学习算法也称为基学习算法。
集成中包含不同类的个体学习器,这样的集成是异质,其中的个体叫组件学习器或者直接称为个体学习器。
集成学习能够将多个学习器进行组合,常可以获得比单一学习器更加强的泛化能力,对弱学习器尤为明显,但往往使用较强的学习器。
以二分类问题为例
显然,分类器需要有一定的准确性和多样性。
假定基分类器的错误率相互独立,由hoeffding不等式可以得知,集成错误率随着基分类器个数的上升,趋近于0
现实任务中,个体学习器是从同一个问题中训练出来的,显然不可能相互独立。而学习器的准确性和多样性本就存在冲突。如何使得学习器好而不同是集成学习的研究核心。
现在的集成学习可以分为两类
个体学习器间存在强依赖关系、必须串行生成的序列化方法。如Boostring
个体学习器间不存在强依赖关系、可以同时生成的并行化方法。如Bagging和随机森林。
Boosting
Boosting是可以将弱学习器提升为强学习器的算法。这族算法的机制为:
从初始训练集中训练出一个基学习器,再根据基学习器的表现对训练样本进行分布调整,使得原本分错的样本得到更多的关注,然后使用调整过的数据训练下一个基学习器。重复这一过程,知道学习器的数目达到了T,最终将这T个学习器进行加权。
Boosting族算法中最著名的是AdaBoost
AdaBoost最好理解的推导方式是基学习器的线性组合。
来最小化损失函数。
算法过程如下:
训练基分类器使得误差ε最小化
计算该基分类器的话语权α
随后更新样本权重,使得前一分类器的错分样本的权重增加,在后续的学习中重点学习。
最终得到
Boosting算法要求基学习器能够对特定的数据分布进行学习,在训练的每一轮为每个样本赋予权重。若无法进行赋值,可以使用重采样法处理。每一轮训练结束都需要检查当前生成的基学习器是否满足基本条件(结果优于随机猜测)。若不满足则抛弃该基分类器且停止学习。
从偏差-方差分解的角度来看,Boostring主要关注降低偏差,因此其能够基于泛化能力弱的学习器构造较强的集成。
3 Bagging
Bagging 是并行式集成学习方法的代表。基于自助采样法从包含m个样本的数据集中随机抽取,构成大小为m的初始样本集。一共生成T个采样集。
通过T个含有m个训练样本的采样集,可以训练出T的基学习器,再将这些学习器进行组合,就是Bagging的流程。
Bagging通常对分类任务使用简单投票法。
从偏差-方差分解的角度来看,Bagging关注降低方差,因此他在不剪枝决策树、神经网络等易受样本扰动的学习器上效果明显。
补充偏差-方差分解内容:
- 偏差:度量了模型的期望预测和真实结果的偏离程度,刻画了模型本身的拟合能力。
- 方差:度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响。
- 噪声:表达了当前任务上任何模型所能达到的期望泛化误差的下界,刻画了学习问题本身的难度。
为了得到泛化性能好的模型,我们需要使偏差较小,即能充分拟合数据,并且使方差小,使数据扰动产生的影响小。但是偏差和方差在一定程度上是有冲突的,这称作为偏差-方差窘境。
随机森林
RF是Bagging的一个拓展变体。RF在以决策树作为基学习器构建Bagging的基础上,为决策树的训练引入了随机属性的选择。
具体来说,传统决策树的划分属性是从属性集合中,通过大量计算选择一个最优属性。而在RF中,先从属性中随机选择K个属性,从这K个属性中选择最优属性用于划分。K决定了随机性的引入程度。一般k = log2d
4 结合策略
结合多个学习器有以下三个好处
第一,减小泛化性能不佳这一风险;
第二,降低陷入局部极小值的风险;
第三,扩大了假设空间,可以获得更好的近似;
- 平均法
加权平均法的权重一般来源于训练数据,然而训练数据通常不充分且存在误差,使得权重并不可靠。因此,加权平均法不一定优于简单平均法。
- 投票法
对于多分类问题,学习器hi将从类标记集合{c1,c2...,cN}中预测一个标记,最常用的就是投票法。
相对多数即预测为得票最多的标记。
- 学习法
当训练数据很多的时候,学习法是一种更为强大的结合策略,即通过另一个学习器来进行结合。Stacking就是其中的代表。用于结合的学习器称为次级学习器。
Stacking将初始训练集训练出的初级学习器,生成一个新的数据集用于训练次级学习器。
初级学习器的输出将当作样本的输入特征,而原始标签依旧为样例标记。
5 多样性
多样性度量的典型做法是考虑个体分类器的两两不相似性。
多样性增强:
数据样本扰动
通过生成不同的数据子集,通过数据子集训练不同的个体学习器。这样的数据样本扰动是基于采样法的。
数据样本扰动对“不稳定学习器”很有效。然而,一些学习器对样本的扰动不敏感,需要进行属性扰动。输入属性扰动
著名的随机子空间就依赖于输入属性扰动。对于包含大量冗余属性的数据,在其属性子空间中训练学习器不仅可以产生大量多样性的个体,还能够减少训练时间。
- 输出表示扰动
随机改变一些训练样本的输出标记。也可以对输出进行转换,如将多分类变为回归输出。
也可以将原任务拆解为子任务。
- 算法参数扰动
学习算法的参数对学习器的模型影响巨大,因此通过随机设置参数往往可以产生差别较大的个体学习器。