1. 章节主要内容
集成学习(ensemble learning)是通过构建并结合多个分类器来完成学习任务。
如何产生并结合“好而不同”的个体学习器,恰是集成学习研究的核心
个体学习器的“准确性”和“多样性”本身就存在着冲突,这其实在大多数的机器学习算法中都是一样的,要想对训练集来说足够准确往往意味着灵活性不足,当训练过量时还会过拟合。
根据个体学习器的生成方式,目前的集成学习算法大致可分为两大类:
1)个体学习器间存在强依赖关系、必须串行生成序列化方法:Boosting
Boosting是一族可将弱学习器提升为强学习器的算法。工作机制:先从初始训练集中训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本数据在后续受到更多的关注,然后基于调整后的训练样本来训练下一个基学习器;如此重复进行,直到基学习器数目达到指定的值 T ,最终将这 T 个基学习器进行加权结合。
Boosting算法要求基学习器能对特定的数据分布进行学习,这可通过“重赋权法”(re-weighting)实施,即在训练过程的每一轮中,根据样本分布为每个训练样本重新赋予一个权重。对无法接受带权样本的基学习算法,则可通过“重采样法”(re-sampling)来处理,即在每一轮学习中,根据样本分布对训练数据集进行重采样,再用重采样而得的样本集对基学习器进行训练。
2)个体学习器间不存在强依赖关系、可同时生成的并行化方法:Bagging 和 “随机森林”(Random Forest)
欲得到泛化性能强的集成,集成中的个体学习器应尽可能相互独立;虽然“独立”在现实任务中无法得到,但可以设法使尽可能具有较大的差异。即对每个个体学习器中加入适当的扰动,在不对性能造成大的影响的情况下提高学习器的多样性,基于这个思路,机器学习领域设计了以下两种集成方法:
[1]Bagging
Bagging是并行式集成学习方法最著名的代表,其加入的扰动项是训练样本的不同划分,即给每个个体分类器提供不同的训练集。Bagging算法直接基于我们在第二章中介绍的自助采样法(bootstrap sampling)。
每次从D中随机复制一个样本到D1中,重复m次(m为D的样本数),会得到一个拥有m个数据样本的D1数据集。显然,D中的一部分数据会多次出现在D1中,而另一部分样本不出现。根据平均分布概率计算,大约有36.8%的数据不会被复制到D1中
照这样,我们可采样出 T 个含有 m 个训练样本的采样集,然后基于每个采样集训练一个基学习器,再将这些基学习器进行结合。
值得一提的是,由于会有36.8%的数据没被放入采样集中,我们可以利用这部分数据进行验证
[2]随机森林(Random Forest,简称 RF)
随机森林是Bagging的一个扩展变体。RF 在以决策树为基学习器构建 Bagging 集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。
具体来说,传统决策树在选择划分属性时是在当前结点的属性集合中选择一个最优的属性;而在 RF 中,对基决策树的每个结点,先从该结点的属性集合中随机选择包含 k 个属性的子集,然后再从这个子集中选择一个最优的属性用于划分。
这里的参数 k 决定了随机程度:若 k 等于总的属性个数 d,那么此时基决策树与传统决策树一样;若 k 等于1,则是完全随机选择;一般情况,推荐 k = log2(d)
3)结合策略
学习器结合可能会从三个方面带来好处:
首先,从统计的方面来看,由于学习任务的假设空间往往很大,可能有多个假设在训练集上达到同样性能,此时若使用单一学习器可能会因为误选而导致泛化性能不佳,结合多个学习器可减少这一风险
第二,从计数的方面来看,学习算法往往会陷入局部最小,有的局部极小点所对应的泛化性能可能很糟糕,而通过多次运行之后进行结合,可降低陷入糟糕局部极小点的风险
第三,从表示的方面来看,某些学习任务的真实假设可能不在当前学习算法所表示的假设空间中,此时若使用单学习器则肯定无用,而通过结合多个学习器,由于相应的假设空间有所扩大,则有可能学得更好的近似。下边是一个直观的示意图:
下边,我们来详细介绍一下一些常用的结合策略
[1]平均法
对数值型输出,最常见的结合策略是使用平均法。该方法顾名思义就是对不同的学习器的输出进行求和平均,根据求和方式的不同可分为:
简单平均法:T 个学习器的输出求和并除以 T 的值为集成后的输出
加权平均法:对每个学习器的输出进行加权求和的值为集成后的输出
加权平均法的权重一般从训练数据中计算得来,而训练样本通常不充分或者含有噪音数据,这可能会导致权重不可靠。实验和应用显示出,加权平均法未必优于简单平均法。一般而言,在个体分类器性能相差较大时宜使用加权平均法,而在个体分类器性能相似时宜使用简单平均法
[2]投票法
对分类任务来说,最常用的结合策略是使用投票法。这和平均法一样,都是很straight forward的策略。和平均法一样,根据求和策略的不同,投票法可分为:
绝对多数投票法:当对一个分类的投票超过半数时,选择这个分类作为集成后的输出,当没有任一个分类的票数超过半数,则拒绝预测
相对多数投票法:选择获得投票最多的分类作为集成后的输出
加权投票法:选择加权投票后值最多的分类作为集成后的输出
[3]学习法
当训练数据很多时,一种更为强大的结合策略是使用“学习法”,即通过另一个学习器来进行结合。
Stacking是学习法的典型代表,其先从初始数据集训练出初级学习器,然后“生成”一个新的数据集用于训练次级学习器。在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记。初级学习器之间可以是由同样的算法生成、也可以由不同算法生成。
在训练阶段,我们如果使用一样的数据对初级学习器和次级学习器进行训练,容易过拟合。一般的做法是交叉验证法划分的两部分数据集来分别训练初级学习器和次级学习器
4)多样性
在本章的第一节中,我们提到如何找到“好而不同”的个体学习器是集成学习研究的重点。我们其实可以很直观的理解为什么好而不同的个体学习器的集成会有比较好的效果,因为一组学习器能对训练样本有一个比较好的预测结果,于此同时这组学习器还各不相同,这代表着这组学习器覆盖的假设空间会很大,那么对于实际的样本到来时,其的泛化性能也会更好。
当然,上边只是简单的从概念上去理解,本章内容对这个理解进行了证明,并得到了“误差-分歧分解”公式。
1)误差-分歧分解
文章中的推理过程,我在这边不进行搬运了,但是最后得到的分解公式很必要给大家介绍一下:
上边这个式子的左边代表的是集成后的泛化误差,右边是个体学习器的平均泛化误差 减去 个体学习器的集成分歧。这个漂亮的式子明确提示出:个体学习器准确性越高、多样性越大,则集成越好。
需注意的是,上边公式的推导过程只适合于回归学习,难以直接推广到分类学习任务上去。在分类学习任务上,我们使用多样性度量来进行计数。
2)多样性度量(diversity measure)
多样性度量是用于度量集成中个体分类器的多样性,即估算个体学习器的多样化程度。典型做法是考虑个体分类器的两两相似/不相似性。
多样性度量有许多指标,一些常见的有:不合度量、相关系数、Q-统计量、k-统计量等。
以上介绍的都是成对型多样性度量,它们可以容易通过2维图绘制出来。以k-统计量为例,将每一对分类器作为图上的一个点,横坐标是这对分类器的k值,纵坐标是它们的平均误差。显然,数据点云的位置越高,则个体分类器准确性越低;点云的位置越靠右,则个体学习器的多样性越小。
3)多样性增强
既然在集成学习中个体学习器的多样性对性能有很大的提高,那么我们就应该尽量的有效的生成多样性大的个体学习器。
一般增强多样性的思路是在学习过程中引入随机性,常见做法主要是对数据样本、输入属性、输出表示、算法参数进行扰动。
[1]数据样本扰动
给定初始数据集,可从中产生出不同的数据子集,再利用不同的数据子集训练出不同的个体学习器。
数据扰动通常是基于采样法,例如前边说的Bagging使用自助采样。此种做法简单高效,使用最广,但对扰动不敏感的基学习器,如线性学习器、朴素贝叶斯、支持向量机、k最近邻学习器等,效果不佳。
[2]输入属性扰动
训练样本通常由一组属性描述,不同的“子空间”提供了观察数据的不同视角。
如果数据包含大量冗余属性,使用属性扰动会有好处(节省时间、多样性提升等);但是若样本数据属性较少或冗余属性很少,则不适宜使用输入属性扰动。
[3]输出表示扰动
此类做法的基本思路是对输出表示进行操纵以增强多样性。
如将多分类任务转换为多个二分类任务来训练基学习器;“翻转法”随机改变训练样本标记(类似引入噪音);“输出调制法”将分类输出转换为回归输出来训练基学习器。
[4]算法参数扰动
基学习器一般都有参数需要调配,如神经网络的隐层结点数量、连接权值等,对基础参数赋予不同的值,往往可以产生差别较大的基学习器。
使用单一学习器时通常需使用交叉验证来确定参数,这事实上已使用了不同参数训练出多个学习器,只不过最终只使用了一个来使用,而集成学习器则是将其结合起来使用。由此可看出,集成学习计数实际上开销并不比单一学习器大很多。
不同的多样性增强策略可以同时使用已达到最佳效果!如随机森林算法同时使用了样本扰动和属性扰动两个策略。
2. 基础知识
1)弱学习器
弱学习器常指泛化性能略优于随机猜测的学习器;例如在二分类问题上精度略高于50%的分类器
2)Boosting算法
Boosting是一族可将弱学习器提升为强学习器的算法。工作机制:先从初始训练集中训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本数据在后续受到更多的关注,然后基于调整后的训练样本来训练下一个基学习器;如此重复进行,直到基学习器数目达到指定的值 T ,最终将这 T 个基学习器进行加权结合
3)Bagging算法
Bagging是并行式集成学习方法最著名的代表,其加入的扰动项是训练样本的不同划分,即给每个个体分类器提供不同的训练集。
4)随机森林算法
随机森林是Bagging的一个扩展变体。RF 在以决策树为基学习器构建 Bagging 集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。
3. 总结
1)集成学习(ensemble learning)是通过构建并结合多个分类器来完成学习任务
2)如何产生并结合“好而不同”的个体学习器,恰是集成学习研究的核心
3)根据基学习器之间是否有强关联,我们可将集成学习分为两类,一类是以boosting为代表的序列化方法,另一类是以Bagging为代表的并行化方法
4)学习器结合可能具有三个好处:增强泛化性能;避免局部极小;扩大假设空间
5)结合策略基本分三种:在线性模型中,对基学习器结果进行加权平均(完全平均法是权重都为1);在分类模型中,对基学习器结果进行加权计数投票,选出最高投票分类;将预测模型分为两层,第二层学习器以第一层学习器的结果进行训练(这其实就是变种的神经网络算法,第一层的结果其实是对输入数据的抽象)
6)好而不同的基学习器的确能提升集成性能
7)一般增强多样性的思路是在学习过程中引入随机性,常见做法主要是对数据样本、输入属性、输出表示、算法参数进行扰动