在前面的博客(https://blog.csdn.net/qq_16608563/article/details/82878127)
介绍了集成学习的bagging方法及其代表性的随机森林。此次接着介绍集成学习的另一个方法boosting以及boosting系列的一些算法,具体包括 Adaboost、GBDT和xgboost
boosting(提升)方法是一种常用的统计学习方法,应用广泛且有效。在分类问题中
,它通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性能。与bagging不同的是,各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。
提升方法AdaBoost算法:
提升算法的基本思想:对于一个复杂的任务来说,将多个分类器的判断进行适当的综合得出的判断,要比任何一个分类器单独判断的结果要好。
强可学习与弱可学习:在概率近似正确的学习框架中(PAC),一个概念,如果存在一个多项式的学习算法可以学习它,并且正确率很高,那么称这个概念是强可学习的。
如果存在一个多项式的学习算法可以学习它,但学习的正确率仅仅比随机猜测略好,那么这个概念是弱可学习的。
结论:在PAC学习的框架下,一个概念是强可学习的充分必要条件是这个概念是弱可学习的。
那么问题来了,如果已经发现了“弱学习算法”,那么是否可以将它提升为“强可学习算法”
(弱学习算法是比较容易发现的)
提升方法就是从弱学习算法出发,反复学习,得到一系列弱分类器(又称为基本分类器),然后组合这些弱分类器,构成一个强分类器。
大多数的提升方法都是改变训练数据的概率分布(训练数据的权值分布),针对不同的训练数据分布调用弱学习算法学习一系列的弱分类器。
这样,对于提升方法来说,有两个问题需要回答:
1)在每一轮如何改变数据的权值(训练样本的权重)或概率分布
2)如何将弱分类器组合成一个强分类器。
AdaBoost(Adaptive Boost):自适应提升
AdaBoost巧妙而自然的回答了以上的2个问题并把他们完美的融合在了一个算法中。
针对第一个问题,AdaBoost的做法是:**提高那些被前一轮弱分类器错误分类样本的权值,而降低那些被正确分类样本的权值。**这样一来,那些没有被正确分类的样本,由于其权值的加大而受到后一轮弱分类器的更大关注。
针对第二个问题:即弱分类器的组合,AdaBoost采取加权多数表决的方法。具体的加大分类误差率小的弱分类器的权重,使其在表决中起较大作用,减小分类误差率大的弱分类器的权重,使其在表决中起较小的作用(体现在弱分类器的权重 与分类误差率 的关系式 )后面详解。
AdaBoost算法:
输入:训练数据集
弱学习算法
输出:最终分类器G(x)
针对这个算法我想这样来学习:先纵向看,再横向看,怎么讲?往下看
首先纵向看:看什么?看顺序,即算法流程,先算什么后算什么,参数是如何联系与推导的?
1)初始化训练数据的权值分布(提升方法的2个问题中的第一个问题)
其中
纵向看:算法的第一步是初始化了一个训练数据的权重向量
**
横向看:向量的每一个元素对应着一个训练样本的权重
:其中1 代表是训练的轮数,i代表这一轮的第i个样本的权重。
还有这个权重向量在每一轮都会进行更新(所以才叫自适应啊,讲究),如何更新见下面的步奏。
2)对 m=1,2…M (这个是训练的轮数,也是弱分类器的个数)
(a)有了权重向量了
以后,在原始的训练数据上结合权重向量
以及弱学习算法,就可以得到基本分类器了
(b) 有了基本分类器
之后,我们可以计算这个弱分类器
在训练数据集上的分类误差率
其实,弱分类器 在加权的训练数据集上的分类误差率是被 误分类样本的权值之和。**
(c)误分类率
出来了,就可以使用它来计算弱分类器的权重了(前面说了分类效果不好的权重要低点)
(d) 弱分类器的系数
出来了,接下来可以更新训练数据集的权值分布向量了
(这个顺序很重要,有了向量权重D可以得出弱分类器
,有 了弱分类器可以计算对应的误分类率
,根据误分类率可以计算弱分类器的权重
,进而再更新权值向量,这是一个循环)
其中
其中 i=1,2……N
为规范化因子
易知:
的大小受到每一个样本的影响
的取值只能是{+1,-1},预测正确是是+1,预测失败时是-1
3)构建基本分类器的线性组合
得到最终的分类器
对AdaBoost算法做如下说明:
步骤1:假设训练数据集具有均匀的权值分布,即每个训练样本在基本分类器的学习中作用相同,这一假设保证第一步能够在原始数据集上学习基本分类器
步骤2:AdaBoost反复学习基本分类器,在每一轮m=1,2,3…M,顺次执行下列操作
(a)使用当前分布
加权的训练数据集,学习基本分类器
(b)计算基本分类器
在加权训练数据集上的分类误差率:
这里,
表示第m轮中第i个实例的权重
这表明,
在加权的训练数据集上的分类误差率是被
误分类样本的权值之和。由此可以看出数据权值分布
与基本分类器
的分类误差率的关系。
(c)计算基本分类器
的系数
,
表示基本分类器
在最终分类器中的重要性。由
可知,当
小于0.5时,
大于0,并且
随着
的减小而增大,所以分类误差率越小的基本分类器在最终分类器中的作用越大。
(d)更新数据集的权重,为下一轮做准备
当
当
这样,被基本分类器
误分类的样本的权值得到扩大,而被正确分类的样本的权值得以缩小,因此误分类的样本在下一轮的学习中起更大的作用。