参考本
多変量解析入門 --線形から非線形へ--
小西貞則 著
前回記事
モデルの評価と選択
正則化最小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$$
これを観測データに基づいて推定したモデルの良さを測る基準とする。