AdaBoost算法详解及示例分析

本文详细介绍了AdaBoost算法,一种Boosting方法,用于将弱学习器提升为强学习器。通过加性模型、指数损失函数和分类器参数更新来构建强分类器。文章还提供了一个算法流程,并给出了MATLAB实现的代码示例。
摘要由CSDN通过智能技术生成

1 引言

目前集成学习主要分为两类,一是基学习器之间存在强依赖关系、其必须串行生成的序列化方法,二是基学习器之间没有非常强的依赖关系、可同时生成的并行化方法。前者代表的算法为Boosting,后者则为Bagging和“随机森林”(Random Forest),本文着重讲解有关Boosting算法的具体内容及算例分析。

2 Boosting

Boosting是指将一系列弱学习器经过某种组合的方法提升为强学习器的算法,其基本思路如下:先在原始数据上训练出一个弱学习器(也称基学习器),再根据生成的基学习器改变原始数据的分布,使得后续的训练可以进一步关注到该基学习器出错的样本集。继续在经过上述改变的数据上训练下一个基学习器,如此重复进行数据的改变和基学习器的训练,直到所训练好的基学习器组合后的学习器可以达到分类要求。而其中最具代表性的便是AdaBoost算法[1],下面将着重介绍该算法的具体原理以及实际运用。

d
图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 为输入数据, { β m , γ m } 为模型参数, bm(x;γm) b m ( x ; γ m ) 为关于 x x 的二分类器 G m ( x ; γ m ) : R K { 1 , 1 } 。而其中的 { βm,γm} { β m , γ m } 参数是由所定义的损失函数所确定,其计算表达式如下:
<βm,γm>M1=argmin{ βm,γm}m1i=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))=eyf(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)
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值