Boosting提升算法
Boosting算法是将“弱学习算法”提升为“强学习算法”的过程,最具有代表性的是AdaBoost算法。Boosting提升算法思想:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个单独判断的好;相当于“三个臭皮匠顶个诸葛亮”。一般来说,提升方法就是从弱学习算法出发,反复学习,得到一系列弱分类器(基本分类器),组合这些弱分类器得到一个强分类器。
AdaBoost算法介绍
AdaBoost算法过程
(1).初始化训练数据集的权值分布,共有N个训练样例。
(2).进行M轮迭代学习,第m轮学习过程如下:
(a).使用具有权值分布Dm的训练数据集学习,得到基本分类器Gm;
(b).计算Gm在训练数据集上的分类误差率em:
(c).计算Gm的权重系数:
(d).更新训练样例的权重系数:
(e).重复(a)~(d).得到一系列的权重参数am和基分类器Gm;
(3).将上一步得到的基分类器根据权重参数线性组合,得到最终分类器:
算法中的两个权重分析
(1).关于基分类器权重的分析:
上面计算的am表示基分类器在最终的分类器中所占的权重,am的计算根据em而得到,由于每个基分类器的分类性能要好于随机分类器,故而误差率em<0.5.(对二分类问题)当em<0.5时,am>0且am随着em的减小而增大,所以,分类误差率越小的基分类器在最终的分类器中所占的权重越大。
(2).训练样例的权重分析:
根据公式可知,由于am>0,故而exp(-am)<1,当样例被基本分类器正确分类时,其权重在减小,反之权重在增大。通过增大错分样例的权重,让此样例在下一轮的分类器中被重点关注,通过这种方式,慢慢减小了分错样例数目,使得基分类器性能逐步改善。
算法中的训练误差分析
关于误差上界有以下不等式,此不等式说明了AdaBoost的训练误差是以指数的速度下降的。
AdaBoost算法推导过程
AdaBoost算法使用加法模型,损失函数为指数函数,学习算法使用的前向分布算法。
其中加法模型为:
损失函数为指数函数:
假设已经经过m-1轮迭代,得到Fm-1(x),根据前向分步,我们可以得到:
已知AdaBoost是采用指数损失,由此可以得到损失函数:
化简之后的损失函数,接下来对损失函数求导,对am求偏导如下:
参考文献:
【1】李航,统计学习