1.Boosting
Boosting族算法的工作机制为:先从初始训练集中训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,然后基于调整后的样本分布来训练下一个基学习器;重复进行,直到基学习器数目达到事先指定的值;最终将所有基学习器根据结合策略结合,得到最终的强学习器。
Boosting中的基学习器是弱学习器,即仅仅比随机猜测好一点的模型,比如一个简单的决策树。使用弱学习器而不是强学习器的原因是,发现一个弱学习器通常要比发现强学习器容易得多,且Boosting方法就是从弱学习器出发,反复学习,组合构成一个强学习器。
Boosting族算法主要关注降低偏差,最着名的算法是AdaBoost和提升树(Boosting tree)。这篇博客主要介绍AdaBoost的原理和算法描述,提升树的相关内容将在下一篇博客中介绍。
2. AdaBoost原理
作为Boosting家族的一员,AdaBoost首先要回答两个问题:
1.如何改变训练样本分布?
2.采用什么样的结合策略来将基学习器结合成一个强学习器。
AdaBoost的做法是:
1.提高那些被前一轮基学习器错误分类的样本的权值,降低那些被正确分类的样本的权值;
2.对所有基学习器采用加权结合,增大分类误差小的基学习器的权值,减少分类误差率大的基学习器的权值。
理论上的AdaBoost可以使用任何算法作为基学习器,但一般来说,使用最广泛的AdaBoost的弱学习器是决策树和神经网络。
3. AdaBoost分类算法描述
输入:训练集,其中
,
;基学习算法
;基学习器个数
。
过程:
(1)初始化训练样本的权值分布
(2)对迭代轮次
(a)使用具有当前分布的训练数据集训练基学习器
;
(b)基学习器在训练数据集上的分类误差率:
(c)基学习器的权重系数
(
表示
在最终分类器中的重要性,当
时,
,并且
随
减少而增大。分类误差率
越小的基学习器在最终强学习器中的权值越高):
(d)更新训练集的样本分布:
其中,是规范化因子,只是为了保证
相加为1,
是一个概率分布。
(3)构建基学习器的线性组合,得到最终的强分类器:
输出:强分类器。
4. AdaBoost公式推导
首先介绍一下前向分步算法(forward stagewise algorithm)的基本思想:对加法模型的复杂优化问题,前向分步算法对加法模型的每一步进行单独优化求解。
AdaBoost的算法可以看成是模型为加法模型,损失函数为指数函数,学习算法为前向分步算法时的一种学习方法。
1.为什么选定指数函数作为损失函数?
这是因为极小化指数损失函数等价于最小化分类误差率,并且由于指数损失函数是连续可微的,具有更好的数学性质,因此用它来代替0/1损失函数作为优化目标。证明如下:
AdaBoost的算法的最终模型是基学习器的线性组合:
(1)
指数损失函数是:
(2)
式(2)可化为:
(3)
对式(3)求偏导得:
(4)
令偏导为零,得到能最小化指数损失函数的:
(5)
因此,对分类任务而言,有
(6)
(6)式说明极小化指数损失函数等价于最小化分类误差率,证明了指数损失函数是分类任务0/1损失函数的一致替代。
2.由于同时求解所有最优基学习器及其权重系数
十分困难,AdaBoost的算法利用前向分步算法优化。为什么前向分步算法求解得到的基学习器及其权重系数,就是最终模型的最优基学习器及权重呢?
证明如下:
假设经过轮迭代,前向分步算法已经得到
。
第轮迭代将要得到:
(7)
那么第轮迭代的目标是得到能最小化
的指数损失函数的
、
,即:
(8)
令,(8)式可化为:
(9)
不依赖于
和
,与最小化无关,只依赖于
。也就是说,第
轮迭代得到的最优
、
就是最终模型的
、
。这就证明了由前向分步算法求解损失函数得到的结果与真实结果一致。
3. 基学习器权重公式和样本分布更新公式是怎么来的?
首先,求。最优
由下式得到:
(10)
对任意给定的,
都是一个常数,不影响最优化结果。因此(11)式可以化为式(12),得到最优
。
(11)
然后,求解。最优
由下式得到:
(12)
将公式进行变换得到:
(13)
将式(11)得到的代入上式,并对
求偏导,使偏导为0,得到最优
:
(14)
由此,便得到了基学习器的权值公式——式(14)。
其中,是分类误差率:
(15)
最后来看每一轮样本权值的更新,由和式(7)可以得到:
(16)
在右边除以一个规范化因子,便可得到样本分布更新公式。
5. AdaBoost回归算法描述
输入:训练集,其中
,
;基学习算法
;基学习器个数
。
过程:
(1)初始化训练样本的权值分布
(2)对迭代轮次
(a)使用具有当前分布的训练数据集训练基学习器
;
(b)计算训练集上的样本最大误差:
(c)计算每个样本的相对误差:
如果是线性误差,则;
如果是平方误差,则;
如果是指数误差,则。
(d)基学习器在训练数据集上的回归误差率:
(e)基学习器的权重系数
:
(f)更新训练集的样本分布:
其中,是规范化因子:
(3)构建基学习器的线性组合,得到最终的强学习器:
其中,是所有
的中位数。
输出:强学习器。
6. AdaBoost优缺点
优点:
1. AdaBoost分类精度很高;
2. 可以使用各种回归分类模型构建弱学习器;
3. 不易发生过拟合。
缺点:
对异常样本敏感,异常样本在迭代中可能获得较大权重,影响强学习器的预测准确性。
参考文献:
1.《机器学习》第八章集成学习——周志华
2.《统计学习方法》第八章提升方法——李航