勾配ブースティング決定木#

Gradient Boosting Machine#

複数の関数に重みをかけて足し合わせた関数

f(x)=f0(x;θ0)+β1f1(x;θ1)++βMfM(x;θM)

の形で予測モデルを構築することを考える。ここでθ0,,θMは関数を形づくるパラメータ(例えば線形回帰の重みや決定木の分岐の閾値)である。

このモデルはβ1,β2,,βMθ0,θ1,,θMのパラメータを推定する必要がある。 今回はすべてのパラメータを一度に学習するのではなく、βmfm(x;θm)を一つずつ学習していく方法を考える。具体的には次のように行う。

前向き段階的加法モデリング(forward stagewise additive modeling)

  1. f0(x)=0で初期化

  2. m=1からMまでについて、

    1. パラメータを推定する:(βm,θm)=arg minβ,θi=1NL(yi,fm1(xi)+βf(xi;θ))

    2. 新たなモデルを足す:fm(x)=fm1(x)+βmf(x;θm)

これを前向き段階的加法モデリング(forward stagewise additive modeling)という。ブースティングはこの方法でアンサンブル学習を行う。

誤差関数が二乗誤差L(y,f(x))=(yf(x))2の場合、

L(yi,fm1(xi)+βf(xi;θ))=(yifm1(xi)βf(xi;θ))2=(residuali,m1βf(xi;θ))2

となり、m1回目のモデルの残差residuali,m1=yifm1(xi)を近似するようにm回目のモデルβf(xi;θ)を学習させていると捉えることができる。残差が大きければそれだけ訓練中に重視されるため「間違えた箇所を重点的に学習する手法」とも捉えることができる。

最適化の観点からの説明#

勾配降下法#

数理最適化において関数の最小化問題

minxf(x)

を解く方法のひとつに勾配降下法(gradient descent method)あるいは最急降下法(steepest descent method)と呼ばれるものがある。これは目的関数の微分のベクトルである勾配

f(x)=[f(x1)x1f(xm)xm]

を用いて

xm=xm1αm1f(xm1)

という値の更新を何度も繰り返して最適化を行っていく。ここでαは学習率と呼ばれるパラメータで、値の更新量が多すぎると最適解を通り過ぎてしまうことがあるので小さめの値を乗じて更新幅を抑えるために用いられる。

最終的にM回反復して得た最適解x

x=x0α1f(x1)x1α2f(x2)x2αMf(xM)xM

となり、ブースティングにより得られる予測モデル

f(x)=f0(x;θ0)+β1f1(x;θ1)++βMfM(x;θM)

と同様に重み付き和の形になる。

ブースティング#

ブースティングは勾配降下法を機械学習で行っていると捉えることができる。

機械学習においては予測値f(x)と実測値yの誤差の最小化問題

minf(x)L(y,f(x))

を解きたいため、勾配は誤差関数の予測モデルによる微分L(y,f(x))f(x)によって得られる。

二乗誤差L(y,f(x))=12(yf(x))2の場合、負の勾配は残差である

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

前向き段階的加法モデルの節で「二乗誤差の場合は残差を近似するように学習している」と述べた。

L(yi,fm1(xi)+βf(xi;θ))=(residuali,m1βf(xi;θ))2

これにより、学習されるモデルβf(x;θ)は負の勾配を学習するようになり、最終的にそれらの和となるモデルは勾配降下法を解いた状態を近似することになる。

正則化つきGBDT#

n個の観測データがあり、m次元の特徴量があるとする。

D={(xi,yi)},|D|=n,xiRm,yR

勾配ブースティング決定木のモデルは次のように表される

y^i=ϕ(xi)=k=1Kfk(xi)

ここで

  • fkFは予測器

  • F={f(x)=wq(x)}は回帰木の空間

    • q:RmTは入力データxを木の各葉のインデックスに割り振る写像。Tは各木の葉の数

    • wRTは葉の重み(weights)と呼ばれ、予測に使われた葉の出力値。予測値はwq(x)の和となるので予測値のベースでもある

学習の際は正則化付き誤差関数

L(ϕ)=i=1nl(y^,yi)+kΩ(fk)

を最小化する。ここでlは微分可能な凸関数である誤差関数で、Ωは正則化項

Ω(f)=γT+12λ||w||2

学習は加法的に行うためt番目の誤差は次のようになる。

L(t)(ϕ)=i=1nl(yi,y^(t1)+ft(xi))+Ω(ft)

テイラー展開による近似#

この誤差を二次近似したものを使うことで計算量を削減することもできることが知られている(Friedman et al., 2000

L(t)i=1n[l(yi,y^(t1))+gift(xi)+12hift2(xi)]+Ω(ft)

ここで

gi=l(yi,y^(t1))y^(t1)hi=2l(yi,y^(t1))(y^(t1))2

定数項を省略すると

L~(t)=i=1n[gift(xi)+12hift2(xi)]+Ω(ft)

jにおけるインスタンス(サンプル)の集合をIj={i|q(xi)=j}と表記すると、次のように書き換えることができる

L~(t)=i=1n[gift(xi)+12hift2(xi)]+γT+12λj=1Twj2=j=1T[(iIjgi)wj+12(iIjhi+λ)wj2]+γT

固定した木の構造q(x)について、葉jの最適な重みは

wj=iIjgiiIjhi+λ

となる。

導出

jについての部分だけ取り出して導関数を0とおいて整理する

L~j(t)wj=iIjgi+(iIjhi+λ)wj=0(iIjhi+λ)wj=iIjgiwj=iIjgiiIjhi+λ=wj

L1の場合

L~(t)=i=1n[gift(xi)+12hift2(xi)]+γT+12λj=1Twj2+αj=1T|wj|=j=1T[(iIjgi)wj+12(iIjhi+λ)wj2]+γT

L1の場合

L~(t)=i=1n[gift(xi)+12hift2(xi)]+γT+12λj=1Twj2+αj=1T|wj|=j=1T[(iIjgi)wj+α|wj|+12(iIjhi+λ)wj2]+γT

j=1T[]の内側を整理すると

wj=iIjgi±αiIjhi+λ

最適な重みwjを誤差関数に戻すと

L~(t)(q)=12j=1T(iIjgi)2iIjhi+λ+γT

となり、これ木の構造qの品質をスコアリングする関数として使うことができる。

導出
L~(t)=j=1T[(iIjgi)(iIjgiiIjhi+λ)+12(iIjhi+λ)(iIjgiiIjhi+λ)2]+γT=j=1T[(iIjgi)2iIjhi+λ+12(iIjgi)2iIjhi+λ]+γT=j=1T[12(iIjgi)2iIjhi+λ]+γT

参考#