1 引言
目前集成学习主要分为两类,一是基学习器之间存在强依赖关系、其必须串行生成的序列化方法,二是基学习器之间没有非常强的依赖关系、可同时生成的并行化方法。前者代表的算法为Boosting,后者则为Bagging和“随机森林”(Random Forest),本文着重讲解有关Boosting算法的具体内容及算例分析。
2 Boosting
Boosting是指将一系列弱学习器经过某种组合的方法提升为强学习器的算法,其基本思路如下:先在原始数据上训练出一个弱学习器(也称基学习器),再根据生成的基学习器改变原始数据的分布,使得后续的训练可以进一步关注到该基学习器出错的样本集。继续在经过上述改变的数据上训练下一个基学习器,如此重复进行数据的改变和基学习器的训练,直到所训练好的基学习器组合后的学习器可以达到分类要求。而其中最具代表性的便是AdaBoost算法[1],下面将着重介绍该算法的具体原理以及实际运用。
![d](https://i-blog.csdnimg.cn/blog_migrate/a004bf2480d627e84bf1bceff17b28a4.png)
图1:Boosting具体流程示意图
3 AdaBoost算法
3.1 加性模型
AdaBoost算法所使用的基于加性模型(additive model)的强学习器生成方法,所谓加性模型即是各基学习器的线性组合
f(x)=∑m=1Mβmbm(x;γm)(1) (1) f ( x ) = ∑ m = 1 M β m b m ( x ; γ m )
其中, x x 为输入数据, 为模型参数, bm(x;γm) b m ( x ; γ m ) 为关于 x x 的二分类器 。而其中的 { βm,γm} { β m , γ m } 参数是由所定义的损失函数所确定,其计算表达式如下:
<β∗m,γ∗m>M1=argmin{
βm,γm}m1∑i=1NL(yi,∑m=1Mβmbm(x;γm))(2) (2) < β m ∗ , γ m ∗ > 1 M = arg min { β m , γ m } 1 m ∑ i = 1 N L ( y i , ∑ m = 1 M β m b m ( x ; γ m ) )
<script type="math/tex; mode=display" id="MathJax-Element-8"><\beta_{m}^{*},\gamma_{m}^{*}>_{1}^{M}=\arg\min_{\{\beta_{m},\gamma_{m}\}_{1}^{m}}\sum_{i=1}^{N}L(y_{i},\sum_{m=1}^{M}\beta_{m}b_{m}(x;\gamma_{m}))\tag{2}</script>
在给定训练数据以及所定义的损失函数后,求解强分类器的问题便变成了优化(2)式右边使得总体的损失误差达到最小。考虑到我们所使用的模型为加性模型,那么从前至后,我们每一步只需要学习一个基函数以及其相应的系数。那么在模型参数的确定过程中便可以使用前向分布算法(forward stagewise algorithm)思想,每一步只需优化使得单步的损失函数达到最小即可。
minβ,γ∑i=1NL(yi,βmbm(xi;γ))(3) (3) min β , γ ∑ i = 1 N L ( y i , β m b m ( x i ; γ ) )
3.2 损失函数
在这里我们使用指数损失函数(exponential loss function)[2]来进行上述的优化操作,其定义如下
L(y,f(x))=e−yf(x)(4) (4) L ( y , f ( x ) ) = e − y f ( x )
所求得的强分类器 f(x) f ( x ) 需使得指数损失函数达到最小,考虑到式(4)对 f(x) f ( x ) 对偏导
∂L(y(x),f(x))∂f(x)=−ef(x)P(y(x)=1|x)+ef(x)P(y(x)=−1|x)(5) (5) ∂ L ( y ( x ) , f ( x ) ) ∂ f ( x ) = − e f ( x ) P ( y ( x ) = 1 | x ) + e f ( x ) P ( y ( x ) = − 1 | x )
令(5)式为0可得
f(x)=12lnP(y(x)=1|x)P(y(x)=−1|x)(6) (6) f ( x ) = 1 2 ln P ( y ( x ) = 1 | x ) P ( y ( x ) = − 1 | x )
故有
sign(f(x))==sign(12lnP(y(x)=1|x)P(y(x)=−1|x)){
1,P(y(x)=1|x)>P(y(x)=−1|x)−1,P(y(x)=1|x)<P(y(x)=−1|x)(7) s i g n ( f ( x ) ) = s i g n ( 1 2 ln P ( y ( x ) = 1 | x ) P ( y ( x ) = − 1 | x ) ) (7) = { 1 , P ( y ( x ) = 1 | x ) > P ( y ( x ) = − 1 | x ) − 1 , P ( y ( x ) = 1 | x ) < P ( y ( x ) = − 1 | x )
从上式便可以看出,若指数损失函数达到最小则分类错误率也将到达最小值。因此,由于指数损失函数具有更好的数学性质(例如是连续可微函数),我们将使用该损失函数代替0/1损失函数作为优化对象。
3.3 分类器参数更新
根据分类器的加性特征我们有
fm(x)