XGBoostを理解するためには,決定木(decision tree)を理解しなければならない.決定木を理解するためには,決定株(decision stump)を理解しなければならない.というわけで決定株について勉強してみた.と言ってもそんなに難しい話ではない.でも少しだけ奥が深い.
入力をx∈Rd,出力をy∈Yとし,学習データ{(xi,yi)}i=1nが与えられるとする.決定株では,I={1,…,n}をIL,IRに分割する.そして,ある関数w:2I→Yを用いてIL,IRにwL=w(IL),wR=w(IR)を割り当てる.この分割は,i^∈I,j^∈{1,…,d}を選ぶことにより決定する.なので,ここからは,IL(i,j),IR(i,j)と表記する.(i,j)に対する損失L(i,j)を以下のように定義し,これを最小化するようにi^,j^を選ぶ.
(i^,j^)L(i,j)L~(I)IL(i,j)IR(i,j)=argmin(i,j) L(i,j)=L~(IL(i,j))+L~(IR(i,j))=i∈I∑ℓ(yi,w(I))={i′∣i′∈I,xi′,j<xi,j}={i′∣i′∈I,xi′,j≥xi,j}
ただし,ℓは適当な損失関数である.
流れとしては,(i,j)に対して,分割IL(i,j),IR(i,j)が決まり,その損失L~(IL(i,j)),L~(IL(i,j))が求まり,その合計である.L(i,j)が求まるという 感じだ.
wに関しては,分類問題の場合,Y={−1,1}として,例えば以下のようなものが考えられるだろう.
w(I)=sgn(i∈I∑yi)
回帰の場合は,以下のものが考えられるだろう.
w(I)=∣I∣1i∈I∑yi
損失関数は,分類の場合,0-1損失,回帰の場合は二乗誤差を使えば良いのではないか.この辺は自由である.
今回は,決定株について書いた.調べてもなかなか丁寧に説明している文献がなかったので,自分で書いてみたが,なんか複雑になった.正直自分以外わかりにくいと思う....次は決定木について書こうと思う.
Written with StackEdit.