Ch.09
交差検証:模試と本番
本番の前に模試で実力を確認し、本番では初見の問題で最終的な実力を測るように、機械学習では訓練データだけで採点せず検証とテストに分けてモデルの本当の実力を推定します。この過程を交差検証といい、Hold-out・K-Foldなどの方法で過学習を抑え汎化性能を信頼できるものにします。
チャプター別 機械学習図
チャプターを選ぶと、下の図がそのチャプターの内容に切り替わります。機械学習の流れを一覧で確認できます。
データを訓練・検証・テストに分け、K-Foldでは交代で検証し平均で性能を推定します。
交差検証:模試(検証)で実力推定、本番(テスト)で最終確認。
交差検証:模試と本番
交差検証とは — 訓練に使ったデータだけで性能を測ると、そのデータに合わせた過学習かどうか分かりません。そこでデータを訓練・検証・テストに分け、訓練だけで学習し検証集合で「模試」の性能を見て、最後にテスト集合で「本番」として1回だけ評価します。
訓練・検証・テスト — 訓練集合: モデルが重み・パラメータを学習するデータ。検証集合: ハイパーパラメータ選択やモデル比較に使う(模試)。テスト集合: 最終性能報告に1回だけ使う(本番)。典型的には訓練70〜80%、検証・テスト各10〜15%程度。
Hold-outとK-Fold — Hold-out: データを1回だけ訓練/検証(または訓練/テスト)に分ける。実装は簡単だが1回の分割に左右されやすい。K-Fold: データをK個の区間に分け、1区間を検証・残りを訓練に使い、次は2区間を検証…とK回繰り返す。各Foldで検証スコア を得て平均 を最終推定にする。
数式 — K-Foldの最終推定は 。 は第 Foldを検証に使ったときのスコア。
過学習の検出 — 訓練スコアは高いが検証・テストが低いと過学習。交差検証で検証スコアを見れば「暗記した問題だけ解ける」状態に気づけます。
汎化性能の推定 — 実務では「一度も見ていないデータ」での性能が重要。テストを1回だけ使い、検証はK-Foldなどで複数回分ければ推定が安定します。
ハイパーパラメータ・モデル選択 — 学習率やK-NNのK、木の深さなどは検証スコアが良い設定を選ぶ。検証集合が訓練と分離していることが公平な比較に必要。
実務パイプライン — データを受け取ったらまず訓練/検証/テストに分割。訓練でモデルを学習し、検証でハイパーパラメータを選び、最後にテストで最終スコアを1回だけ報告。
K-Foldでモデル比較 — 複数モデルを同じK-Foldで回し、Foldごとの検証スコアの平均を比較すれば、どれが良いか公平に判断できる。
まとめ — 交差検証は、訓練に使ったデータだけで性能を測ってはならないという前提に立つ。本番前に模試で実力を確認するように、機械学習でも訓練データだけで採点すると「練習問題を覚えただけ」かどうか分からない。そこでデータを訓練・検証・テストの3つに分ける。訓練でモデルがパターンを学習し、検証は学習中の実力確認やハイパーパラメータ選択に使う。テストは学習がすべて終わったあと、実戦投入前に1回だけ使い最終性能を報告する。分割の仕方にはHold-outとK-Foldがある。Hold-outはデータを1回だけ訓練/テスト(または検証)に分ける方法。K-FoldはデータをK個の区間に分け、1区間ずつ検証に使い残りで訓練する。K-Foldでは全データが1度は検証に使われるため、1回だけの分割より推定が安定する。