机器学习(8) -- 集成学习

8.1 个体与集成

集成学习通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统,基于委员会的学习等。

同质集成,只包含同种类型的个体学习器,同质集成的个体学习器亦称“基学习器”,相应的学习算法为“基学习算法”

异质集成,包含不同类型的个体学习器,异质集成中的个体学习器由不同的学习算法生成,这时就不再有基学习算法,个体学习器常称为“组件学习器”,或直接称为个体学习器

弱学习器:泛化性能略优于随机猜测的学习器。

 

假设集成错误率相互独立,则由Hoeffiding不等式可知,集成错误率为:

即,随着集成中个体分类器数目T的增大,集成的错误率将指数级下降,最终趋于零。

 

个体学习器:准确性、多样性,两者本身就存在冲突,一般准确性很高之后,要增加多样性就需牺牲准确性;如何产生并结合“好而不同”的个体学习器,是集成学习研究的核心。

 

集成学习方法大致分为两类:个体学习器间存在强依赖关系,必须串行生成的序列方法,如:Boosting;以及个体学习器间不存在强依赖关系、可同时生成的并行化方法,如Bagging和 随机森林

8.2 Boosting

Boosting是一族可将弱学习器提升为强学习器的算法。这族算法的工作机制类似:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。

 

Boosting族算法代表:AdaBoost,算法描述如下:

几个重要公式:

“加性模型”,即基学习器的线性组合:

指数损失函数:

对H(x)求导并等于0,解得:

于是有:

 

这说明sign(H(x))达到了贝叶斯最优错误率。换言之,若指数损失函数最小化,则分类错误率也将最小化;这说明指数损失函数是分类任务原本0/1损失函数的一致的替代损失函数。由于这个替代函数有更好的数学性质,例如它是连续可微函数,因此我们用它替代0/1损失函数作为优化目标。

分类器权重 应使得最小化指数损失函数

样本分布更新公式:

Boosting算法要求基学习器能对特定的数据分布进行学习,这可通过“重赋权法”实施。对无法接受带权样本的基学习算法,则可通过“重采样法”来处理,即在每一轮学习中,根据样本分布对训练集重新进行采样,再用重采样而得的样本集对基学习器进行训练。两种做法无显著优劣差别。

重采样法可获得“重启动”机会以避免训练过程过早停止,即在抛弃不满足条件的当前学习器后,可根据当前分布重新对训练样本进行重采样,再基于新的采样结果重新训练出基学习器,从而使得学习过程可以持续到预设的T轮完成。

 

从偏差-方差分解的角度看,Boosting主要关注降低偏差,因此Boosting能基于泛化性能相当弱的学习器构建出很强的集成。

8.3 Bagging与随机森林

Bagging

Bagging是并行式集成学习方法最著名的代表,直接基于自助采样法。采样出T个含m个训练样本的采样集,基于每个采样集训练基学习器,再结合。

假定基学习器的计算复杂度为O(m),则Bagging的复杂度大致为T(O(m)+O(s))

 Bagging是一个高效的集成学习算法。与标准的AdaBoost只适用于二分类任务不同,Bagging能不经修改地用于多分类、回归等任务。

 

从偏差-方差分解的角度看,Bagging主要关注降低方差,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效用更为明显。

 

随机森林

简称RF,是Bagging的一个扩展变体。RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树训练过程中引入随机属性选择。在RF中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含K个属性的子集,然后再从这个子集中选择一个最优属性用于划分。一般推荐值

随机森林中基学习器的多样性不仅来自样本扰动,还来自属性扰动,这就使得最终集成的泛化性能可通过个体学习器之间的差异度的增加而进一步提升。

8.4结合策略

平均法:对于数值输出,可用简单平均、加权平均(权重非负约束,和为1)

个体学习器性能相差较大时宜使用加权平均法,而在个体学习器性能相近时使用简单平均法。

 

投票法:对分类任务来说,可用投票法

绝对多数投票法:若某标记得票过半数,则预测为该标记,否则拒绝预测

