1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

スプライン vol.5 ~クロスバリデーション~

Last updated at Posted at 2022-04-03

参考本

多変量解析入門 --線形から非線形へ--

小西貞則 著

前回記事

モデルの評価と選択

正則化最小2乗法や正則化最尤法を用いてモデルを推定した場合、連続的に変化する平滑化パラメータの個々の値に対応して無限の異なったモデルが構成され、適切な平滑化パラメータの選択がモデリングの過程において必要となる。

正則化最尤法によってモデルを推定した場合には、
$\lambda$というパラメータを調整し、選択することになる。

$\lambda$を引数とするモデルの良さを評価するには・・・・

モデルの有向自由度

B-スプラインなどの基底関数に基づく回帰モデルを用いた場合には、モデルの複雑さの程度は、平滑化パラメータに加えて基底関数の個数に依存する。

これは評価基準AICやBICを使用することが思い浮かぶ。

クロスバリデーション)

平滑化パラメータや基底関数の個数の選択には、予測誤差の推定に用いられるクロス・バリデーション(交差検証法)という方法を用いる。

これは一組の観測データをモデルの推定に用いるデータとモデルの評価に用いるデータに分離して誤差の評価を行う方法で、次のように実行する。

モデルを$u(\boldsymbol y; \boldsymbol \omega)$と表すことにする。

First.
平滑化パラメータと基底関数の個数を事前に設定した後、$n$個の観測データの中から$i$番目の(プロット可能な2次元の)データ$(\boldsymbol x_i, y_i)$を除く残りの$(n-1)$個のデータに基づいて重みベクトル$\boldsymbol \omega$を推定し、これを$\hat{\boldsymbol \omega}^{(-1)}$とする。

Second.
次に、推定した回帰モデル$y=u(\boldsymbol x;u(\hat{\boldsymbol \omega}^{(-1)})$ に対して、取り除いたデータ$(\boldsymbol x_i, y_i)$での残差$y_i - u(\boldsymbol x;u(\hat{\boldsymbol \omega}^{(-1)})$を計算する。

このプロセスをすべてのデータに対して実行する。

$$CV(\lambda, m)= \displaystyle \frac{1}{n} \sum_{i}^{n}(y_i - u(\boldsymbol x;u(\hat{\boldsymbol \omega}^{(-1)}))^2$$

を求める。さまざまな平滑化パラメータの値と基底関数の個数に対してCV値を最小とするモデルを最適なモデルとして選択する。

参考
Third. 一般化

$$\rm{GCV}(\lambda, m)=\displaystyle \frac{1}{n} \sum^{n}_{i}{\frac{y_i - u(\boldsymbol x;u(\hat{\boldsymbol \omega}^{(-1)})}{1-n^{-1}tr H(\lambda, m)}}^2$$

分母は平滑化パラメータ行列$H$のトレースを用いた。この$H$については例えるなら、前章、線形回帰でのvol.1やvol.5の$\hat{\boldsymbol \beta} = X(X^TX)^{-1}X^T \boldsymbol \beta$の変換部分である。

対数をとって

$$n\log[\frac{1}{n} \sum_{i}^{n}(y_i - u(\boldsymbol x;u(\hat{\boldsymbol \omega}^{(-1)}))^2]- 2n \log[1-n^{-1}tr H(\lambda, m)]$$

$\log(1-x)$のマクローリン展開を用いると
$$\log (1-x)= -x -\displaystyle \frac{1}{2} x^2 - ...., |x| < 1$$
であり、残差平方和/データ数nを$\hat{\sigma}^2$とする。

$$\sim n \log \hat{\sigma}^2+ 2tr H(\lambda, m)$$

と近似できる。

補足

基底関数の個数の決定は、クロスバリデーション抜きで行ってしまうと、

元のデータを学習データとテストデータに分割してモデルの評価をする際に、テストデータ自体で、回している際に前のサンプルで基底関数の個数を調整してしまい、オーバーフィッチング、過学習を引き起こしてしまう。

こういった事態を防ぐためにクロスバリデーションという方法が導入された。

おさらい

Step1.

$n$個の観測データの中から$i$番目のデータ$(y_i, \boldsymbol x_i)$を取りのぞいて$(n-1)$個のデータに基づいてモデルを推定し、これを$u(\boldsymbol x;u(\hat{\boldsymbol \beta}^{(-1)}))$とする。

Step2.
$(y_i, \boldsymbol x_i)$に対し$(y_i - u(\boldsymbol x_i;u(\hat{\boldsymbol \beta}^{(-1)})))^2$の値を求める.

Step3.

すべての$i\in (1, 2, \dots, n)$に対し、ループ実行(for文)し、

$$CV(\lambda, m)= \displaystyle \frac{1}{n} \sum_{i}^{n}(y_i - u(\boldsymbol x;u(\hat{\boldsymbol \omega}^{(-1)}))^2$$

これを観測データに基づいて推定したモデルの良さを測る基準とする。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?