@77qingliu
2018-05-29T18:39:08.000000Z
字数 5167
阅读 2255
machine-learning
集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器。
下图显示出集成学习的一般结构:先产生一组“个体学习器”,再用某种策略将它们结合起来。
个体学习器通常由一个现有的学习算法从训练数据产生,例如决策树算法、BP神经网络算法等等。
若个体学习器都属于同一类别,例如都是决策树或都是神经网络,则称该集成为同质的(homogeneous);若个体学习器包含多种类型的学习算法,例如既有决策树又有神经网络,则称该集成为异质的(heterogenous)。
同质集成:个体学习器称为“基学习器”(base learner),对应的学习算法为“基学习算法”(base learning algorithm)。
异质集成:个体学习器称为“组件学习器”(component learner)或直称为“个体学习器”。
集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能。这对“弱学习器”尤为明显,因此集成学习的很多理论研究都是针对弱学习器进行的,而基学习器又被称为弱学习器。但需要注意的是,虽然从理论上来说使用弱学习器集成足以获得好的性能,但在实践中出于种种考虑,例如希望使用较少的个体学习器,或是重用关于常见学习器的一些经验等,人们往往会使用比较强的学习器。
上面我们已经提到要让集成起来的泛化性能比单个学习器都要好,虽说团结力量大但也有木桶短板理论调皮捣蛋,那如何做到呢?这就引出了集成学习的两个重要概念:准确性(accuracy)和多样性(diversity)。准确性指的是个体学习器不能太差,要有一定的准确度;多样性则是个体学习器之间的输出要具有差异性。通过下面的这三个例子可以很容易看出这一点,准确度较高,差异度也较高,可以较好地提升集成性能。
我们做个简单分析。考虑二分类问题和真实函数,假定基分类器的错误率为,即对每个基分类器有
提升方法(Boosting)是一族可将所分类器提升为强学习器的算法,这族算法的工作机制类似:
对提升方法来说,有两个问题需要回答:一是在每一轮如何改变训练数据的权值或概率分布;二是如何将弱分类器组合成一个强分类器。关于这两个问题,Boosting族算法中最著名AdaBoost的做法是,提高那些被前一轮弱分类器错误分类样本的权值,而降低那些被正确分类样本的权值。至于第二个问题,即弱分类器的组合,AdaBoost算法采用加权多数表决的方法。具体地,加大分类错误率小的弱分类器的权值,使其在决定中起较大的作用,减少分类误差率大的弱分类器的权值,使其在表决中起较小的作用。下面介绍AdaBoost算法的基本思路。
现在叙述AdaBoost算法。假设给定一个二类分类的训练数据集
输入:训练集 ,训练轮数T,和一个基学习算法
输出:最终分类器
构建基本分类器的线性组合
Adaboost算法有多种推导方式,比较容易理解的是基于“加性模型”,即基学习器的线性组合
那么损失函数为什么这样定义呢?下面证明:
若能使损失函数最小化,那我们考虑上式对的偏导为零:
令上式为零,得:
因此,有
当时,
当时,
这样的分类规则正是我们所需要的,若指数函数最小化,则分类错误率也最小,它们俩是一致的。所以我们的损失函数可以这样定义。
接下来,我们看一下基类器 和系数 的求取。
在Adaboost算法中,第一个分类器是直接将基学习算法用于初始数据分布求得,之后不断迭代,生成 和 。当第m个基分类器产生后,我们应该使得其在数据集第m轮样本权重基础上的指数损失最小,即:
这一部分比较长,在周志华老师《机器学习》P175有详细的推导,感兴趣的读者可以自行查阅。这里直接给出 D_m 的迭代公式。
随着集成学习中个体分类器数目的增加,其集成的错误率将成指数级下降,最终趋向于零。
李航老师《统计学习方法》有详细的证明。这里就不再赘述了。
这里对AdaBoost算法的优缺点做一个总结。
AdaBoost的主要优点有:
AdaBoost的主要缺点有: