提升学习算法简述:AdaBoost, GBDT和XGBoost

提升学习算法,又常常被称为Boosting,其主要思想是集成多个弱分类器,然后线性组合成为强分类器。为什么弱分类算法可以通过线性组合形成强分类算法?其实这是有一定的理论基础的。1988年,Kearns和Valiant首先提出了“强可学习”和“弱可学习”的概念,他们指出,在概率近似正确(Probably Approximately Correct, PAC)学习的框架中,一个概念,如果存在一个多项式的学习算法能够学习它,并且正确率很高,那么就称这个概念是强可学习的;如果正确率只是稍比随机猜测好,那么就称这个概念是弱可学习的。在两年之后,Schapire证明了强可学习和弱可学习是等价的,也就是说,在PAC学习的框架下,一个概念的强可学习可以由弱可学习转换得到。但在此后很长一段时间里,都没有人能设计一种算法验证PAC理论。直到1996年,Schapire提出了AdaBoost算法才将这种僵局打破。AdaBoost算法将多个不同的决策树用一种非随机的方式组合起来,比传统决策树精度更高也更加稳定。AdaBoost的出现不仅拯救了有些式微的决策树算法,而且还开创了集成学习算法的先河。在AdaBoost的影响下,Friedman在1999年提出了梯度提升决策树算法,这种算法完美地将梯度提升算法和CART算法结合起来,不仅可以用于回归问题,同样也可以应用于分类问题中。GBDT被很多人认为是传统机器学习中位居Top3的算法。即使这样,GBDT也并不完美,相比于AdaBoost,因为后一棵树的训练依赖于前一棵树的残差,所以其并不能进行并行训练。XGBoost是近年来针对大规模机器学习需求对GBDT提出的改进方案。XGBoost是2016年由华盛顿大学在读博士生陈天奇发布的开源框架,相关论文 XGBoost: A Scalable Tree Boosting System 也发表在机器学习与数据挖掘顶级会议KDD2016上。XGBoost较传统的GBDT算法,加入了正则项,能够更好地防止模型过拟合,并且可以并行分布式计算,极大地提高了精度和训练效率。

2. AdaBoost

AdaBoost的关键在于如何生成多个不同的弱分类器,其主要思想是在下一轮迭代中强化那些被误分类的样例,而弱化那些被正确分类的样例。在实际设计时,通过调整每个样例的权重来达到给予不同样例不同关注程度的目的。每一轮的权重调整都是基于上一轮分类器对所有样例分类情况的误差评估,而每个分类器的权重则是由该分类器对样例总体精度决定。

这里我们以最简单的二类分类问题为例对AdaBoost算法进行介绍,其他分类和回归问题与此类似。假定二类分类问题的训练数据集为:$(X,y)=\{(x_1,y_1), (x_2,y_2),...,(x_n,y_n)\}$。其中每个训练样本由特征向量和标记组成,特征向量$x_i \in \mathbb{R}^d, i=1,2,...,n$,$d$为特征向量的维度,标记$y_i \in \{\pm1\}, i=1,2,...,n$。下面将介绍AdaBoost的详细算法流程。

1. 初始化训练数据的权值:

$$W_1=(w_{1,1},w_{1,2},...,w_{1,i},...,w_{1,n}),w_{1,i}=\frac{1}{n},i=1,2,...,n$$

在最开始的时候,我们并不知道训练数据的权值分布,只能假定每个训练样例在初始的基本分类器中的作用相同,所以设置每个样例的权重相同。

2. 对当前的权值分布$W_m$,使用训练数据进行训练,得到当前轮的基本分类器:

$$F_m(x):x\rightarrow \{\pm1\}$$

使用具有权重的训练数据进行训练,需要对训练方法的公式稍加修改。

3. 计算$F_m(x)$在训练数据集上的分类误差率:

$$e_m=P\left(F_m(x)\neq y_i\right)=\sum_{i=1}^{n}w_{m,i}\,I\left(F_m(x_i)\neq y_i\right)$$

$$ I\left(F_m(x_i)\neq y_i\right)=\left\{
\begin{aligned}
1&&     F_m(x_i)\neq y_i\\
0&&    F_m(x_i)=y_i\\
\end{aligned}
\right.
$$

因为每个训练样例都有权重,所以我们只需要将那些错误分类的样例的权重全部相加即可计算得出基本分类器在训练数据上的分类误差率。

4. 计算当前分类器$F_m(x)$的权重:

$$\alpha_m=\frac{1}{2}\ln\left(\frac{1-e_m}{e_m}\right)$$

可以看出,当$e_m<\frac{1}{2}$时,$\alpha_m>0$,并且随着$e_m$的减小而增大。即,分类误差率越大的权重应该越小,反而精度越高的权重应该越大。这其实很符合现实规律,比如三个人共同筹资创建一个公司,甲出资$30$万元,乙出资$15$万元,丙出资$5$万元,按出资比例,甲占股$60\%$,乙占股$30\%$,丙占股$10\%$。在公司股东会表决某项决议的时候,甲拥有$60\%$的投票权,而乙和丙分别拥有$30\%$和$10\%$的投票权。

5. 使用$w_{m,i}$,$\alpha_m$,$F_m(x_i)$和$y_i$更新样例$i$的权重:

$$w_{m+1,i}=\frac{w_{m,i}}{Z_m}exp\left(-\alpha_m \, y_i \,F_m\,(x_i)\right)$$

$Z_m$为规范化因子,使$W_{m+1}$称为一个合理的概率分布:

$$Z_m=\sum_{i=1}^{n}w_{m,i}\,exp\left(-\alpha_m \, y_i \,F_m\,(x_i)\right)$$

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxffw.html