Boosting基本介绍
Boosting算法是指组合多个基分类器,得到比单个分类器更强性能的一类技术,本文介绍使用最广泛的AdaBoost模型,它的全名是“adaptive boosting”,即“自适应提升模型”。Boosting能得到很好的结果,即便基分类器只是比随机猜测好一点点,有时候也叫基分类器为“弱学习器”。Boosting最早被设计为分类问题,但也能扩展到回归问题。
Boosting和bagging最主要的区别是,前者的基分类器被串行训练,即每个基分类器用加权形式的数据集训练,其中每个数据样本的权重系数依赖前一个分类器的性能。事实上,被前一个基分类器错分的数据点在下一个基分类器的训练中会被给予更大的权重。一旦所有的基分类器被训练完成,它们的预测会通过某种加权投票机制进行组合,得到最终预测结果。
Boosting的完整训练和预测过程如下图所示:
(图1)
其中表示多个基分类器,
表示加权形式的训练集,蓝色箭头表示某个基分类器在对应的训练集上训练,绿色箭头表示权重
依赖前一个基分类器
的性能。当所有基分类器训练结束,它们被加权求和并符号化得到最终分类器
,用红色箭头表示。
对于二分类问题,训练数据由输入向量和二值目标变量
构成,其中
。每个数据点被赋予一个权重系数
,初始值全为
。我们假设,我们有一个可行的方法来基于加权的数据训练基分类器,得到基分类器(也叫函数)
。在算法的每个阶段,AdaBoost使用一个数据集训练新的分类器,其中数据集的权重系数根据前一个分类器的性能进行调整,准则是“关注错分”,即被错误分类的数据点具有更大的权重。最后,当所有基分类器被训练结束,它们被组合构造得到AdaBoost。具体算法如下:
AdaBoost算法
1. 初始化数据点权重系数,其中对于每个
,都有
2. 对于每个:
a)训练基分类器,其中损失函数为如下加权函数:
(式1)
上式中是一个指示函数,它在满足
条件时取1,其余取0.
b)计算如下权重归一化指标(表示某种错误率):
(式2)
然后利用的对数几率计算
,如下:
(注意:对数几率指的是,一件事情发生概率p与不发生概率1-p的比值,然后取log)
(式3)
c)更新数据权重系数,即利用计算
,公式如下:
(式4)
可以看到,当上一次预测错误,那么函数取1,
函数将大于1,权重将增大。
而当上一次预测正确,函数取0,而
,权重没有变化。
(说明:在有的算法实现中,若上一次预测正确,函数取-1,权重将减小。)
3. 利用最终模型进行预测,预测结果的公式与图1一致,为:
(式5)
总结一下:第一个基分类器用所有相等的权重系数
训练得到。式4是权重系数的迭代过程,当上一次预测错误,
将增加,反之,
将相对下降。这意味着后续分类器将被迫关注那些被前面分类器错分的数据点。当某数据点被多个基分类器连续错分,它的权重将持续增大。式2中的指标
是对某个基分类器的加权错误率的测量。式3定义的权重系数
将会给能正确分类的分类器更大的权重,当在式5中计算整体输出的时候。两个权重:分类器权重
和数据样本权重
,是“我中有你,你中有我”、“互相依赖,交织迭代”的关系。
利用Adaboost算法的30个数据点的分类实验如下图所示:
(图2)
每个基分类器对输入变量定义了阈值(threshold)。每个基分类器其实是只有一个节点的决策树,也叫做决策树桩,即decision stumps。每个决策树桩根据是否有输入的特征值超过某个阈值,来决定如何划分决策空间,为了简单起见,每个划分表面是平行于坐标轴的线性决策边界。每个方形图中的m表示到目前为止已经训练好的基分类器的个数,黑色虚线表示最新的基分类器的决策边界,绿色实线表示集成的决策边界。数据点用圆形表示(红色和蓝色两种),而它的半径表示赋予的权重大小。可以看到,被m=1分类器错分的数据点,在m=2分类器中的权重变大了。
最小化指数误差
Boosting最早来自统计学习理论,它有一个通用误差的上界。但是这些上界被证实太宽松了,以至于没有什么实用价值。Boosting的实际性能远比这些上界所能提供的更好。有一位名叫Friedman的大神曾在2000年给出过一个与众不同但非常简单的对Boosting的理解,是从对指数误差函数的最小化角度出发的。考虑如下指数误差函数:
(式6)
其中是从对基分类器
的线性组合角度定义得到的集成分类器,其公式如下:
(式7)
而是训练集的目标值(即标记值)。我们的目标是最小化E函数,其中把基分类器的权重系数
和每个基分类器
的参数看成变量。我们不需要做全局性的误差函数最小化,我们只需要假设基分类器
是固定的,当然也包括它们的系数
,然后只对
和
做最优化即可。为了把基分类器
区分开来,我们可以将误差函数改写成如下:
(式8)
其中第一步是将式6根据式7展开,将其拆分成和
两项。第二步将exp中两项相减的形式拆成相乘的形式,并把第一项记为权重
,即:
,我们可以将其看成常量,因为我们只是在优化
和
。我们将被
分类器正确分类的数据点记为
,将错误分类的数据点记为
,那么误差函数可改写为:
(式9)
其中第一步是根据式8展开,并基于如下事实,若分类正确,那么无非以下两种情况:,且
,或
,且
,无论哪种,都有
,若错误分类,那么同样有两种情况,但都满足
,那么根据式8,就能直接把它拆分成正确分类和错误分类两项之和。第二步,一个简单的验证方法是倒推,把对所有样本的求和拆分成正确分类和错误分类的情况,当错误分类,即
,则
,那么第一项就是
,当正确分类,即
,则
,那么第一项就是
,因此这两种情况之和就比第一步的结果多了
和
两项,与
抵消。
当我们让式9对求最优化,注意此时第二项是常量,而第一项
求和之前的乘法因子不影响最优点的位置,因此整体相当于在优化式1。类似的,当把
看成变量进行优化,我们就得到了
的表达式,即式3,其中
的表达式由式2给出,过程省略。
根据式8可得,当确定了和
,就能用以下公式迭代得到数据点的新权重:
(式10)
现在考虑如下事实公式:
(式11)
(当,那么
,等式右边为-1,左边为1*(-1)或(-1)*1,也是-1,等式成立;当
,那么
,等式右边为1,左边为1*1或(-1)*(-1),也是1,等式成立。)
将式11代入式10可得权重迭代的新公式:
(式12)
注意到独立于n(即与n无关),且它对所有数据点都赋予相同的因子,因此可以被丢弃,于是我们得到:
即式4。
当所有基分类器训练完成,数据点根据式7定义的组合函数的符号进行分类,其中1/2这个因子不影响整体符号,因此可以忽略,最终得到式5。
参考资料
《模式识别与机器学习》,2006 年。
《统计学习方法》,2012年。