## 定義 交差検証(cross-validation, CV)とは、限られたデータを訓練用と検証用に繰り返し分割して当てはめと評価を行うことで、モデルの期待テスト誤差$\text{Err}=E[L(Y,\hat f(X))]$を推定する再標本化(resampling)手法である。データを$K$個のほぼ等しいサイズの部分に分割し、$k$番目の部分を除いた残り$K-1$個で当てはめたモデル$\hat f^{-k}$で$k$番目の部分を予測することを$k=1,\ldots,K$について繰り返し、誤差を集約する: $\text{CV}(\hat f) = \frac{1}{N}\sum_{i=1}^{N} L\left(y_i, \hat f^{-\kappa(i)}(x_i)\right)$ $\kappa:\{1,\ldots,N\}\to\{1,\ldots,K\}$は各観測がどの分割に属するかを示す。$K=N$の特殊な場合はleave-one-out交差検証と呼ぶ。調整パラメータ$\alpha$でインデックスされたモデル族では$\text{CV}(\hat f,\alpha)$を最小化する$\hat\alpha$を選び、最終的にはその$\hat\alpha$で全データに当てはめ直す。(Source: [[@2009__Springer__The Elements of Statistical Learning - Chapter 7 Model Assessment and Selection]] §7.10.1) ## $K$の選択とバイアス-バリアンストレードオフ - $K=N$(leave-one-out)は各「訓練集合」が元の訓練集合とほぼ同一サイズであるためバイアスは小さいが、$N$個の訓練集合が互いに酷似するため分散が高く、計算コストも$N$回の当てはめを要する。 - $K=5$や$10$では分散は下がるが、学習曲線(訓練集合サイズに対する性能)が当該サイズ付近で急な傾きを持つ場合、実効的な訓練集合サイズの縮小(例: $K=5$なら元の80%)により真の予測誤差を過大評価するバイアスが生じる。 - 5または10分割が実務上の良い妥協点として推奨される。 一般化交差検証(GCV)は線形当てはめ$\hat y=Sy$についてleave-one-out CVを$\text{GCV}(\hat f)=\frac{1}{N}\sum_i\left[\frac{y_i-\hat f(x_i)}{1-\text{trace}(S)/N}\right]^2$で近似し、個々の対角要素$S_{ii}$より$\text{trace}(S)$の方が計算しやすい設定(平滑化問題など)で有利になる。CV誤差曲線には各分割の標準誤差からエラーバーを付けられ、最良モデルの誤差から1標準誤差以内で最も単純なモデルを選ぶ**1標準誤差ルール(one-standard-error rule)**がよく使われる。(Source: [[@2009__Springer__The Elements of Statistical Learning - Chapter 7 Model Assessment and Selection]] §7.10.1) ## よくある誤り: 特徴量選択をCVループの外で行う 高次元(ゲノミクス等)の分類問題で頻出する誤った手順は、(1) 全サンプルを使って目的変数と相関の強い特徴量を選び、(2) その部分集合で分類器を構築し、(3) 交差検証で調整パラメータと予測誤差を推定する、というものである。目的変数と無関係な$p=5000$個の予測変数・$N=50$サンプルのシミュレーションでこの手順を適用すると、平均CV誤差率3%(真の誤差率は50%)という著しい過小評価が生じる。原因は、特徴量選択がテスト分割を含む全サンプルに基づいて行われ、選ばれた特徴量が「取り除いたサンプルをすでに見てしまっている」ため。**正しい手順は、特徴量選択を含むモデル構築の全段階を各CV分割の外側(訓練部分のみ)で繰り返すこと**である。目的変数を使わない教師なしフィルタリング(例: 分散上位の特徴量選択)は、サンプルを除く前に行ってもよい例外である。(Source: [[@2009__Springer__The Elements of Statistical Learning - Chapter 7 Model Assessment and Selection]] §7.10.2) 高次元・独立な予測変数下での簡単な1分割「stump」分類器のシミュレーション(§7.10.3)は、モデル構築の全段階(分割点の再推定を含む)を各分割で正しく再実行すれば、交差検証が真の誤差率(50%)を正しく回復することを示す。逆に分割点を全データから固定してしまうと、CVは誤って低い誤差を報告する。 ## 条件付き誤差か期待誤差か 交差検証が良く推定するのは、特定の訓練集合に条件づけた誤差$\text{Err}_T$ではなく、期待誤差$\text{Err}$である。100個の訓練集合のシミュレーションでは、10分割CVもleave-one-out CVも$\text{Err}$に対してほぼ不偏(10分割の方が分散が小さい)だが、CV推定値と真の条件付き誤差$\text{Err}_T$の相関は多くの部分集合サイズでむしろ**負**になる。この負の相関が、CVが$\text{Err}_T$の良い推定量にならない理由を説明する。(Source: [[@2009__Springer__The Elements of Statistical Learning - Chapter 7 Model Assessment and Selection]] §7.12) ## 横断的知見 - **「モデル選択」と「モデル評価」は別問題であるという指摘に、名前と具体的な二重ループ構造を与えたのが入れ子の交差検証(nested cross-validation)である**: 本ページが引く[[@2009__Springer__The Elements of Statistical Learning - Chapter 7 Model Assessment and Selection]]は、複数モデルから最良を選ぶ「モデル選択」と、選んだモデルの汎化誤差を推定する「モデル評価」が別の問題であることを概念として指摘するにとどまるが、[[@2020__Cambridge__Mathematics for Machine Learning - Chapter 8 When Models Meet Data]] §8.6.1はこれを**入れ子の交差検証**という具体的な手続きとして定式化する: 内側ループ(検証集合でハイパーパラメータ・モデルを選ぶ)と外側ループ(テスト集合で選ばれたモデルの汎化性能を推定する)という2段階の交差検証を組み合わせ、全ラベル付きデータをまずテストデータと訓練データに分け、訓練データをさらに訓練集合と検証集合に分ける。同一の懸念(モデル選択にデータを使うと汎化性能の推定が楽観的に偏る)を、ESL第7章が定性的な区別として述べ、MML第8章が具体的なアルゴリズムとして与えるという、抽象度の異なる2層の記述が揃って初めて実装可能な手続きになる。(Source: [[@2009__Springer__The Elements of Statistical Learning - Chapter 7 Model Assessment and Selection]] §7.1-§7.2, [[@2020__Cambridge__Mathematics for Machine Learning - Chapter 8 When Models Meet Data]] §8.6.1) - **交差検証による「よくある誤り」(本ページ既述)と入れ子の交差検証(MML第8章)は、同一の問題(モデル選択にテストデータの情報が漏れる)に対する診断と処方箋の関係にある**: 本ページ既述の「よくある誤り」節は、特徴量選択をCVループの外で行うと平均CV誤差率3%(真の誤差率50%)という過小評価が生じることを示すが、これは「モデル構築の一部(特徴量選択というモデル選択の一種)を、汎化性能の評価に使うのと同じデータ分割の外側で行ってしまう」という誤りの一事例である。MML第8章の入れ子の交差検証は、この誤りを構造的に防ぐ一般的な処方箋(モデル選択は常に内側ループに閉じ込め、外側ループのテスト集合には触れさせない)として位置づけられる。(Source: [[@2009__Springer__The Elements of Statistical Learning - Chapter 7 Model Assessment and Selection]] §7.10.2, [[@2020__Cambridge__Mathematics for Machine Learning - Chapter 8 When Models Meet Data]] §8.6.1) - **スタッキング([[アンサンブル学習]])は、モデル選択とモデル平均化を橋渡しする形でleave-one-out交差検証を使う**: 第7章のleave-one-out CVはモデル1つを選ぶための誤差推定に使われるが、第8章のスタッキングは各モデル$m$のleave-one-out交差検証予測$\hat f_m^{-i}(x_i)$を新たな回帰の説明変数として使い、モデルの複雑さに公平な重みを推定する。重みベクトルを1つのモデルに1・残り0に制約すればスタッキングはleave-one-out CV誤差最小のモデルを選ぶことに帰着するため、**スタッキングは「最良の1モデルを選ぶ」交差検証によるモデル選択の、「複数モデルを最適重みで組み合わせる」への一般化とみなせる**。(Source: [[@2009__Springer__The Elements of Statistical Learning - Chapter 7 Model Assessment and Selection]] §7.10, [[@2009__Springer__The Elements of Statistical Learning - Chapter 8 Model Inference and Averaging]] §8.8) - **入門書(ch.2)の「リーク(leak)」という用語は、本ページのCVによる「よくある誤り」が示す現象と同一の構造を、Kフォールド分割を経ずに評価データの使い回し一般に対して名指しする**: 本ページが引くESL第7章の「よくある誤り」は、特徴量選択をCVループの外で行うと平均CV誤差率3%(真の誤差率50%)という過小評価が生じることを、交差検証という具体的な再標本化の文脈で示す。[[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.6は、より一般に「評価データが学習時に使われてしまっている状態」をリーク(leak、漏れている)と呼び、ハイパーパラメータ調整用の開発データとテストデータを分離する必要性、AI研究コミュニティが同じデータセットを繰り返し評価することで評価データがすでにリークしていると考えられていること、評価回数を制限する・ノイズを加えて評価するといった対策(ホールドアウト法)を挙げる。これは交差検証という特定の再標本化手続きの外側にある、より一般的な「評価データの情報が意思決定に漏れ出す」という現象であり、本ページが扱う入れ子の交差検証(MML第8章)の「内側ループと外側ループを分離する」という処方箋が、単発のtrain/dev/test分割においても同じ論理で必要になることを裏づける。(Source: [[@2009__Springer__The Elements of Statistical Learning - Chapter 7 Model Assessment and Selection]] §7.10.2, [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.6) ## 未解決の問い - 深層学習のような計算コストの高いモデルで、$K$分割CV(特に大きい$K$)の計算コストをどう現実的に抑えるか。early stoppingやモデル並列化との組み合わせは標準化されているか。 - 特徴量選択をCVループ内に正しく含めることの重要性([[@2009__Springer__The Elements of Statistical Learning - Chapter 7 Model Assessment and Selection]] §7.10.2)は、ハイパーパラメータ探索(ベイズ最適化・グリッドサーチ)を含むより一般的なモデル選択パイプライン全体にどこまで一般化されるか。 - 時系列データのように独立性が崩れる設定([[変化点検知]]・[[逐次検定]]等)では、通常のK分割CVはどのように修正する必要があるか(時系列分割・ブロック交差検証)。 - 入れ子の交差検証([[@2020__Cambridge__Mathematics for Machine Learning - Chapter 8 When Models Meet Data]] §8.6.1)は内側・外側2ループの計算コストが乗算的に増える(外側$K_{out}$回×内側$K_{in}$回)。この計算コストと、ESL第7章が報告するAIC・BIC等の解析的近似の精度([[汎化誤差バウンド]]参照)との実務的なトレードオフは、本書・ESLいずれにも定量的な比較がない。 ## 関連 - source: [[@2009__Springer__The Elements of Statistical Learning - Chapter 7 Model Assessment and Selection]] / [[@2020__Cambridge__Mathematics for Machine Learning - Chapter 8 When Models Meet Data]](入れ子の交差検証) / [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]](リークという一般化された用語) - concept: [[ブートストラップ法]] / [[バイアス-バリアンストレードオフ]] / [[統計的機械学習]] / [[最小記述長原理]] / [[汎化誤差バウンド]] / [[経験リスク最小化]] / [[汎化能力]] ## 出典 - Hastie, T., Tibshirani, R., Friedman, J., *The Elements of Statistical Learning*, 2nd Edition, Springer, 2009, Chapter 7, §7.10. - Deisenroth, M. P., Faisal, A. A., Ong, C. S., *Mathematics for Machine Learning*, Cambridge University Press, 2020, Chapter 8, §8.6.1. - 岡野原大輔, 『ディープラーニングを支える技術』, 技術評論社, 2022, 第2章, §2.6.