3値分類問題の決定木 勾配ブースティング

new

2-classification は Gradient Boosting Regression Tree (GBRT) で解ける。 3-classification になると、 1 vs rest になると思うが、これは予測モデルが複数出力されてダサい。

そもそも 2-classification が回帰で解けるのは、 クラスA を y=1, クラスB を y=-1 に割り当てているからである。 ここでは、これをyの割り当てと呼ぶことにする。 yの割り当てに必要な要件を考える。

  1. データ集合が与えられたときに、その集合の不純度を計算できること。
  2. データ集合が与えられたときに、y の予測値を計算できること
  3. 真値と予測値が与えられたときに、残差を計算できること

要件1. データ集合が与えられたときに、その集合の不純度を計算できること。 真値が y_i のとき、 \[ \sum_i(y_i - \bar{y}) \] と計算されることが多い。 ここで、 \( \bar{y} \) は平均値である。

要件2. データ集合が与えられたときに、y の予測値を計算できること y の予測値は、データ集合の平均値を採用することが多い。

要件3. 真値と予測値が与えられたときに、残差を計算できること 2-classification のときは、対数損失を使うことが多い。

さて、ここで 2-classification のときの yの割り当てを変更する。 y=(a, b) s.t. a+b=1 とする。 これで、先のyの割り当てと一致するように、要件 1-3 を構築したい。 それができれば、 3-classification のときに、 y=(a, b, c) s.t. a+b+c = 1 と自然に拡張できると思う。

TODO

old

2-classification は Gradient Boosting Regression Tree (GBRT) で解ける。 3-classification になると、 1 vs rest になると思うが、これは予測モデルが複数出力されてダサい。 そもそも 2-classification が回帰で解けるのは、 数直線上で点 P で分割した領域 F_1, F_(-1) のそれぞれで不純度を計算できるからである。 もう少し具体的にすると、クラスA を y=1, クラスBを y=0 に当てたとき、y を実数にして残差を考える。 これの見方を変えて、クラスAの軸を d_1, クラスBの軸を d_2 として、 d_1 座標を a, d_2 座標を b とする。 そして、 y = (a, b) s.t. a + b = 1 と割り当てて、これを予測する問題だと捉え直す。 このとき、もともと考えていた数直線は d_1, d_2 の2軸の直交座標空間における、点P_1=(1,0) 点P_2=(0,1) を結んだ線としてみなせる。 点Pで直線を分割すると、P_1 から P までの領域 F_1 と P_2 から P までの領域 F_2 に分かれる。 ここで、F_i は P よりも P_i に近い点集合で構成される。 また、F_i の不純度は F_i に含まれるデータ集合の中点を M_i としたとき、 各データ点から M_i までの距離の2乗和として定義されることが多い。

さて、これを 3-classification に拡張したい。 つまり、d_1, d_2, d_3 の3軸の直交空間における P_1=(1,0,0), P_2=(0,1,0), P_3=(0,0,1), で作られる 三角形を点Pで分割することを考える。 領域 F_i は点 P よりも点 P_i に近い点集合で構成され、 F_i の不純度は各データ点から中点までの距離の2乗和で定義できる。

f:id:readleaf:20200124204345p:plain

追記

  • 残差は大きくなることもあるので、三角形の内部にデータ点が存在するとは限らない