$\newcommand{\argmax}{\mathop{\rm arg~max}\limits}$$\newcommand{\argmin}{\mathop{\rm arg~min}\limits}$
この記事は古川研究室 Workout_calendar 2 日目の記事です.
本記事は古川研究室の学生が学習の一環として書いたものです.
概要
この記事では交差検定について説明します.まずリッジ回帰について説明し,制約化項のパラメータをどのように選択すればいいのかを議論し,交差検定でパラメータの確かさを検証します.
回帰
回帰のタスクは複数の入出力のペア$ \left\{ ( \mathbf{x}_n,y_n )\right\} _{(n=1)}^N$, $\mathbf{x} \in \mathbb R ^D, y \in \mathbb R$が与えられているときに,$\forall n\ \ y_n\simeq f(\mathbf{x}_n)$を満たすような$f$を推定することです.
回帰を解くモチベーションは,未知の入力$\mathbf{x}^\star$ に対する出力 $y^\star$ を求めることです. 関数 $f$ は入力$\mathbf{x}$と出力$y$の関係を数学的に表現したものなので、$f$を求めることで任意の入力に対する出力を予測することができるわけですね.
リッジ回帰
リッジ回帰では$f(\mathbf{x})$を以下のような式で表現します.
$f(\mathbf{x}) = \mathbf{w}^T \mathbf{x}$
$\hat{\mathbf{w}}=\argmin_\mathbf{w}\big( \sum_{i=1}^N ( y_i-f(\mathbf{x}_i) ) ^2+ \alpha ||\mathbf{w}||^2\big)$
ここで求めたい$\hat{\mathbf{w}}$は$\alpha$ が与えられたとき、一意に定まります.
しかし,この$\alpha$は人が設定する値であり,どうやって設定したらいいのでしょうか?
ここで思い出してほしいのですが,回帰のタスクは新規入力に対する出力を予測することでした.
つまり,モデルの汎化誤差が小さくなるような$\alpha$を求めたかったのです!
交差検定を用いることで任意の$\alpha$でのモデルの汎化能力を評価をすることができます.
交差検定
モデルの汎化誤差を求めるためには,学習で使用していないデータが必要となります.
交差検定では以下の手順で設定したハイパーパラメータに対するモデルの汎化誤差を求めます.
1.ハイパーパラメータの$\alpha$を設定する.
2.データセットをほぼ等分に$K$個のデータ集合に分割する.
3.データ集合の 1 つ取り除き残りの$(K-1)$個のデータ集合を訓練データとしてモデルを学習させる.
4.取り除いた 1 つのデータ集合をテストデータとして学習させたモデルの汎化誤差を求める.
5.2~4 の操作を全てのテストデータに対して繰り返し,平均汎化誤差を求める.
モデルの汎化能力を最も高めるハイパーパラメータを選択したい場合,用意したハイパーパラメータについてそれぞれ上記の操作を行い,その中でモデルの平均汎化誤差を最小にするハイパーパラメータを選択すればよいのです.
実装(7/23以降追記予定)
使用するデータセット
scikit-learn の糖尿病データセットを使用します.データ数は 442,特徴量は 10 です.
評価方法
リッジ回帰でデータセットを学習します.いくつかのパラメータ$\alpha$によって学習した結果を示し,それぞれのモデルの汎化性能を交差検定により評価します.
プログラム
結果と評価
まとめ
参考文献
実践 機械学習システム