≪统计学习精要(The Elements of Statistical Learning)≫课堂笔记(十四)

来源:互联网 发布:2017淘宝互刷群 编辑:程序博客网 时间:2024/05/17 09:46

开春,复课。

一句无关的话...今天打开Google Reader看到7月份要关的提示,无限悲伤。看着落园若干RSS源里面累计800+的读者,只能说句bless...2008年开始使用,到现在,伴我度过了多少读书时光呀。不过确实也衰落了,高峰的时候一个RSS源就有600+读者,现在也只剩一半了。写博客,越来越像一件出力不讨好的事情了。

--------正文开始---------

提升与梯度树

1. Boost(AdaBoost)

这里讲的AdaBoost是仅针对二类分类器的提升。大致的思想就是,给我一个弱分类器,还你一个强分类器。听起来蛮神奇的对不对?

先说算法实现。

第一步:初始化。f0(x)=0

,权重初始值 wi=1N,i{1,...,n}

第二步:迭代。

for m = 1 to M

  • 根据已有算法(即弱分类器)和{wi
}得到一个分类器Gm(x)
  • .
  • 计算误差:errm=N1I(yiGm(xi))wiNi=1wi
  • ,这里我们把权重进行归一化。
  • 计算Gm权重:αm=log1errmerrm

  • 修改样本权重wiwi=wiexp(αmI(yiGm(xi))

    也就是说,我们不断的生成新的权重,当分类器分错的时候更改权重。

    第三步:输出。最终的分类器为前面的加权。

    G(x)=sign(Mm=1αmGm(x))

    这样就实现了从一个弱分类器改善到一个强分类器。这里弱分类器是指误差比随机猜的1/2少一点。

    另注:在修改权重那一步的时候,也可以定义βm=αm2

    ,然后wi=wi{eβmeβmifrightifwrong,这样在最后的时候也可以改成G(x)=sign(Mm=1βmGm(x))

    。总之这里的直觉是,如果分对了,那么权重下降;反之,分错的时候这些样本的权重上升。最后take average就可以了。

    2. 自适应基函数模型、前向分布算法

    之所以上面又引入βm

    ,便是为了更好地理解这一类模型:自适应基函数模型。

    1. 我们称 f(x)=Mm=1βmb(x,γm)

    为基函数模型,其中{b(x,γ),γΓ}成为基函数基。注意这里和GLM有很大的不同,广义线性模型后面的γm

    为确定的。

    2. 前向分步算法。

    数据集记作{(xi,yi),1iN}

    。定义一个损失函数,比如常见的L2

    均方误差,

    (yf(x))2

    ,或者0-1准则。

    然后步骤为:

    • 初始化:f0(x)=0

  • 迭代:For m=1 to M,(βm,γm)=argminNi=1L(yi,fm1(xi)+βb(xi,γ))

  • fm(x)=fm1(x)+βmb(xi,γ)
  • 输出fm(x)

    这样我们就把这个最优化问题转变成了M步,每步只做一个参数的最优化(近似方法)。

    3. 指数损失函数与AdaBoost

    有了这么一个一般性的框架,我们就可以套用具体的形式。

    1. 定义指数损失函数: L(y,f(x))=exp(yf(x))

    2. 两类分类、指数损失函数的自适应基函数模型。

    前向分布算法:

    (i)

    ====i=1NL(yi,fm1(xi)+βb(xi,γ))i=1Nexp[yi(fm1(xi)+βb(xi,γ))]i=1Nw(m)iexp(βyib(xi,γ)),w(m)i=exp(yifm1(xi))eβ(yb(xi,γ)w(m)i)+eβ(y=b(xi,γ)w(m)i)i=1Nw(m)ieβyb(xi,γ)w(m)iNi=1w(m)i+eβy=b(xi,γ)w(m)iNi=1w(m)i

    定义

    err(γ)m=yb(xi,γ)w(m)iNi=1w(m)i

    这样上式就可以化作

    ==i=1Nw(m)i[eβerr(γ)m+eβ(1err(γ)m)]i=1Nw(m)i[(eβeβ)err(γ)m)+eβ]

    (ii) 固定β>0

    ,优化γ

    .

    yb(xi,γ)w(m)i=Ni=1w(m)iI(yb(xi,γ))

    然后最小化,则γ=argminNi=1w(m)iI(yb(xi,γ))

    。假定γ

    已被优化,然后继续。

    (iii)优化β

    βm=argminNi=1w(m)i[(eβeβ)err(γ)m)+eβ]

    取一阶条件FOC,则有

    (eβeβ)err(γ)m)eβ=0

    这样最后

    β=[log1errmerrm]/2

    这样就看出来上面那个AdaBoost里面的β

    是怎么来的了吧?

    (iv) 回到AdaBoost

    fm(x)w(m)i=====fm1(x)+βmb(xi,γ)exp(yifm1(x))exp(yi[fm1(xi)+βmb(xi,γ)])w(m)iexp(yiβmb(xi,γ))w(m)iexpβm[yib(xi,γ)]

    看出来最后的AdaBoost雏形了吧?


  • 0 0
    原创粉丝点击