Skip to the content.

最終更新日:2026年10月4日

まず結論

交差検証(Cross-validation)は、データの学習用・検証用の分け方を変えて学習と評価を繰り返し、モデルの性能を見積もる方法です。 代表的な方法が、データをk個の組に分けるk分割交差検証です。

科目Aでは、次の手順を押さえます。

k個のうち1組で検証し、残りのk−1組で学習する。検証用を順番に替えてk回評価し、結果を平均などでまとめる。

このページでは、分割を入れ替える手順と件数の計算を扱います。学習・モデル選択・最終評価という役割の違いは、訓練データ・検証データ・テストデータの違いで確認できます。

直感的な説明

製品画像から不良品を見分けるモデルを、手元のデータで比較するとします。モデルとは、データから作る予測・分類の仕組みです。

一度だけデータを分けて評価すると、検証用にたまたま判定しやすい画像が多く入るなど、分け方によって成績が変わることがあります。

そこで、画像をいくつかの組に分け、「今回はA組を検証用、次はB組を検証用」と順番に入れ替えます。毎回、検証用以外の組でモデルを学習し直し、その回の検証用の組で成績を測ります。

一つの分け方での成績だけに頼らず、複数回の結果をまとめて判断するのが交差検証の考え方です。

定義・仕組み

5分割交差検証の流れ

正解付きの画像1,000件から、まず最終評価用のテストデータ200件を取り分けます。残る800件を、交差検証に使います。件数は説明用の例であり、必須の比率ではありません。

800件を、重複しないA〜Eの5組に160件ずつ分けます。この組をフォールド(fold)と呼び、組の数5がkに当たります。

次の表は、ある一つの設定のモデルを5分割交差検証で評価する手順です。各回で、同じ学習方法・設定を使います。

回 A組 B組 C組 D組 E組
1 検証 学習 学習 学習 学習
2 学習 検証 学習 学習 学習
3 学習 学習 検証 学習 学習
4 学習 学習 学習 検証 学習
5 学習 学習 学習 学習 検証

表の読み方:横に見ると毎回4組で学習・1組で検証し、縦に見ると各組が検証に1回、学習に4回使われています。

1回目はB〜Eの640件で学習し、Aの160件で検証します。2回目はA・C・D・Eの640件で学習し、Bの160件で検証します。以後も同様です。

ここで、前の回の学習済みモデルをそのまま引き継ぎません。1回目のモデルはB組で学習しているため、それを引き継いで2回目のB組を評価すると、「その回の学習に使っていないデータでの評価」にならないからです。

評価結果は平均などでまとめる

正しく分類できた割合を正解率とします。ある設定での各回の検証正解率が次の値だったとします。数値は説明用です。

回 検証正解率
1 80%
2 85%
3 90%
4 95%
5 80%

平均正解率は、次のように求めます。

(80 + 85 + 90 + 95 + 80) ÷ 5 = 86%

最もよかった4回目の95%だけを、この設定の交差検証の成績として採用するのは不適切です。平均に加え、分割によって成績がどの程度変わるかも確認します。

複数の設定を比較するときは、各設定について同じ分割と評価指標で交差検証を行います。例えば、ある設定の平均が86%、別の設定の平均が89%なら、平均正解率を基準にする比較では後者が候補になります。

選択後に学習し直し、最後にテストする

交差検証で設定を選んだ後は、その設定を使って、交差検証に使った800件全体で最終モデルを学習する方法が一般的です。そして、取り分けていたテストデータ200件で最終評価します。

交差検証の平均値は、設定の選択に使った評価結果です。選択に使っていないデータでの最終評価とは区別します。 テストデータ200件は、A〜Eの入替えにも設定の選択にも使いません。

科目Aでどう出る?

学習件数・検証件数・回数を区別する

N件をk組に等分できる場合、通常のk分割交差検証を1巡するときの関係は次のとおりです。Nは交差検証に使う件数で、別に取り分けた最終テスト用の件数は含みません。

