集成学习之AdaBoost分析
简介
AdaBoost算法是一种集成学习(ensemble learning)方法。集成学习是机器学习中的一类方法,它对多个机器学习模型进行组合形成一个精度更高的模型,参与组合的模型称为基学习器(weak learner)或弱分类器。在预测时使用这些弱学习器模型联合起来进行预测。训练时需要用训练样本集依次训练出这些弱学习器。AdaBoost算法是boosting算法的典型代表,boosting的结合方法属于并行。
一、 基分类器与强分类器
AdaBoost算法的全称是自适应boosting(Adaptive Boosting),是一种用于二分类问题的算法,它是将弱分类器进行线性组合来构造强分类器。对于每一个的弱分类器不用要求性能特别的出色,依靠它们可以构造出一个非常准确的强分类器。强分类器的计算公式和示意图为:


公式解析:其中x是输入向量,
表示每一个是弱分类器,
是每一个弱分类器的权重,T为弱分类器的数量,弱分类器的输出值为+1或-1,分别对应正样本和负样本,F (x)是弱分类器组合起来的强分类器。分类时的判定规则基于sgn函数,表示为:
其中sgn是符号函数,是机器学习中经常会使用的一个函数,公式及函数图像表示为:


强分类器的输出值也为+1或-1,同样对应于正样本和负样本。这里的强分类器模型就是这些弱分类器和它们的权重通过训练算法得到,后面我们会介绍。之所以又叫弱分类器,是因为它们的精度不用太高,对于二分类问题,只要保证准确率大于0.5即可,即比随机猜测强,随机猜测也有50%的准确率。
二、 AdaBoost的训练
现在来看AdaBoost算法的模型是怎么训练出来的。算法依次训练每一个弱分类器,并确定它们的权重值。
初始阶段,训练样本都带有权重值,并且初始时所有样本的权重相等,在训练过程中,被前面的弱分类器错分的样本会加大权重,反之会减小权重,这样接下来的弱分类器会更加关注这些难分的样本。弱分类器的权重值根据它的准确率构造,精度越高的弱分类器权重越大。
假设给定L个训练样本
,其中
是特征向量,
为类别标签,其值为+1或-1。训练算法的流程为:
·初始化样本权重值,此时所有样本的初始权重相等:
·循环,对t = 1,..., T依次训练每个弱分类器:训练一个弱分类器
,并计算它对训练样本集的错误率
。计算弱分类器的权重:

·更新所有样本的权重:

其中
为归一化因子,它是所有样本的权重之和:

·结束循环,最后得到强分类器:

根据计算公式,错误率低的弱分类器权重大,它是准确率的增函数。弱分类器在训练样本集上的错误率计算公式为:

在这里考虑了样本权重值。因为可以保证在训练集上弱分类器的正确率大于0.5,所以有:
因此弱分类器的权重大于0。弱分类器的错误率小于0.5是能保证的,如果准确率小于0.5,只需要将弱分类器的输出反号
即可。对于被弱分类器正确分类的样本,有:
对于被弱分类器错误分类的样本,有:
因此样本权重更新公式可以简化为:

由于:

它可以进一步可以简化成:

被上一个弱分类器错误分类的样本权重会增大,正确分类的样本权重减小,训练下一个弱分类器时算法会关注在上一轮中被错分的样本。给样本加权重是有必要的,如果样本没有权重,每个弱分类器的训练样本是相同的,训练出来的弱分类器也是一样的,这样训练多个弱分类器没有意义。AdaBoost算法的原则是:关注之前被错分的样本,准确率高的弱分类器有更大的权重。
总结
在实际应用时一般用深度很小的决策树,强分类器是弱分类器的线性组合,如果弱分类器是线性函数,无论怎样组合,强分类器都是线性的,因此应该选择非线性的分类器做弱分类器。至此,我们介绍了AdaBoost算法的基本原理与训练过程。
浙公网安备 33010602011771号