非線形モデル(機械学習入門)

非線形モデル(機械学習入門)

線形モデルには解釈が容易であるというメリットの反面、予測のパフォーマンスが劣るというデメリットがある。LassoやRidge回帰は変数選択を行い分散を下げることで予測の精度を向上させるが、線形性の過程を緩めることで、よりパフォーマンスを上げることが出来る。そこで、ここでは変数について線形でないモデルを扱う。

ここで扱うモデル

  • 変数の2乗や3乗の項を説明変数として含む線形モデル
  • 変数のステップ関数による変換を説明変数として含む項を含む線形モデル
  • 回帰スプラインによるこれらの拡張
  • 平滑化スプラインによる回帰スプラインの改良
  • カーネル関数による重みづけを用いた局所回帰
  • スプラインを複数変数に対して用いることによる一般化加法モデル

多項式回帰

xxについての非線形モデルを考えたいとき、しばしば適用されるアイディアは線形モデル yi=β0+β1xi+ϵi の説明変数をx,x2,,xdとすることで、線形モデル yi=β0+β1xi+β2x2i++βdxdi+ϵi を扱うことだった。次数を上げれば表現できる関数のクラスは広がるが、定義域全体でのフィッティングになるため現実にはデータへの当てはまりが悪く、3次程度にとどめられることがほとんどである。
関数形を見たいときには、個別の係数に興味があるわけではないので、推定結果を用いて多項式全体を計算する。すなわち ˆf(x0)=ˆβ0+ˆβ1x0+ˆβ2x20++ˆβdxd0を用いればよい。
各点x0での分散Var[ˆf(x0)]
ここでx0は確率変数ではないので E[(ˆf(x0)E(ˆf(x0)))2]=E[(dj=0(ˆβjE(ˆβj))xj0)2] のサンプル対応で推定でき、中心極限定理から従う1.96を用いれば、95%信頼区間を計算できる。
被説明変数が2値(0,1)の場合にも、説明変数を多項式にすることで対応できる。たとえばロジスティック回帰を用いて Pr(yi>a|xi)=exp(β0+β1xi++βdxdi)1+exp(β0+β1xi++βdxdi) とすればよい。推定結果の例(Fig 7.1の右側)

ステップ関数を利用した回帰

Polynomial Regressionでは、fの定義域全体に高次式をフィットした。一方で定義域を分割し、区画ごとに簡単な関数をフィットするという考え方もある。ここではstep functionによるフィットを紹介する。step function Ck(), k=1,,Kを以下のように定義する。

C0(X)=I(X<c1) C1(X)=I(c1X<c2)        CK1(X)=I(cK1X<cK) CK(X)=I(cKX) とし、これを線形モデルの説明変数に適用することで yi=β0+β1C1(xi)++βKCK(xi)+ϵi を考える。手続きとしてはCk()を作り、データをCk()により変換したものをあらかじめ用意して、線形回帰の説明変数として用いればよい。
このモデルでは、全域にフィットすることに起因する当てはまりの悪さは回避できるが、 非連続関数を考えることに起因する当てはまりの悪さが新たに発生する。
ロジスティックモデルへの適用はPolynomialRegressionと同様に Pr(yi>a|xi)=exp(β0+β1C1(xi)++βKCK(xi))1+exp(β0+C1(xi)++βKCK(xi)) とすればよい。

基底関数を利用した回帰

これまで見てきた手続きは以下のように一般化できる。 yi=β0+β1b1(xi)++βKbK(xi)+ϵi 但しb1(),,bK()は基底関数。

  • Polynominal Regressionではbj(x)=xj
  • Step Functionsではbj(x)=I(cjx<cj+1)

この枠組みで、より近似精度の高いモデルを考える。

スプライン回帰

Piecewise Polynomials

