8. 集成学习
集成学习通过构建并结合多个学习器来完成学习任务没有时候也被称为多分类器系统等,常可获得比单一学习器显著优越的泛化性能。
8.1 个体与集成
上图我们可以形象的看出,集成学习的基本架构,就是由T个个体学习器分别进行学习,然后通过某种策略将它们结合在一起。
个体学习器一般通常是由一个现有的学习算法中从训练数据产生,例如C4.5决策树算法,BP神经网络算法等,如果此时集成中质保函同种类型的个体学习器,那么称之为“同质”,在“同质”中的个体学习器亦成为“基学习器”,反之称为“异质”和“组件学习器”。
“弱学习器”:常指泛化性能略优于随机猜测的学习器。
在“弱学习器”中,集成学习它的优于单一学习器的泛化能力体现的尤为明显,因此它是很多集成学习的研究对象,有时候基学习器也被直接称为弱学习器。
上面我们已经提到要让集成起来的泛化性能比单个学习器都要好,虽说团结力量大但也有木桶短板理论调皮捣蛋,那如何做到呢?这就引出了集成学习的两个重要概念:准确性和多样性(diversity)。准确性指的是个体学习器不能太差,要有一定的准确度;多样性则是个体学习器之间的输出要具有差异性。通过下面的这三个例子可以很容易看出这一点,准确度较高,差异度也较高,可以较好地提升集成性能。
现在考虑二分类的简单情形,假设基分类器之间相互独立(能提供较高的差异度),且错误率相等为 ε,则可以将集成器的预测看做一个伯努利实验,易知当所有基分类器中不足一半预测正确的情况下,集成器预测错误,所以集成器的错误率可以计算为:
我们在以上的式子中可以发现,当分类器的数目T趋于无限大的时候,集成的错误率会趋近于0!
但在这之前有一个前提就是基学习器之间的误差互相独立。在实现任务中,它们依赖的数据是一样的,就导致它们并不是完全独立的。因此,个体学习器的“准确性”和“差异性”本身就是一对矛盾的变量,准确性高意味着牺牲多样性,所以产生“好而不同”的个体学习器正是集成学习研究的核心。现阶段有三种主流的集成学习方法:Boosting、Bagging以及随机森林(Random Forest),接下来将进行逐一介绍。
8.2 Boosting
Boosting它是一种串行的工作机制,即它是对每一个基学习器依次进行处理,并且每一个基学习器都得依赖在前一个学习器处理后的结果,这就表示个体学习器的训练存在依赖关系,必须一步一步序列化进行。它的基本思想就是:增加前一个基学习器在训练训练过程中预测错误样本的权重,使得后续基学习器更加关注这些打标错误的训练样本,尽可能纠正这些错误,一直向下串行直至产生需要的T个基学习器,Boosting最终对这T个学习器进行加权结合,产生学习器委员会。
AdaBoost算法:它所使用的是指数损失函数
定义基学习器的集成为加权结合,则有:
AdaBoost算法的指数损失函数定义为:
具体说来,整个Adaboost 迭代算法分为3步:
- 初始化训练数据的权值分布。如果有N个样本,则每一个训练样本最开始时都被赋予相同的权值:1/N。
- 训练弱分类器。具体训练过程中,如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它的权值就被降低;相反,如果某个样本点没有被准确地分类,那么它的权值就得到提高。然后,权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。
- 将各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用
Boosting算法要求基学习器能对特定的数据分布进行学习,这可以通过“重赋权法”实施,在训练过程的每一轮中,根据样本分布为每一个训练样本重新赋予一个新的权重。而对于无法接受带权样本的基学习算法,则可以通过“重采样法”,即在每一轮学习中,根据样本的分布对训练集重新采样,再用重采样的样本集对基学习器进行训练。
8.3 Bagging与Random Forest
8.3.1 Bagging
Bagging它是一种并行式集成学习方法,基于“自主采样法”,有放会的随机抽取m个样本的数据集,这样经过T次的相同处理。我们可以得到T个含m个训练样本的采样集,这样训练集中有接近36.8%的样本没有被采到。然后,我们基于每个采样集训练出一个基学习器,最后将这些基学习器进行结合。
其算法流程为:
Bagging主要关注降低方差,所以它在向不剪枝的决策树、神经网络等易受样本扰动的学习器上效用明显。同时,它与标准AdaBoost不同的是,它不止适用于二分类任务,还可以用于多分类、回归等任务。
8.3.2 随机森林
RF是Bagging的一个扩展变体。在Bagging对样本扰动的基础上,进一步引入了随机属性选择。换句话说,随机森林的基学习器的“多样性”不仅来源于样本的扰动,还来自于属性扰动,这就使得最终集成的泛化性能可通过个体学习器之间差异度的增加而进一步提升。在选择划分属性时,RF先从候选属性集中随机挑选出一个包含K个属性的子集,再从这个子集中选择最优划分属性,一般推荐K=log2(d)。同时,RF简单、容易实现、计算开销小。
相比决策树的Bagging集成,随机森林的起始性能较差(由于属性扰动,基决策树的准确度有所下降),但随着基学习器数目的增多,随机森林往往会收敛到更低的泛化误差。同时不同于Bagging中决策树从所有属性集中选择最优划分属性,随机森林只在属性集的一个子集中选择划分属性,因此训练效率更高。
8.4 结合策略
结合策略指的是在训练好基学习器后,如何将这些基学习器的输出结合起来产生集成模型的最终输出,下面将介绍一些常用的结合策略:
8.4.1 平均法(回归问题)
一般而言,在个体学习器性能相差较大时宜使用加权平均法,在个体学习器性能相差较小时宜使用简单平均法。
8.4.2 投票法(分类问题)
对于分类任务,各个基学习器的输出值有两种类型,分别为类标记和类概率。
一些在产生类别标记的同时也生成置信度的学习器,置信度可转化为类概率使用,一般基于类概率进行结合往往比基于类标记进行结合的效果更好,需要注意的是对于异质集成,其类概率不能直接进行比较,此时需要将类概率转化为类标记输出,然后再投票。
8.4.3 学习法
Stacking是学习法的典型代表,它先从初始数据集训练出初级学习器,然后“生成”一个新数据集用于训练次级学习器。
次级学习器的输入属性与学习算法对Stacking集成的泛化性能有很大的影响,书中已经提到:投票学习器采用类概率作为输入属性,选用多响应线性回归(MLR)一般会产生较好的效果。
先开一个优化的坑,哈哈
8.5 多样性
8.5.1 误差-分期分解
对示例x,定义学习器的“分歧”有:
集成的“分歧”:
在这里的“分歧”表征了个体学习器在样本x上的不一致性,即在一定程度上反映了个体学习器的多样性。
使用加权均值,p(x)表示样本的概率密度,于是在全体样本中:
将上式替换简化成:
这个式子表明:各系学习器准确性越高、多样性越大,那么集成越好。
8.5.2 多样性度量
多样性度量是用于度量集成中个体学习器的多样性,估算个体学习器的多样化程度,典型做法考虑两两相似/不相似性。
有一下预测结果列联表为:
由此有以下的多样性度量:
1. 不合度量
2. 相关系数
3. Q-统计量
4. k-统计量
其中p1是两个分类器取得一致的概率;p2是两个分类器偶然达到一致的概率,通常用以下这样估算: