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)
f0(x)=0で初期化
m=1からMまでについて、
パラメータを推定する:(βm,θm)=argminβ,θ∑i=1NL(yi,fm−1(xi)+βf(xi;θ))
新たなモデルを足す:fm(x)=fm−1(x)+βmf(x;θm)
これを前向き段階的加法モデリング(forward stagewise additive
modeling)という。ブースティングはこの方法でアンサンブル学習を行う。
誤差関数が二乗誤差L(y,f(x))=(y−f(x))2の場合、
L(yi,fm−1(xi)+βf(xi;θ))=(yi−fm−1(xi)−βf(xi;θ))2=(residuali,m−1−βf(xi;θ))2 となり、m−1回目のモデルの残差residuali,m−1=yi−fm−1(xi)を近似するようにm回目のモデルβf(xi;θ)を学習させていると捉えることができる。残差が大きければそれだけ訓練中に重視されるため「間違えた箇所を重点的に学習する手法」とも捉えることができる。
最適化の観点からの説明¶
勾配降下法¶
数理最適化において関数の最小化問題
\renewcommand{\b} when command \b does not yet exist; use \newcommand
\renewcommand{\b}[1]{ \boldsymbol{#1} }
\min_\b{x} f(\b{x})を解く方法のひとつに勾配降下法(gradient descent method)あるいは最急降下法(steepest descent method)と呼ばれるものがある。これは目的関数の微分のベクトルである勾配
Undefined control sequence: \b at position 10: \nabla f(\̲b̲{x}) =
\begin{…
\nabla f(\b{x}) =
\begin{bmatrix}
\frac{ \partial f(x_1) }{ \partial x_1 }\\
\vdots \\
\frac{ \partial f(x_m) }{ \partial x_m }
\end{bmatrix}を用いて
Undefined control sequence: \b at position 1: \̲b̲{x}_{m} = \b{x}…
\b{x}_{m} = \b{x}_{m-1} - \alpha_{m-1} \nabla f(\b{x}_{m-1})という値の更新を何度も繰り返して最適化を行っていく。ここでαは学習率と呼ばれるパラメータで、値の更新量が多すぎると最適解を通り過ぎてしまうことがあるので小さめの値を乗じて更新幅を抑えるために用いられる。
最終的にM回反復して得た最適解x∗は
x∗=x0−α1∂x1∂f(x1)−α2∂x2∂f(x2)−⋯−αM∂xM∂f(xM) となり、ブースティングにより得られる予測モデル
f(x)=f0(x;θ0)+β1f1(x;θ1)+⋯+βMfM(x;θM) と同様に重み付き和の形になる。
ブースティング¶
ブースティングは勾配降下法を機械学習で行っていると捉えることができる。
機械学習においては予測値f(x)と実測値yの誤差の最小化問題
f(x)minL(y,f(x)) を解きたいため、勾配は誤差関数の予測モデルによる微分∂f(x)∂L(y,f(x))によって得られる。
二乗誤差L(y,f(x))=21(y−f(x))2の場合、負の勾配は残差である
−∂f(x)∂L(y,f(x))=y−f(x)=residual 前向き段階的加法モデルの節で「二乗誤差の場合は残差を近似するように学習している」と述べた。
L(yi,fm−1(xi)+βf(xi;θ))=(residuali,m−1−βf(xi;θ))2 これにより、学習されるモデルβf(x;θ)は負の勾配を学習するようになり、最終的にそれらの和となるモデルは勾配降下法を解いた状態を近似することになる。
正則化つきGBDT¶
n個の観測データがあり、m次元の特徴量があるとする。
D={(xi,yi)},∣D∣=n,xi∈Rm,y∈R 勾配ブースティング決定木のモデルは次のように表される
y^i=ϕ(xi)=k=1∑Kfk(xi) ここで
学習の際は正則化付き誤差関数
L(ϕ)=i=1∑nl(y^,yi)+k∑Ω(fk) を最小化する。ここでlは微分可能な凸関数である誤差関数で、Ωは正則化項
Ω(f)=γT+21λ∣∣w∣∣2 学習は加法的に行うためt番目の誤差は次のようになる。
L(t)(ϕ)=i=1∑nl(yi,y^(t−1)+ft(xi))+Ω(ft) テイラー展開による近似¶
この誤差を二次近似したものを使うことで計算量を削減することもできることが知られている(Friedman et al., 2000)
L(t)≈i=1∑n[l(yi,y^(t−1))+gift(xi)+21hift2(xi)]+Ω(ft) ここで
gi=∂y^(t−1)∂l(yi,y^(t−1))hi=∂(y^(t−1))2∂2l(yi,y^(t−1)) 定数項を省略すると
L~(t)=i=1∑n[gift(xi)+21hift2(xi)]+Ω(ft) 葉jにおけるインスタンス(サンプル)の集合をIj={i∣q(xi)=j}と表記すると、次のように書き換えることができる
L~(t)=i=1∑n[gift(xi)+21hift2(xi)]+γT+21λj=1∑Twj2=j=1∑T[(i∈Ij∑gi)wj+21(i∈Ij∑hi+λ)wj2]+γT 固定した木の構造q(x)について、葉jの最適な重みは
wj∗=−∑i∈Ijhi+λ∑i∈Ijgi となる。
葉jについての部分だけ取り出して導関数を0とおいて整理する
∂wj∂L~j(t)=i∈Ij∑gi+(i∈Ij∑hi+λ)wj=0⟹(i∈Ij∑hi+λ)wj=−i∈Ij∑gi⟹wj=−∑i∈Ijhi+λ∑i∈Ijgi=wj∗ L1の場合
L~(t)=i=1∑n[gift(xi)+21hift2(xi)]+γT+21λj=1∑Twj2+αj=1∑T∣wj∣=j=1∑T[(i∈Ij∑gi)wj+21(i∈Ij∑hi+λ)wj2]+γT L1の場合
L~(t)=i=1∑n[gift(xi)+21hift2(xi)]+γT+21λj=1∑Twj2+αj=1∑T∣wj∣=j=1∑T[(i∈Ij∑gi)wj+α∣wj∣+21(i∈Ij∑hi+λ)wj2]+γT ∑j=1T[⋅]の内側を整理すると
wj∗=−∑i∈Ijhi+λ∑i∈Ijgi±α 最適な重みwj∗を誤差関数に戻すと
L~(t)(q)=−21j=1∑T∑i∈Ijhi+λ(∑i∈Ijgi)2+γT となり、これ木の構造qの品質をスコアリングする関数として使うことができる。
L~(t)=j=1∑T[(i∈Ij∑gi)(−∑i∈Ijhi+λ∑i∈Ijgi)+21(i∈Ij∑hi+λ)(−∑i∈Ijhi+λ∑i∈Ijgi)2]+γT=j=1∑T[−∑i∈Ijhi+λ(∑i∈Ijgi)2+21∑i∈Ijhi+λ(∑i∈Ijgi)2]+γT=j=1∑T[−21∑i∈Ijhi+λ(∑i∈Ijgi)2]+γT Schapire, R. E. (1990). The strength of weak learnability. Machine learning, 5, 197-227.
Friedman, J., Hastie, T., & Tibshirani, R. (2000). Additive logistic regression: a statistical view of boosting (with discussion and a rejoinder by the authors). The annals of statistics, 28(2), 337-407.
GBDTの応用のガイドライン
Boldini, D., Grisoni, F., Kuhn, D., Friedrich, L., & Sieber, S. A. (2023). Practical guidelines for the use of gradient boosting for molecular property prediction. Journal of Cheminformatics, 15(1), 73.
XGBoost, CatBoost, LightGBMの解説と化学分野の分子抑制予測タスクにおける比較