集成学习之boosting,Adaboost、GBDT 和 xgboost(一)

在前面的博客(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采取加权多数表决的方法。具体的加大分类误差率小的弱分类器的权重,使其在表决中起较大作用,减小分类误差率大的弱分类器的权重,使其在表决中起较小的作用(体现在弱分类器的权重 α α 与分类误差率 e m e_m 的关系式 α m = 1 2 l o g 1 e m e m α_m=\frac{1}{2}log\frac{1-e_m}{e_m} )后面详解。

AdaBoost算法:

输入:训练数据集 T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x N , y N ) y i = ( + 1 , 1 ) T={(x_1,y_1),(x_2,y_2),…(x_N,y_N)}其中y_i={(+1,-1)}
弱学习算法
输出:最终分类器G(x)
针对这个算法我想这样来学习:先纵向看,再横向看,怎么讲?往下看
首先纵向看:看什么?看顺序,即算法流程,先算什么后算什么,参数是如何联系与推导的?

1)初始化训练数据的权值分布(提升方法的2个问题中的第一个问题
D 1 = ( w 1 , 1 w 1 , i , w 1 , N ) D_1=(w_{1,1},w_{1,i}…,w_{1,N}) 其中 w 1 , i = 1 N w_{1,i}=\frac{1}{N}
纵向看:算法的第一步是初始化了一个训练数据的权重向量 D 1 D_1 **
横向看:向量的每一个元素对应着一个训练样本的权重 w 1 , i w_{1,i} :其中1 代表是训练的轮数,i代表这一轮的第i个样本的权重。
还有这个权重向量在每一轮都会进行更新(所以才叫自适应啊,讲究),如何更新见下面的步奏。
2)对 m=1,2…M (这个是训练的轮数,也是弱分类器的个数)
(a)有了权重向量了 D m D_m 以后,在原始的训练数据上结合权重向量 D m D_m 以及弱学习算法,就可以得到基本分类器了 G m ( x ) G_m(x)
(b) 有了基本分类器 G m ( x ) G_m(x) 之后,我们可以计算这个弱分类器 G m ( x ) G_m(x) 在训练数据集上的分类误差率
e m = P ( G m ( x i ) y i ) = e_m=P(G_m(x_i)≠y_i)= i = 1 N w m i I ( G m ( x i ) y i ) \displaystyle\sum_{i=1}^{N}w_{mi}I(G_m(x_i)≠y_i)

其实,弱分类器 G m ( x ) G_m(x) 在加权的训练数据集上的分类误差率是被 G m ( x ) G_m(x) 误分类样本的权值之和。**

e m = P ( G m ( x i ) y i ) = e_m=P(G_m(x_i)≠y_i)= G m ( x i ) y i w m i \displaystyle\sum_{G_m(x_i)≠y_i}w_{mi}

(c)误分类率 e m e_m 出来了,就可以使用它来计算弱分类器的权重了(前面说了分类效果不好的权重要低点)
α m = 1 2 l o g 1 e m e m α_m=\frac{1}{2}log\frac{1-e_m}{e_m}
(d) 弱分类器的系数 α m α_m 出来了,接下来可以更新训练数据集的权值分布向量了 D m D_m
(这个顺序很重要,有了向量权重D可以得出弱分类器 G m ( x ) G_m(x) ,有 了弱分类器可以计算对应的误分类率 e m e_m ,根据误分类率可以计算弱分类器的权重 α m α_m ,进而再更新权值向量,这是一个循环)
D m + 1 = ( w m + 1 , 1 , w m + 1 , i , w m + 1 , N ) D_{m+1}=(w_{m+1,1},…w_{m+1,i},…w_{m+1,N})
其中 w m + 1 , i = w m + 1 , i Z m e x p ( α m y i G m ( x i ) ) w_{m+1,i}=\frac{w_{m+1,i}}{Z_m}exp(-α_my_iG_m(x_i)) 其中 i=1,2……N
Z m = i = 1 N w m i e x p ( α m y i G m ( x i ) ) Z_m=\displaystyle\sum_{i=1}^{N}w_{mi}exp(-α_my_iG_m(x_i)) 为规范化因子
易知: Z m Z_m 的大小受到每一个样本的影响
y i G m ( x i ) y_iG_m(x_i) 的取值只能是{+1,-1},预测正确是是+1,预测失败时是-1
3)构建基本分类器的线性组合
f ( x ) = m = 1 M α m G m ( x ) f(x)=\displaystyle\sum_{m=1}^{M}α_mG_m(x)
得到最终的分类器
G ( x ) = s i g n ( f ( x ) ) = s i g n ( m = 1 M α m G m ( x ) ) G(x)=sign(f(x))=sign(\displaystyle\sum_{m=1}^{M}α_mG_m(x))

对AdaBoost算法做如下说明:
步骤1:假设训练数据集具有均匀的权值分布,即每个训练样本在基本分类器的学习中作用相同,这一假设保证第一步能够在原始数据集上学习基本分类器 G 1 ( x ) G_1(x)

步骤2:AdaBoost反复学习基本分类器,在每一轮m=1,2,3…M,顺次执行下列操作
(a)使用当前分布 D m D_m 加权的训练数据集,学习基本分类器 G m ( x i ) G_m(x_i)
(b)计算基本分类器 G m ( x i ) G_m(x_i) 在加权训练数据集上的分类误差率:
e m = P ( G m ( x i ) y i ) = e_m=P(G_m(x_i)≠y_i)= G m ( x i ) y i w m i \displaystyle\sum_{G_m(x_i)≠y_i}w_{mi}
这里, w m i w_{mi} 表示第m轮中第i个实例的权重 i = 1 N w m i = 1 \displaystyle\sum_{i=1}^{N}w_{mi}=1
这表明, G m ( x ) G_m(x) 在加权的训练数据集上的分类误差率是被 G m ( x ) G_m(x) 误分类样本的权值之和。由此可以看出数据权值分布 D m D_m 与基本分类器 G m ( x ) G_m(x) 的分类误差率的关系。
(c)计算基本分类器 G m ( x ) G_m(x) 的系数 α m α_m α m α_m 表示基本分类器 G m ( x ) G_m(x) 在最终分类器中的重要性。由 α m = 1 2 l o g 1 e m e m α_m=\frac{1}{2}log\frac{1-e_m}{e_m} 可知,当 e m e_m 小于0.5时, α m α_m 大于0,并且 α m α_m 随着 e m e_m 的减小而增大,所以分类误差率越小的基本分类器在最终分类器中的作用越大。
(d)更新数据集的权重,为下一轮做准备
w m + 1 , i = w m , i Z m e α m w_{m+1,i}=\frac{w_{m,i}}{Z_m}e^{-α_m} G m ( x ) = y i G_m(x)=y_i
w m + 1 , i = w m , i Z m e α m w_{m+1,i}=\frac{w_{m,i}}{Z_m}e^{α_m} G m ( x ) y i G_m(x)≠y_i
这样,被基本分类器 G m ( x ) G_m(x) 误分类的样本的权值得到扩大,而被正确分类的样本的权值得以缩小,因此误分类的样本在下一轮的学习中起更大的作用。

猜你喜欢

转载自blog.csdn.net/qq_16608563/article/details/82896919