求めるもの 計算・回数 N = 800、k = 5の例
1回の検証件数 N ÷ k 160件
1回の学習件数 N × (k−1) ÷ k 640件
一つの設定について学習・評価する回数 k回 5回
各データが検証側に入る回数 1回 1回
各データが学習側に入る回数 k−1回 4回

等分できない場合は、組の件数に差が生じます。まずは、「1組で学習、残りで検証」ではなく、その逆だと押さえます。

ホールドアウト法との違い

方法 学習用・検証用の分け方 判断のポイント
ホールドアウト法 一度分けた学習用・評価用のデータを使う 手順は簡単だが、その分け方に評価が左右される
k分割交差検証 k組に分け、検証用の組を順番に替える 複数回の評価をまとめるが、学習の計算量が増える

「同じ学習済みモデルに同じ検証データをk回入力する」という説明は、k分割交差検証ではありません。学習用・検証用の組合せを変え、各回で学習し直すことが必要です。

どんな場面で使う?

データが限られる中でモデルの設定を比較したいときや、一度の分割だけでは評価に不安があるときに使います。各データを学習側と検証側の両方で活用できますが、一つの回の中では両者を分けます。

一方、将来の売上を予測するような時系列データでは、単純にランダムな組へ分けると、未来のデータで学習して過去を予測する形になることがあります。実際の利用に合わせ、過去で学習し、その後の期間で評価するなど、時間順序を守る分割を検討します。

よくある誤解・混同

交差検証をすれば過学習が自動的に解消する?

交差検証は評価の方法であり、モデルを自動的に単純化したり、学習のしすぎを修正したりする処理ではありません。評価結果を基に、モデルや設定を選び直す必要があります。

過学習の状態と対策は、過学習とは?で整理しています。

全データを一度ずつ検証するなら、テストは不要?

交差検証の結果を見て設定を選ぶ場合、その結果は選択に影響します。選択後の最終評価に使うテストデータを別に残す理由は、固定の検証データを使う場合と同じです。

kを大きくするほど必ずよい?

組の数を増やすと、1回の学習に使えるデータの割合は増えますが、学習を繰り返す回数も増えます。また、評価が必ず安定するとは限りません。kは、データの量・性質や計算に使える時間などに応じて決めます。

前処理は800件全体で済ませてよい?

平均・標準偏差を求めて数値の尺度をそろえる標準化などでは、各回の学習用データだけから変換に必要な値を求め、その値で検証用データを変換します。

分割前の800件全体から平均などを求めると、その回の検証用データの情報も取り込んでしまいます。交差検証でも、こうした情報の混入(データリーク)に注意します。

確認問題(科目A・オリジナル)

最終評価用のテストデータを別に確保した上で、残る600件を重複しない5組に等分し、5分割交差検証を1巡する。各回で1組を検証用、残りを学習用とする。この手順の説明として、最も適切なものはどれか。

  • ア:各回で120件を学習用、480件を検証用とする。
  • イ:各回で480件を学習用、120件を検証用とし、各データは検証用に1回使われる。
  • ウ:600件全体で一度だけ学習し、同じモデルで各組を順番に評価する。
  • エ:5回の正解率のうち、最大値だけを平均正解率として報告する。

正解:イ

  • ア:学習用と検証用の件数が逆です。検証用は1組なので、600 ÷ 5 = 120件です。
  • イ:学習用は残り4組の480件です。検証用の組を替えるため、各データは検証側に1回入ります。
  • ウ:全体で学習したモデルでは、検証対象も学習済みです。各回の学習用480件で学習し直します。
  • エ:平均は5回の値を合計して5で割ります。最もよい回だけを選ぶと、ほかの回の評価を無視してしまいます。

公式情報・参考リンク

まとめ(試験直前用)

  • k分割交差検証は、1組で検証、残りのk−1組で学習する手順をk回行う。
  • 通常の1巡では、各データを検証に1回、学習にk−1回使う。
  • 各回でモデルを学習し直し、評価結果を平均などでまとめる。
  • モデル選択に交差検証を使っても、最終テストは別に確保する。
  • 交差検証は評価の方法。過学習やデータリークを自動的に防ぐものではない。

© 2024-2026 stemtazoo. All rights reserved.