たとえばPolynominal Regressionは以下のように表現される。 yi=β0+β1xi+β2x2i+β3x3i+ϵi このモデルは全域に対して関数をフィットさせることで当てはまりの悪さが生じていた。
そこで、ノット c を境にパラメタを変化できるようにすることで解決を試みる。 yi={β01+β11xi+β21x2i+β31x3i+ϵiif  xi<c β02+β12xi+β22x2i+β32x3i+ϵiif  xic 次数を下げればStep Functionsに一致し、ノットを減らせばPolynominal Regressionに一致することから、この表現はこれらの一般化であるとわかる。

Constraints and Splines

Piecewise PolynomialsはPolynomial RegressionやStep Functionの利用と比較すると良い近似になっているように感じるが、近似区間の境周辺では当てはまりが良くないように見える。そこで、制約をかけながらスプライン回帰をすることでこの欠点を解決しようとする。

The Spline Basis Representation

区間ごとの3次式による回帰は以下のように簡単化できる。 yi=β0+β1b1(xi)++βK+3bK+3(xi)+ϵi 但しbk()は区間ごとのstep functionや区間ごとに非零となる2次3次項などとすればよい。
h(x,ξ)=(xξ)+={(xξ)3if  x>ξ 0otherwise を3次までのpower seriesに追加することで2回連続微分可能になる。cubic splineの場合は推定は説明変数を X,X2,X3,h(X,ξ1),,h(X,ξK)として最小2乗法で行えばよい。ただしξはノットであり、多いほど細かい区間ごとにフィットを行うことが出来る。
cubic splineの場合各ビンで3次関数をフィットするが、サポートの端ではこれがバイアスの要因になる。そこで端だけ1次近似にする方法がありこれをnatural splineという。

チューニングパラメーターの選び方

ノットは個数と場所の両方を変えられる。データが沢山あるところには細かくノットを配置することが多い。例によってtest dataへの当てはまりの良さを用いて次数やノットの数を決定する。

多項式線形回帰との比較

次数を上げることなく近似できるので、splineはpolynomialよりもパフォーマンスが良い。とくにsplineは端点での近似が良い。(収束レートが速い)

平滑化スプライン

平滑化スプラインの概要

我々の目的はyをよく説明するgを見つけることだが、 gの関数形に制約をかけないと RSS=ni=1(yig(xi))2 の最小化には自明な解が存在してしまう。
そこでgに制約がかかるような最適化問題にしたい。しばしば用いられるのが ni=1(yig(xi))2+λg(t)2dt

というRSSにペナルティ項を付け加えた目的関数である。ただし
  • λはチューニングパラメタ
  • λ0とするとgは柔らかくなり
  • λとするとgはなめらかになる

平滑化パラメータ λの選び方

λが関数gの変化の激しさを決定するが、これはチューニングパラメタなので適切に選択する必要がある。例によってバイアスと分散のバランスを取って決定する必要がある。決定にはクロスバリデーションが役立つ。まず ˆgλ=Sλy と表現できることに注意する。これは最小2乗法による回帰係数ベクトルが (xx)1xy と表わせるのを一般化したものと考えればよい。ところで dfλ=ni=1{Sλ}ii とすると RSScv(λ)=ni=1(yiˆg(i)λ)2=ni=1[yiˆgλ(xi)1{Sλ}ii]2 が成り立ち、LOCVの計算コストを大幅に減らせるのでクロスバリデーションが簡単に行える。

局所回帰

ni=1Ki0(yiβ0β1xi)2 を最小化することで、局所的なデータを使った線形回帰になる。どこを中心にデータを集めるのかによってβ0,β1の値が変化する。Ki0Ki0=K(Xix0h) の形の関数K()が用いられることが多い。たとえば標準正規分布の密度関数(ガウシアンカーネル)などが使われる。
hはチューニングパラメタである。 ni=1Ki0(yiβ0β1xi)2β0, β1の関数なので、最小2乗法によってx0ごとに推定が行える。

一般化加法モデル

一般化加法モデルの回帰への適用

ここまではxの次元が1つの場合を考えてきたがここでは多変数化を考える。単純に重回帰モデル yi=β0+β1xi1++βpxip+ϵi の各項βjxjyi=β0+pj=1fj(xij)+ϵi のように関数fj(xj)とすると線形モデルの自然な拡張になる。推定には、smooth splineで扱った各項のbasis functionを回帰の説明変数にすればよい。

一般化加法モデルの分類問題への適用

GAMの考え方は重回帰モデルだけでなく、リンク関数により線形項を変換してYを決定するモデルに適用可能である。たとえばロジスティック回帰モデルならば、 log(p(X)1p(X))=β0+β1X1++βpXp の各項を log(p(X)1p(X))=β0+f1(X1)++fp(Xp) とすればよい。推定には、smooth splineで扱った各項のbasis functionを回帰の説明変数にすればよい。

コメントは受け付けていません。