相对多数投票法:预测为得票最多的标记,若同时有多个标记获最高票,则从中随机选取一个

加权投票法:

 

类标记:,若hi将样本x预测为类别Cj则取值为1,否则取值为0。使用类标记的投票亦称“硬投票”

类概率:,相当于对后验概率的一个估计。使用类概率的投票亦称“软投票”

 

不同类型的h(x)不能混用。若基学习器的类别不同,则其类概率值不能直接进行比较,此时可将类概率输出转化为类标记输出,然后再投票。

 

学习法

训练数据很多时,更强大的结合策略是“学习法”,即通过另一个学习器来结合。

个体学习器称为初级学习器,用于结合的学习器称为次级学习器或元学习器。

Stacking算法:

先从初始数据集训练出初级学习器然后“生成”一个新数据集用于训练次级学习器。在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记。

在训练阶段,次级训练集是利用初级学习器产生的,若直接用初级学习器的训练集来产生次级训练集,则过拟合风险会比较大;因此,一般通过使用交叉验证或留一法这样的方式,用训练初级学习器未使用的样本来产生次级学习器的训练样本。

D随机划分成K个大小相似集合D1,D2,…,Dk,D\Dj用于训练初级学习器,Dj用于产生次级学习器所用的训练集

8.5 多样性

多样性度量是用于度量集成中个体分类器的多样性,即估算个体学习器的多样化程度。典型做法是考虑个体分类器的两两相似/不相似性。

不合度量 , 值域[0,1],值越大则多样性越大。

相关系数,值域[-1,1]。

Q统计量 ,符号与相同,

κ统计量,,其中 ,是两个分类器取得一致的概率;

,偶然达成一致的概率

κ通常非负值。

κ误差图:横坐标是κ值,纵坐标是平均误差。

数据点云的位置越高,则个体分类器准确率越低;点云位置越靠右,则个体学习器的多样性越小。

 

多样性增强

常见做法主要对数据样本、输入属性、输出表示、算法参数进行扰动;不同的多样性增强机制可同时使用。

 

数据样本扰动:给定初始数据集,产生不同数据子集,再利用不同数据子集训练出不同的个体学习器,基于采样法。例如AdaBoost中使用序列采样。决策树、神经网络对样本稍加变化就会导致学习器有显著变动,数据样本扰动法对这样的“不稳定基学习器”很有效;而线性学习器、支持向量机、朴素贝叶斯、K近邻学习器称为稳定基学习器。

 

输入属性扰动:子空间(即属性子集),一般指从初始的高维属性空间投影产生的低维属性空间,描述低维空间的属性是通过初始属性投影变换而得,未必是初始属性。随机子空间算法,从初始属性集中抽取若干属性子集,再基于每个属性子集训练一个基学习器,适用于包含大量冗余属性的数据。若数据只包含少量属性,或者冗余属性少,则不适宜使用输入属性扰动法。

 

输出表示扰动:基本思路是对输出表示进行操纵以增强多样性。可对训练样本的类标记稍作变动,如“翻转法”随机改变一些训练样本的标记;也可对输出表示进行转化,如“输出调制法”将分类输出转化为回归输出后构建个体学习器;还可将原任务拆解为多个可同时求解的子任务,如ECOC法。

 

算法参数扰动:通过随机设置不同参数产生差别较大的个体学习器,如“负相关法”,显示的通过正则化项来强制个体神经网络使用不同参数;对参数较少的算法,可将学习过程的某些环节用其他类似方式代替。使用单一学习器时通常需使用交叉验证法来确定参数值,这事实上已经使用了不同参数训练出多个学习器,只不过最终仅选择其中一个学习器进行使用,而集成学习则相当于把这些学习器都利用起来,所以集成学习技术的实际计算开销并不比使用单一学习器大很多。

 

发布了27 篇原创文章 · 获赞 2 · 访问量 203

猜你喜欢

转载自blog.csdn.net/weixin_43575791/article/details/105452284
今日推荐