作ったモデルが「本番でも通用するか」を、どうやって確かめればよいのでしょうか。その標準的な答えが交差検証です。データの分け方と繰り返しの仕組みを理解すれば、過学習の検出やモデル選択の話が一気につながります。
📖 ひと言でいうと
交差検証(クロスバリデーション)とは、手元のデータを訓練用と評価用に分割し、学習と評価を繰り返すことで、モデルの汎化性能(未知データへの予測性能)を見積もる手法です。
例えるなら、模試を使った実力測定です。教科書(訓練データ)で勉強した内容を、勉強に使っていない模試(テストデータ)で試すからこそ本当の実力がわかります。しかも1回の模試ではたまたま良い点・悪い点が出るかもしれないので、問題セットを取り替えて複数回受け、平均点で判断する——これが交差検証の発想です。
🖼 1枚でわかる交差検証
📘 公式テキストの説明
汎化性能を評価する統計的な手法で、データセットを複数のサブセットに分割し、それぞれのサブセットでモデルの訓練と評価を行う。具体的には、データを「訓練セット」と「テストセット」に分割し、訓練セットでモデルを訓練して、テストセットでその性能を評価する。このプロセスを各サブセットで繰り返し、最終的に得られた性能評価の平均値や分散などを用いて、モデルの汎化性能を推定する。
ポイントは3つあります。第一に、目的は「汎化性能の評価」であること。訓練に使ったデータでの成績は当てにならないため、評価は必ず訓練に使っていないデータで行います。第二に、「分割して訓練と評価を行う」こと。第三に、それを「繰り返して平均や分散を取る」こと。1回の分割ではデータの偶然の偏りに結果が左右されるため、繰り返しの平均によって安定した推定値を得るのです。
🔍 しっかり理解する
なぜデータを分けるのか
機械学習モデルの真の目的は、学習に使っていない未知のデータを正しく予測することです。ところが、学習に使ったデータで評価すると、訓練データを「暗記」しただけの過学習モデルでも高得点が出てしまいます。そこで、手元のデータの一部をあえて学習に使わず取っておき、「疑似的な未知データ」として評価に使います。これがデータ分割の基本思想です。
交差検証には主に2つの方法があります。
- ホールドアウト検証:データを1回だけ訓練データとテストデータに分割する(例えば8:2)。シンプルで計算も速い反面、分け方の運によって評価がぶれやすい
- k-分割交差検証:データを複数回異なる方法で分割し、それぞれで学習と評価を行う。評価が安定する反面、学習をk回行うので計算コストが高い
k-分割交差検証の流れ
k-分割交差検証では、データをk個のブロック(例えばk=5)に分け、次の手順を繰り返します。
この方式の利点は、すべてのデータが一度はテスト役を務め、一度も無駄にならないことです。データが少ないときほど、この「全員参加」の効果が効いてきます。評価値の平均だけでなく分散(ばらつき)も見ることで、「このモデルの性能はどのくらい安定しているか」まで把握できます。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-分割交差検証は全データを無駄なく使え、平均・分散により安定した評価ができます。
- 評価値はモデル選択やハイパーパラメータ調整、過学習の検出に活用されます。
- 「評価は学習に使っていないデータで行う」という大原則を体現した手法です。
