12.2 交差検証

単純に機械学習のアルゴリズムを当てはめるだけでは汎化誤差を小さくできず, 正則化が改善の可能性をもたらすとは既に説明しました. しかし, 可能性というだけで「絶対」とは言っていませんし, 汎化誤差を評価する方法もまだ説明していません.

正則化には大きさのパラメータがあり, どの程度の大きさが良いかは自明ではありません. 汎化誤差を計算して最も小さくなるパラメータを探索する必要がありますが, 汎化誤差は原理的に取得したデータから直接計算することはできません. そこで, 汎化誤差の近似となるものを計算します. 単純なアイディアとして, データを2つ分割し片方を学習に用いる訓練データとし, もう一方は学習には一切用いないテストデータとします52. 訓練データで学習した学習器に, テストデータを入力して予測値を出力し, 誤差を計算します. これをホールドアウト検証といいます.

また, 観測点が少ないとき, データを分割して学習に使えるデータをさらに減らすのはよくありません. そこで, 交差検証/クロスバリデーション (CV; cross validation)という方法が用いられます. Leave-one-out 交差検証 (LOOCV) は, データから観測点を1つだけ除いたもので学習し, 除いた観測点で予測誤差を検証する, ということを全ての観測点に対して繰り返します. そのため, 理論上は持ち合わせているデータと同数の観測点で検証できることになりますが, 観測点の数だけ繰り返し学習する必要があるため, 非常に時間がかかります. 観測点数が少ない場合は実行できますが, 数万件あるようなデータでは実用的ではありません.

そこで, LOOCV の簡易的なバージョンとして, K-分割交差検証 (K-fold CV) という方法があります. データをK個のサブデータに分割し, LOOCVの のように K-1 個のサブデータをそれぞれ訓練データとみなして学習し, 残り1個のサブデータをテストデータとみなして予測精度を計算し, K 個の結果を合計します. K が観測点数に近いほど LOOCV の結果に近くなり, データの規模に応じてK を変えることで計算時間を調整できるという利点があります. K をどう決めるべきかの一般的なルールはありませんが, \(k=5,10\) で行うことが多い53です.

参考文献一覧

Breiman, Leo, and Philip Spector. 1992. “Submodel Selection and Evaluation in Regression. The X-Random Case.” International Statistical Review / Revue Internationale de Statistique 60 (3): 291. https://doi.org/10.2307/1403680.

  1. 教科書によっては, 訓練データ・検証データ・ テストデータの3つに分割する, と書かれているものもありますが, ここで訓練データと検証データの区別を強調することは本質ではないため省略しています.↩︎

  2. これらの数が選ばれるのはおそらく Breiman and Spector (1992) の記述が元になっていると思われます. 彼らの実験で使われたデータのサンプルサイズは小さいため, 実際にはもっと大きな値でも良い可能性があります.↩︎