机器学习(八)——集成学习
前言
看了好久书了,该总结一下了。如果有理解不到位的地方,欢迎批评。
摘要
1 个体与集成
集成学习通过结合多个学习器来完成学习任务,他的一般结构是:先产生一组“个体学习器”,再用某种策略结合起来。“个体学习器”通常由现有算法(如决策树算法、BP神经网络算法等)产生。一组“个体学习器”是相同类型的,称其为同质集成(homogeneous),类型不同称其为异质集成。同质集成的个体学习器称基学习器(base learner),通常称为组件学习器(component learner),相应的学习算法叫基学习算法(base learning algorithm)。异质集成没有基学习算法。集成学习对弱学习器(泛化能力略优于随机猜测的学习器)效果明显。假设基学习器错误率相互独立,随着基学习器的数量的增加,集成学习器的错误率指数级下降,最终趋于0。但是,这个假设在实际很难成立,集成学习研究的核心就是“如何产生并结合好而不同的个体学习器”。根据组件学习器的生成方式,集成学习大致可以分为两类:
(1)个体学习器存在强依赖关系、必须创新生成的序列化方法;
代表算法:Boosting
(2)个体学习器不存在强依赖关系、可同时生成的并行化方法;
代表算法:Bagging和Random Forest
2 Boosting
Boosting工作机制:先从初始训练集训练出来一个基学习器,然后将调整后的样本分布训练下一个基学习器,重复进行直到达到设定值T,最终得到T个基学习器。 Adaboost有多种推导方式,是Boosting算法里最出名的一个了。比如:,则将基学习器线性组合。
来最小化指数损失函数
假设H(x)能令指数损失函数最小化,用损失函数对H(x)求偏导,
令其等于0,解得
因此有
sign(H(x))说明了:达到贝叶斯最优错误率,若指数损失函数最小化,则分类错误率也最小化,这说明指数损失函数是原分类任务损失函数一致的替代损失函数。指数损失函数连续可微,因此用它替代0/1损失函数作为优化目标。
Adabost算法的描述如下:
基分类器h1 通过初始数据训练而得,迭代产生ht和αt。假定基分类器ht基于分布Dt 而得,权重αt应使得αtht 最小化损失函数
其中。对指数损失函数求导,得到
,
令其等于0得到基于分布Dt权重更新公式:
Adaboost在获得Ht-1 之后将对样本进行调整使得下一轮基学习器能纠正上一轮的错误,即最小化
。
然后经过一系列的变化得到理想基学习器
。
由此可见,理想的ht在Dt下训练,最小化分类误差(针对Dt 的分类误差小于0.5)。这类似于残差逼近的思想。考虑到Dt 和 Dt+1 的关系得到样本的分布更新公式。
由此推出了基于加性模型优化指数损失函数的Adaboost算法。
·Boosting通过Re-weight算法在每一轮训练中根据样本分布为每个训练样本重新赋权重,对于无法带权重的基学习算法,通过Re-sampling来处理,即每一轮学习对训练集重采样。Boosting算法训练每一轮都要检查基学习器是否满足条件,否则停止训练,这样我们可能远未达到T轮学习。但是 重采样算法可以抛弃不满足条件的当前基学习器,根据当前样本分布重新采样训练,完成T轮。
Boosting主要关注的是降低偏差。
3 Bagging与随机森林
集成学习欲得到泛化性能强的集成,应该使得个体学习器尽可能相互独立,但是现实中个体学习器完全相互独立无法做到,我们只能尽量让个体学习器差异大一些。一种做法是多次采样得到不同的训练子集然后依次训练,但是每个基学习器只用到一部分数据,无法控制个体学习器的性能,为此我们考虑第二种方法没有交叠的采样子集。
3.1 Bagging
Bagging是并行集成学习的代表他直接基于自助采样法(boostrap sampling)。
我们可得到T个含m个样本的采样子集,每个训练出一个基学习器,然后在进行结合。预测输出进行结合时,Bagging通常对分类任务投票法,回归任务用平均法。若分类预测出现两个同票数的情形,则随机选择一个或者参考置信度。算法描述如下:
假定基学习器复杂度O(m),Bagging的复杂度T(O(m)+O(s)),采样和投票的复杂度O(s)很小,因此Baggging与基学习器复杂度同阶,是高校集成算法。标注Adaboost只适用于二分类,Bagging可用于多分类和回归等任务。
自助采样给Bagging带来优点,63.2%的数据用于训练,36.8%的数据用于验证即包外估计(out of bag estimate)。令Dt 表示ht 实际使用的训练样本,Hoob(x)表示样本x的包外预测,则
。
当基学习器是决策树时,包外估计还可以进行剪枝;当基学习器是神经网络,包外估计可辅助早期停止,减小过拟合。
3.2 随机森林
RF是Bagging的一个扩展变体,以决策树为基学习器构建Bagging集成的基础上引入了随机属性选择。RF构建及决策树时,随机选择一个包含k个特征的子集,然后进行决策树划分。
若k=d(全部属性) ,及决策树与传统决策树相同;
若k=1,则随机选择一个属性划分;
一般推荐k=log2d
Bagging基学习器的多样性仅通过对初始训练集采样来引入不同,而RF还可以来自属性扰动,从而提升了泛化性能。
RF的收敛性和Bagging相似。RF起始性能差,尤其在只包含一个继续学习器的时候(由于属性扰动,RF的个体学习器性能会降低),但随着个体学习器的增加,RF通常会得到更低的泛化误差。RF的效果优于个体决策树构建的Bagging,因为Bagging使用确定型的决策树考虑全部属性,而rf使用随机性决策树的一个子集。
4 结合策略
学习器结合优点:
(1)多个学习器可以同时考虑多个假设;
(2)多次运行可以打破局部极小的糟糕风险;
(3)多种假设在训练集达到相同效果时,多学习器可以避免单一学习器的误选择;
4.1 平均法
对数值型输出hi(x)使用平均法。
简单平均
加权平均
注意:加权平均法 现实任务重的训练样本不充分或者有噪声,使得学出的权重不可靠,对于规模较大的集成,权重过多容易出现过拟合。个体学习器性能相差较大时宜使用加权平均,相近时使用简单平均。
4.2 投票法
绝对投票法
即标记过半则预测为该标记;否则拒绝预测
相对多数投票法
预测得票最多的标记
加权投票法
在实际使用中基学习器的输出类型可以是不同类型,常见的有:
类标记:标记为0或者1进行硬投票,有些学习器在预测类别标记的同时能够产生分类置信度可以转化成类概率。有时还需校准(Platt缩放、等分回归)之后才能作为类概率。
类概率:标记为[0,1],进行软投票
注意:不同类型的基学习器的类概率值不能直接比较,需转化为类标记再投票。
4.3 学习法
4.3.1 Stacking
学习法是一种更强大的结合策略,通过另一个学习器来结合。Stacking是典型的代表。个体学习器称为初级学习器,用于结合的学习器称为次级学习器。
Stacking集成影响较大的两个因素:(1) 次级学习器的输入属性表示;(2) 次级学习器算法
目前较好的做法是:初级学习器的输出概率作为次级学习器的输入属性,用多响应线性回归(Multi-response Linear Regression,MLR)做次级学习器效果较好。
4.3.2 BMA
贝叶斯模型平均(Bayes Model Averaging,BMA)基于后验概率来为不同模型赋权重。数据生成模型在考虑的模型里且数据噪声很少,BMA不差于Stacking,BMA 对模型的近似误差非常敏感。但是应用中无法知道是那种模型,因此Stacking通常优于BMA。
5 多样性
5.1 误差-分歧(ambiguity)分解
欲构建泛化能力强的集成学习器,个体学习器应好而不同。
分歧表征了个体学习器在样本上的不一致性,反应了个体学习器的多样性。
对个体虚学习器和集成学习器平方误差求加权值,然后一系列的变化得出:(error-ambiguity decomposition):个体学习器准确率越高,多样性越大,则集成越好。
5.2 多样性度量
度量个体分类器的多样化程度。典型的做法是考虑个体分类器的两辆相似/不相似性。
m = a+b+c+d
不和适度: ,
值域[0,1] 值越大多样性越大
相关系数:
Q-统计量:
值域[-1,1] 若hi和hj无关,则为0
Qij 与相关系数 ρij 符号相同,|Qij|< |ρij |
卡布-统计量:
p1是两个分类器取得一直的概率
p2是两个分类器偶然达成一致的概率
k=1 两个分类器完全一致;
k=2 两个分类器偶然一致
k通常为非负值
卡布误差图:横坐标是卡布值,纵坐标是平均误差
点云越高,个体分类器准确性越低;点云越靠右,个体学习器多样性越小
5.3 多样性增强
常见做法就是引入随机性,如下:
5.3.1 数据样本扰动
Bagging使用自助采样
Adaboost使用序列采样
对于常见的基学习器,如决策树、神经网络等不稳定性基学习器,样本扰动效果很好
对于线性学习器、支持向量机、朴素贝叶斯、k邻近等稳定性基学习器则不敏感,需要使用输入属性扰动机制。
5.3.2 输入属性扰动
著名的算法 随机子空间 (random subspace):从属性集中抽取出若干属性子集训练基学习器。对包含大量冗余属性的数据,子空间可以产生多样性大的个体,并且节省了时间开销。若数据包含的属性较少,则不宜使用输入属性扰动法。
5.3.3 输出表示扰动
对训练样本的类标记稍作变动,如:
“翻转法”,随机改变一些训练样本的标记
“输出调制法”,分类输出转化为回归后构建个体学习器
对 原任务拆解成子任务:如
EOOC法:利用纠错输出码将多分类拆解为一系列二分类任务
5.3.4 算法参数扰动
随机随机设置不同参数(比如神经网络隐层神经元数、初始权重等),产生差异较大的个体学习器。
例如“负相关法”:通过正则化项强制个体神经网络使用不同参数。对于参数较少的学习器,例如决策树,将其属性选择机制替换成其他属性选择机制。
注意:单一学习器通常使用交叉验证求参数,这其实已经使用了不同参数训练出多个学习器,选择一个; 集成学习相当于全部利用起来。
RF同时使用了数据样本扰动和输入属性扰动。