集成学习可谓是机器学习中的大杀器,诸如GBDT(梯度提升树),RF(随机森林)这些算法都是用到了集成学习的思想。这一篇主要就是复习一下Boosting,Bagging和Stacking这三种方法和常用的结合策略。
集成学习(Ensemble Learning)
也被称为多分类器系统(multi-classifier system)、基于委员会的学习(committee-based learning)。顾名思义,就是将多个个体学习器用某种策略组合起来成为强学习器,通常个体学习器是由已有的学习算法从训练数据中学习产生的。
同质集成,即集成中只包含同种类型的个体学习器,这些个体学习器亦被称为基学习器,产生这些基学习器的学习算法叫作基学习算法。
异质集成,即集成中的个体学习器由不同的学习算法生成。
我们有时也会称基学习器为弱学习器。
对于强弱学习,在《统计学习方法》中有描述,概括来说就是:
在PAC框架中: | 定义 |
---|---|
强可学习 | 一个概念,如果存在一个多项式的学习算法能够学习它,并且正确率很高,那么就称这个概念是强可学习 |
弱可学习 | 一个概念,如果存在一个多项式的学习算法能够学习它,学习的正确率仅比随机猜测略好,那么就称这个概念是弱可学习 |
其实这个没太理解,不过不影响后面。
集成学习如何能获得比单一学习更好的性能呢?
既然我们将这些弱学习器集成起来得到强学习器,也就是希望能够通过这种方式提高学习器的性能,使准确率能够高于单一的弱学习器(个体学习器)。那么至少满足什么样的条件才能让集成起来的弱学习器能够比单一的弱学习器性能要好呢?
这里举《数据挖掘导论》上的一个例子来说明:
假设我们有 25 25 个做二分类的个体学习器,其中每一个个体学习器的误差均为 ε=0.35 ε = 0.35 。
1.若是所有基学习器都是没有差别的,那么集成这些基学习器之后,性能并没有提高,误差还是 0.35 0.35 。
2.若是所有个体学习器都是相互独立的(即它们的误差不相关),则当我们采用“投票法”这种结合策略时,仅当超过一半的个体学习器都预测错误时,集成后的学习器才会作出错误的预测。这种情况下,集成后的学习器误差为:
eensemble=∑i=1325Ci25εi(1−ε)25−i=0.06 e e n s e m b l e = ∑ i = 13 2 5 C 25 i ε i ( 1 − ε ) 25 − i = 0.06
明显远小于单个个体学习器的误差。
3.但是当这些个体学习器的误差 ε>0.5 ε > 0.5 时,我们会发现集成后的学习器的性能并比不上单个的个体学习器。
因此,我们想要让集成起来的个体学习器能够比单一的个体学习器性能要好必须满足两个条件:(1)个体学习器之间应该是相互独立的;(2)个体学习器的性能应当好于随机猜测。
《机器学习》一书中对此是这样描述的,个体学习器应“好而不同”,即个体学习器要有一定的“准确性”,不能太坏,并且要有“多样性”,即学习器之间具有差异。
在理想情况下,我们希望个体学习器相互独立,但在现实任务中,个体学习器是为解决同一个问题而训练出来的,显然不可能相互独立。因此我们如何产生并结合“好而不同”的个体学习器,是最为关键的问题。
集成学习分类
目前,同质个体学习器应用最为广泛,根据这些个体学习器之间是否存在依赖关系可以将其分为两类:
一类是存在强依赖关系、必须串行生成的序列化方法,如Boosting.
另一类是不存在强依赖关系、可同时生成的并行化方法,如Bagging和RF.
根据集成思想,架构可分为三类:
即Boosting、Bagging和Stacking
【Boosting】
Boosting基本思想:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本的分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值 T T ,最后将这
个基学习器进行加权结合。
过程如下图:
对于调整样本分布,我们一般用重赋权法(re-weighting)实施,即在训练过程的每一轮中,根据样本分布为每个训练样本重新赋予一个权重。当基学习算法无法接受带权样本时,则可以通过重采样法(re-sampling)来处理,即在每一轮学习中,根据样本分布对训练集重新进行采样,再用重采样而得的样本集对基学习器进行训练。一般而言,这两种方法没有显著优劣差别。
Boosting B o o s t i n g 系列算法中最著名的算法主要有 AdaBoost A d a B o o s t 和提升树。
提升树中应用最广的是梯度提升树(GBDT,Gradient Boosting Decision Tree)
【Bagging】(Bootstrap Aggregaing的缩写)
Bootstrap:
自助法,是一种有放回的抽样方法,目的是为了得到统计量的分布以及置信区间。
Bootstrap具体步骤
给定一个包含 m m