最終更新日:2026年8月26日
gk machine_learning evaluation
G検定トップ
> 交差検証とは?k分割とテストデータの違い【G検定対策】
まず結論
交差検証(Cross Validation)とは、データを複数に分け、学習用と検証用を入れ替えながら性能を評価する方法です。
G検定では、まず次を押さえます。
交差検証 = モデル選択・性能見積もりのための検証
テストデータ = 最後の最終評価用
直感的な説明
1回の模試だけで実力を判断すると、たまたま得意な問題が多かったなどの影響を受けます。
そこで、問題セットを入れ替えて複数回評価し、その結果をまとめて見るイメージです。
1回だけ評価
→ 分割の偶然に左右されやすい
複数の分割で評価
→ 性能を安定して見積もりやすい
定義・仕組み
代表的なのが k分割交差検証(k-fold Cross Validation) です。
- データをk個のグループに分ける
- 1つを検証用、残りを学習用にする
- 検証用のグループを入れ替える
- k回評価する
- 評価結果を平均などでまとめる
通常のk-foldでは、各サンプルが一度ずつ検証側に回ります。
学習・検証・テストの役割
| データ | 主な役割 |
|---|---|
| 学習データ | モデルのパラメータを学習する |
| 検証データ | モデル・ハイパーパラメータを選ぶ |
| テストデータ | 最終性能を確認する |
交差検証をモデル選択に使う場合も、最終テストデータは分けて残しておくのが基本です。
いつ使う?(得意・不得意)
得意なこと
- データ数が少ない
- 1回の分割による評価のばらつきを抑えたい
- 複数モデルやハイパーパラメータを比較したい
苦手・注意点
- k回学習するため計算コストが増える
- 時系列データをランダムに分割すると、未来情報が過去側へ混ざることがある
- クラス不均衡では各foldの比率が偏る場合がある
分類でクラス比率を保ちたい場合は、層化k分割(Stratified k-fold) が使われます。
時系列では、通常のランダムk-foldではなく、時間順序を保つ分割を使います。
G検定ひっかけポイント
テストデータとの違い
- 交差検証 → モデル選択や性能見積もりに使う
- テストデータ → 選択が終わった後の最終評価に使う
データリーケージに注意
交差検証だから自動的にリーケージが防げるわけではありません。
例えば、全データで標準化や特徴選択を行ってからfoldに分けると、検証側の情報が学習処理に混ざることがあります。
前処理を全データで先に実施
→ リーケージの可能性
各foldの学習データだけで前処理を学習
→ 検証側へ適用
その他の判断軸
- 「k個に分けて順番に検証」→ k-fold交差検証
- 「クラス比率を保つ」→ Stratified k-fold
- 「時間順序がある」→ ランダム分割に注意
- 交差検証を何度も見ながら調整すると、検証結果そのものに過度に合わせることもある
まとめ(試験直前用)
- 交差検証 = 学習と検証を入れ替えて性能を見積もる
- k-foldではk個に分けてk回評価する
- テストデータは最終評価用として別に残す
- クラス不均衡では層化、時系列では時間順序に注意
- 前処理もfoldの中で行い、データリーケージを防ぐ