Adaboost

Adaboost是集成学习中最常用的算法之一。该算法是损失函数为指数损失的前向分步加法模型。下面是这一结论的证明过程。

10.3 Forward Stagewise Additive Modeling

  1. Initialize f0(x) = 0

2.For m =1 to M

a Compute

(βm,γm)=argminβ,γi1NL(yi,fm1(xi)+βb(xi;γ))

b set fm(x)=fm1(x)+βmb(x;γm)

该算法在每次迭代 m 中求解最优的基函数(basis function) b(x;γm) 和对应的参数 βm 加到当前的函数 fm1(x) 中,这样就生成了 fm(x) 。前面的函数的权重不会被改变。

对于平方损失函数

L(y,f(x))=(yf(x))2

L(yi,fm1(xi)+βb(xi;γ))=(yifm1(xi)βb(xi;γ))2=(γimβb(xi;γ))2

其中, γim=yifm1(xi) 就是当前模型在第i个样本上的残差。因此,对于平方损失函数来说,在每次迭代中拟合当前残差的最优的 βb(xi;γ) 加入到expansion 中。

10.4 Exponential Loss and Adaboost

Adaboost 算法

1.Initialize the observation weights wi=1/N,i=1,2,...,N
2.For m =1 to M

a Fit a classifier Gm(x) to the training data using weights wi
b Compute

errm=Ni=1wiI(yiGm(xi))Ni=1wi

c Compute αm=log((1errm)/errm)
d set wiwiexp[αmI(yi=/Gm(xi))]

该算法等价于使用指数损失函数的前向分步加法模型(forward stagewise additive modeling)

L(y,f(x))=exp(yf(x))

对于adaboost来说基函数是分类器 Gm(x){1,1} ,使用指数损失,必须先解决如下问题

(βm,Gm)=argminβ,Gi=1Nexp[yi(fm1(xi)+βG(xi))]

即每次迭代时生成的分类器和对应的权重,该问题等价于
(βm,Gm)=argminβ,Gi=1Nw(m)iexp(βyiG(xi))(10.9)

其中, w(m)i=exp(yifm1(xi)) .因为 w(m)i 既不依赖 β 又不依赖 G(x) ,它可以看做每个样本的权重。由于该权重依赖于 fm1(xi) ,所以样本权重在每次迭代时都会变化。

10.分两步解决。
首先,先求 Gm(x) . 对于任何 β>0 ,10.9中的 Gm(x) 为:

Gm=argminGi=1Nw(m)iI(yiGm(xi))

即最小化加权错误率的分类器(weighted error rate ).这样10.9可以表示为:

i=1Nw(m)iexp(βyiG(xi))=eβyi=G(xi)w(m)i+eβyiG(xi)w(m)i

可以表示为:
eβiNw(m)ieβyiG(xi)w(m)i+eβyiG(xi)w(m)i


(eβeβ)i=1Nw(m)iI(yiG(xi))+eβi=1Nw(m)i

Gm 带入上式,对 β 求导,并令导数为0,即

(eβeβ)i=1Nw(m)iI(yiG(xi))eβi=1Nw(m)i=0

两边同时除以 eβ
(e2β1)i=1Nw(m)iI(yiG(xi))i=1Nw(m)i=0

e2β1=Ni=1w(m)iNi=1w(m)iI(yiG(xi))

e2β=Ni=1w(m)iNi=1w(m)iI(yiG(xi))1

β=1/2log(Ni=1w(m)iNi=1w(m)iI(yiG(xi))1)

根据Adaboost算法中的定义:
errm=Ni=1wiI(yiGm(xi))Ni=1wi

可以看到
β=1/2log(1errm1)

αm=2βm 跟Adaboost算法中的c步中的基分类器的权重定义是相同的。

然后有

fm(x)=fm1(x)+βmGm(x)

根据w的定义 w(m)i=exp(yifm1(xi)) .可以得到

w(m+1)i=exp(yifm(xi))=exp(yi(fm1(xi)+βmGm(xi)))=exp(yifm1(xi)yiβmGm(xi)))=exp(yifm1(xi))exp(yiβmGm(xi))=w(m)iexp(yiβmGm(xi))

根据 yiGm(xi)=2I(yiGm(xi))1 上式变成:

w(m+1)i=wmiexp(αmI(yiGm(xi))βm)

其中, αm=2βm .由于 exp(βm) 对所有样本都是常数值,所以对权重更新其实没有影响。上面的权重更新和Adaboost算法中的权重更新是一致的。
综上,损失函数是指数函数的前向分步加法模型的基分类器权重和样本权重更新是相同的。

这篇其实是之前看ESL第10章的笔记。Adaboost算法最常用的基础分类器是决策树桩(decision stump)。决策树桩就是只进行一次特征选择而生产两个分支的决策树。根据树的种类可以由很多种实现方式。我在实现时使用的cart分类树,不过特征选择使用的误分类率作为特征选择的标准。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值