AI資格ドリル
資格を選ぶ↓

機械学習の具体的手法

G検定の交差検証(5分割の計算例で手順と平均の出し方を確認)

G検定のシラバスには「モデルの選択・評価」があります。このページは、その学習で使うk分割交差検証を、20件のデータを5分割する計算例で整理します。k分割交差検証は、データをk個に分け、1個を検証用、残りを学習用にする作業をk回繰り返して、結果を平均する方法です。

このページの20件と正解数は架空のデータです。分類モデルの正解率を、5回分求めます。

公式情報の確認

試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-10-02。

試験の出題範囲・実施要項は変動するため、受験前に公式情報を確認してください。

結論

  1. k分割交差検証は、k個に分けたデータのうち1個を検証用にする作業を、検証用を入れ替えながらk回行う
  2. 各回はk−1個で学習し、残りの1個で評価する。報告する値は、k回の評価の平均
  3. 1回だけの分割だと、どこを検証用にしたかで結果が大きく変わりうる
  4. 前処理(スケーリングなど)も、学習用のデータだけで学習させ、保持したデータに適用する
  5. 最終評価に使うテスト用のデータは、交差検証とは別に取り分けておく

5分割の手順

scikit-learnの公式ドキュメントは、k分割交差検証では、学習用のデータをk個の小さな集まり(フォールド)に分け、各フォールドについて次を行うと説明しています。k−1個を学習用に使ってモデルを学習させ、残りの1個で性能(たとえば正解率)を計算します。

20件を4件ずつの5個に分けた例です。検証用にするフォールドを1個ずつずらし、毎回、残り16件で学習します。

回検証用(4件)学習用正解数正解率
1回目1〜4件目残り16件3/40.75
2回目5〜8件目残り16件4/41.00
3回目9〜12件目残り16件3/40.75
4回目13〜16件目残り16件2/40.50
5回目17〜20件目残り16件4/41.00

どの件も、ちょうど1回だけ検証用になり、4回は学習用になります。用語は交差検証の用語集にあります。

5回の結果を平均する

scikit-learnの公式ドキュメントは、k分割交差検証が報告する性能は、ループで計算した値の平均だと説明しています。この例では、(0.75 + 1.00 + 0.75 + 0.50 + 1.00) ÷ 5 = 0.80 です。

5回の正解数は 3+4+3+2+4=16 で、20件中16件、正解率は 16÷20=0.80 と一致します。各回の検証用の件数が同じなので、回ごとの正解率の平均と、全体の正解率が同じ値になります。平均の0.80のほかに、最小0.50と最大1.00の幅も、モデルの安定度を見る手がかりになります。

1回の分割だけでは足りない理由

scikit-learnの公式ドキュメントは、学習用・検証用・テスト用の3つにデータを分けると、学習に使える件数が大きく減り、結果が(学習用,検証用)の組をどう乱数で選んだかに左右されうると述べています。交差検証は、その問題への解決策として紹介されています。

先の表で確かめます。17〜20件目だけを検証用にする1回の分割なら、正解率は1.00です。13〜16件目だけなら0.50になります。同じ手法でも、検証用の選び方だけで0.50から1.00まで動いています。5回の平均なら、特定の4件の出来に左右される度合いが小さくなります。

その代わり、モデルを5回学習させるので、計算の手間はk倍になります。分け方の違いを並べた説明はホールドアウト法と交差検証を比べたページ、3種類のデータの役割は学習・検証・テストのデータを比べたページにあります。

前処理で起きる情報漏れ

scikit-learnの公式ドキュメントは、設定(ハイパーパラメータ)をテスト用のデータの成績が良くなるまで調整すると、テスト用のデータの情報がモデルに「漏れ」て、評価が汎化性能を表さなくなると説明しています。

同じ資料の例は、スケーリング(StandardScaler)を学習用のデータだけで学習させ、その変換を保持したデータにも適用しています。このページの解釈として、平均や標準偏差を検証用を含む全データで計算してから分割すると、検証用の情報が学習に入ることになります。交差検証の中でも同じ手順を保つには、前処理とモデルをつなぐパイプライン(Pipeline)を使うと簡単になる、と同じ資料は説明しています。用語はデータリーケージの用語集にあります。

分け方を変える場面

  • 分類で、クラスの割合を各フォールドで保ちたいとき: 層化k分割(StratifiedKFold)。scikit-learnは、cvに整数を渡すと、分類器にはこちらが使われると説明している
  • 時間の流れに沿ったデータのとき: scikit-learnは、時間に依存して生成されたデータなら、時系列を考慮した交差検証のほうが安全だと述べている
  • 被験者や測定機器などのグループ構造があるとき: 同じ資料は、グループ単位の交差検証のほうが安全だと述べている

問題文から読み取る

このページの計算例から導いた読み方です。出題を予想するものではありません。

  • 「データをk個に分け、検証用を入れ替えてk回評価し、平均を取る」とあれば、k分割交差検証
  • 「1回の分割では結果が分割の仕方に左右される」を改善する方法として、交差検証が挙がる
  • 「全データで標準化してから分割した」は、検証用の情報が漏れる手順
  • 「交差検証の平均が高いので、テスト用のデータでの評価は不要」という文は、取り分けたテスト用の役割と合わない

よくある質問

交差検証は、G検定のシラバスにありますか?

JDLAのG検定ページは、試験範囲の技術分野に「モデルの選択・評価」を挙げています。交差検証は、このページでは「モデルの選択・評価」に関わる内容として整理しています。

k分割のkは、いくつにするものですか?

このページの例は5ですが、kの値は決まっていません。scikit-learnの公式ドキュメントの例では、cv=5として5分割で正解率を求めています。kを増やすと学習の回数が増えます。

交差検証をすれば、テスト用のデータは要りませんか?

要ります。scikit-learnの公式ドキュメントは、最終評価のためのテスト用のデータは取り分けたままにし、交差検証を使うときに不要になるのは検証用のデータだけだと説明しています。

交差検証の欠点は何ですか?

計算量が増えることです。scikit-learnの公式ドキュメントは、この方法が計算の負担が大きくなりうる一方、データをあまり無駄にしないと述べています。このページの例では、モデルを5回学習させます。

次に読むと効率的なページ

執筆: ミナト編集部(運営者情報を見る)