作ったモデルが「本番でも通用するか」を、どうやって確かめればよいのでしょうか。その標準的な答えが交差検証です。データの分け方と繰り返しの仕組みを理解すれば、過学習の検出やモデル選択の話が一気につながります。

📖 ひと言でいうと

交差検証(クロスバリデーション)とは、手元のデータを訓練用と評価用に分割し、学習と評価を繰り返すことで、モデルの汎化性能(未知データへの予測性能)を見積もる手法です。

例えるなら、模試を使った実力測定です。教科書(訓練データ)で勉強した内容を、勉強に使っていない模試(テストデータ)で試すからこそ本当の実力がわかります。しかも1回の模試ではたまたま良い点・悪い点が出るかもしれないので、問題セットを取り替えて複数回受け、平均点で判断する——これが交差検証の発想です。

🖼 1枚でわかる交差検証

交差検証(クロスバリデーション)の全体像
  • 目的 — 未知データへの性能(汎化性能)を統計的に見積もる
  • 基本操作 — データを訓練セットとテストセットに分割して学習・評価
  • ホールドアウト検証 — 1回だけ分割するシンプルな方法
  • k-分割交差検証 — k個に分割し、評価担当を交代しながらk回繰り返す
  • 結果の使い方 — 評価値の平均や分散で汎化性能を推定・モデルを比較
つくもち屋「G検定対策」SUMMARY

📘 公式テキストの説明

汎化性能を評価する統計的な手法で、データセットを複数のサブセットに分割し、それぞれのサブセットでモデルの訓練と評価を行う。具体的には、データを「訓練セット」と「テストセット」に分割し、訓練セットでモデルを訓練して、テストセットでその性能を評価する。このプロセスを各サブセットで繰り返し、最終的に得られた性能評価の平均値や分散などを用いて、モデルの汎化性能を推定する。

ポイントは3つあります。第一に、目的は「汎化性能の評価」であること。訓練に使ったデータでの成績は当てにならないため、評価は必ず訓練に使っていないデータで行います。第二に、「分割して訓練と評価を行う」こと。第三に、それを「繰り返して平均や分散を取る」こと。1回の分割ではデータの偶然の偏りに結果が左右されるため、繰り返しの平均によって安定した推定値を得るのです。

🔍 しっかり理解する

なぜデータを分けるのか

機械学習モデルの真の目的は、学習に使っていない未知のデータを正しく予測することです。ところが、学習に使ったデータで評価すると、訓練データを「暗記」しただけの過学習モデルでも高得点が出てしまいます。そこで、手元のデータの一部をあえて学習に使わず取っておき、「疑似的な未知データ」として評価に使います。これがデータ分割の基本思想です。

交差検証には主に2つの方法があります。

💡 ポイント
  • ホールドアウト検証:データを1回だけ訓練データとテストデータに分割する(例えば8:2)。シンプルで計算も速い反面、分け方の運によって評価がぶれやすい
  • k-分割交差検証:データを複数回異なる方法で分割し、それぞれで学習と評価を行う。評価が安定する反面、学習をk回行うので計算コストが高い

k-分割交差検証の流れ

k-分割交差検証では、データをk個のブロック(例えばk=5)に分け、次の手順を繰り返します。

k個に分割
データをk個のブロックに分ける
1個をテストに
残りk-1個で訓練し評価
担当を交代
テスト役を替えてk回繰り返す
平均で評価
k回の評価値の平均・分散を計算

この方式の利点は、すべてのデータが一度はテスト役を務め、一度も無駄にならないことです。データが少ないときほど、この「全員参加」の効果が効いてきます。評価値の平均だけでなく分散(ばらつき)も見ることで、「このモデルの性能はどのくらい安定しているか」まで把握できます。kの値としては5や10がよく使われますが、kを大きくするほど1回あたりの訓練データは増える一方、学習の繰り返し回数も増えて計算時間がかかります。

何に使われるのか

交差検証の評価値は、単に性能を知るためだけでなく、複数のモデルやハイパーパラメータ設定を比較して選ぶ「モデル選択」の判断材料になります。例えば正則化の強さを変えた複数の候補を交差検証にかけ、平均性能が最も良い設定を採用する、といった使い方が典型です。また、訓練データでの成績と交差検証での成績のギャップが大きければ、過学習が起きているサインとして検出できます。

💡 具体例で考える

患者データ1,000件から病気の有無を予測するモデルを作るとします。1,000件全部で学習し同じ1,000件で評価したところ正解率98%——しかしこれは暗記の成果かもしれません。そこで5分割交差検証を行い、200件ずつを順にテスト役にして5回評価したところ、正解率は82%、80%、85%、81%、83%で平均約82%でした。この「82%」こそが、新しい患者に対して期待できる現実的な性能の見積もりです。もし5回の値が60%〜95%と大きくばらつくなら、データ量不足やモデルの不安定さを疑う手がかりにもなります。

⚠️ よくある誤解・紛らわしい用語

💡 ポイント
  • 交差検証は精度を「上げる」手法ではない。あくまで性能を正しく「測る」手法です。測った結果を使ってモデル選択や過学習の検出を行うことで、間接的に良いモデルづくりに貢献します。
  • ホールドアウト検証との関係。ホールドアウト検証は1回だけの分割、k-分割交差検証は分割を替えたk回の繰り返しです。試験では両者の説明の入れ替えに注意してください。
  • テストデータで学習してはいけない。テストセットの情報が少しでも学習に混ざると(リーケージ)、評価が実力より甘く出てしまいます。「評価用データは学習に使わない」が大原則です。
  • 過学習との混同。過学習はモデルに起こる「状態」、交差検証はそれを検出・評価する「手法」です。役割のレイヤーが違うため、選択肢で並んでいても定義を取り違えないようにしましょう。

📝 試験でのポイント

💡 ポイント
  • 「汎化性能を評価する統計的な手法」「分割して訓練と評価を繰り返し、平均で推定する」という定義の言い回しをそのまま選ばせる問題が基本形です。
  • ホールドアウト検証(1回分割)とk-分割交差検証(k回繰り返し)の違いを問う対比問題が頻出です。
  • 「訓練に使ったデータで評価してよいか」を問う正誤問題では、明確に「不可」と判断できるようにしましょう。
  • k-分割交差検証の長所(データを無駄なく使え評価が安定)と短所(計算コストがk倍)もセットで押さえておくと応用問題に対応できます。

📚 まとめ

💡 ポイント
  • 交差検証は、データを分割して訓練と評価を繰り返し、汎化性能を統計的に見積もる手法です。
  • 主な方式はホールドアウト検証(1回分割)とk-分割交差検証(k回繰り返し)の2つです。
  • k-分割交差検証は全データを無駄なく使え、平均・分散により安定した評価ができます。
  • 評価値はモデル選択やハイパーパラメータ調整、過学習の検出に活用されます。
  • 「評価は学習に使っていないデータで行う」という大原則を体現した手法です。