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

梯度树提升算法(GTBA, gradient tree boosting algorithm)

继续boosting类算法哎。小小预告一下,下节课会直接跳到随机森林,老师貌似是想把各种分类器都一下子讲到,然后有点前后照应的比较~真有意思,若是以前扔给我这种问题我肯定run一个logit regression就不管了,现在倒是有各种线性的、广义线性的、非线性的模型可以试着玩了,爽哎~

------------------

1. 自适应基函数模型

小小的复习一下上节课那个框架。

1. 数据。 D={(xi,yi),1iN}

2. 模型。 f(x)=Mm=1βmb(x,γm)

为基函数模型,其中 {b(x,γ),γΓ} 成为基函数集合。 {(βm,γm)}M1

为参数。

3. 损失函数(准则)。 L(y,f(x))

为损失函数,然后就转为一个优化问题:

{(βm,γm)}M1=argminNi=1L(y,f(x))=argminNi=1L(yi,Mm=1βmb(x,γm))

4. 算法。 前向分步算法。

  • 初始化: 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)

    在此框架之下,除了上节课的Adaboost之外,还可以套用多种其他的基函数,然后1)定义损失函数 2)给出迭代那一步的优化算法,就可以实现一种boost提升算法了。

    2. 应用回归问题

    先采用均方误差的损失函数,定义 L(y,f(x))=(yf(x))2

    ,这样就可以得到

    (β,γ)=argminNi=1(yifm1(xi)βb(xi,γ))2

    然后定义:

    rim=yifm1(xi),1iN

    argminβ,γNi=1(rimβb(xi,γ))2 。这里 (xi,rim)

    之后用回归树来求的话,就是梯度回归树算法。

    梯度回归树提升算法
    • 初始化: f0(x)=0

  • 迭代:For m=1 to M,计算 rim=yifm1(xi) 。由 (xi,rim) 用回归树求得 Tm(x)
  • .
  • fm(x)=fm1(x)+Tm(x)
  • 输出 fm(x)

    3. GTBA,梯度树提升算法

    先吹捧一下:这个算法就是此书作者本人开发的,然后已经搞出来了软件包,可以做回归也可以做分类,貌似效果还胜过随机森林(当然是作者自己给出的那些例子...)。

    损失函数 L(y,f(x))

    为可微的。

    我们的优化目标是 Ni=1L(yi,f(xi))

    ,也就是说实际上我们不是直接对 L(y,f(x)) 进行优化,而是仅仅在所有观测的数据点上优化,所以仅跟 f()

    在这些观测点上的值有关。感觉这里就是说,我们使用有限的观测到的信息来推断一个连续的函数,然后类推并用于其他未观测到的点。

    定义:

    f¯=f(x1)f(x2)f(xN)

    ,这样这个问题就从一个直接优化 f()

    的泛函问题转化为一个优化多元函数的问题...而对于一个多元函数,我们可以直接用梯度下降法。定义梯度为:

    f¯0,Lf¯|f¯0=g¯0

    ,这样 f¯1=f¯0g¯0 。类似的,我们可以定义 f¯m=f¯m1τg¯m1 ,其中 g¯m1=Lf¯|f¯m1

    。累加起来,就是

    f¯m=f¯0τg¯m1τg¯0

    ,这里 τ 可以是常量也可以随着 m

    改变。

    定义完梯度下降之后,就是GTBA算法了。

    • 初始化。
    • 迭代:For m=1 to M,计算 rim=L(yi,f(xi))f(xi)|fm1
    ,然后由 {(xi,rim),1iN} 用回归树求得 Tm(x)
  • fm(x)=fm1(x)+Tm(x)
  • 输出 fm(x)
    一些梳理

    1. 参数。这里显然有如下参数需要设定:

    • M:迭代次数。这是这个算法最主要的参数,需要用Cross-validation来算。
    • J:树的大小。建议4-8,默认为6。
    • μ
    :收缩系数。 fm(x)=fm1(x)+μTm(x) 这里可以加上 μ
  • 这个参数,决定收缩的速度,0-1之间。
  • η
    • :次采样率,0-1直接,默认0.5。用于做subsampling。

    2. 特征变量评价

    这个算法的一大优势就是可以给出各个自变量的评价。比如 P>N

    的时候我们可能面临特征变量选择问题。

    用t表示树中的节点, v(t)

    表示t节点所用的变量, τ2(t)

    表示t节点产生的均方误差的减小值。之后定义:

    xτ=tI(v(t)=xτ)τ2(t)

    ,可用这个值来刻画变量的重要性,从而进行特征评价。

    3. 通用工具

    该算法对于数据无特殊要求,有一批 D={(xi,yi),1iN}

    都可以扔进去试试,故可以作为其他算法的benchmark。

    此外,从贝叶斯分类器的角度,我们要找的是 f(x)=argmaxP(G|x)

    ,这样除了原有可以观测到的 (xi,Gi) 之上,还可以衍生出一个 Gi 向量,即 Gi=(0,0,..,1,..,0) ,第k个位置为1如果观测到的 (xi) 对应第k类。一下子就可以扩展整个数据集,也可以进一步对每类都赋一个概率,不单单是0-1这样。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值