はじめに
機械学習モデルの性能を確かめるには、学習に使ったデータとは別のデータで評価する必要があります。ただし、一度だけデータを分ける方法と、分け方を変えて繰り返し評価する方法では、得られる情報と計算の負担が異なります。
ホールドアウト法は一度の分割で評価する方法、交差検証法は検証に使うデータを入れ替えて複数回評価する方法です。この記事では、100件の例で両者の違いを比べ、目的に応じて選べるように整理します。
この記事で分かること
- 学習データ・検証データ・テストデータの役割
- ホールドアウト法と5分割交差検証法の進め方の違い
- 計算量やデータの性質に応じた選び方と、評価時の注意点
まず、学習・検証・テストをどう分ける?
データを分ける目的は、学習時に見たデータへうまく合わせられるかではなく、未知のデータに対しても性能が出るかを確かめることです。用途の違いを押さえておきましょう。
- 学習データ:モデルが特徴や傾向を学ぶためのデータ。
- 検証データ:モデルの種類や設定を比較・調整するためのデータ。
- テストデータ:選択・調整を終えたモデルの性能を最後に確かめるためのデータ。
検証結果を見ながら設定を変える作業を、テストデータで繰り返してはいけません。テストデータの特徴に合わせた選び方になり、未知データに対する性能を高く見積もるおそれがあるためです。なお、交差検証の説明では各回の検証部分を「テスト」と呼ぶ場合もありますが、この記事では最終評価用のテストデータとは区別します。
ホールドアウト法と交差検証法の違い
| 比較項目 | ホールドアウト法 | 交差検証法(k分割) |
|---|---|---|
| 検証用データ | 一度決めた部分を使う | k個の部分を順番に使う |
| 学習・評価回数 | 1組の分割で評価 | 基本的にk回学習・評価 |
| 結果の特徴 | 分割の偶然に左右される場合がある | 複数回の結果とばらつきを確認できる |
| 計算負担 | 比較的小さい | 学習を繰り返す分、大きい |
| 選ぶときの目安 | まず素早く評価したいとき | 一度の分割だけでは判断しにくいとき |
どちらの方法も、分割方法そのものがモデルを高性能にするわけではありません。どの程度信頼できる評価になるかは、データ件数だけでなく、データの代表性や分割の仕方にも左右されます。
ホールドアウト法はどう評価する?
ホールドアウト法では、データを一度だけ学習用と評価用に分けます。モデルを調整する場面では、学習用・検証用・テスト用の3つに分ける構成が分かりやすいでしょう。
例えば100件のデータなら、説明用として学習60件・検証20件・テスト20件に分けられます。学習60件でモデルを作り、検証20件で設定を比べ、最後にテスト20件で性能を確認します。この比率は例であり、どのデータにも当てはまる固定ルールではありません。
一度の分割なので計算が比較的少なくて済みます。一方、検証用にたまたま易しいデータや難しいデータが偏ると、結果が変わることがあります。データが限られるときは、その影響に注意が必要です。また、テスト20件で十分な評価ができるとは限らず、実務では目的に合う件数と代表性を確保します。
交差検証法はどう評価する?
k分割交差検証(k-fold cross-validation)は、開発用データをk個の部分(フォールド)に分け、そのうち1つを検証用、残りを学習用として、検証部分を入れ替える方法です。
100件のうち最終テスト用に20件を取り分け、残る開発用80件を5分割する例を考えます。各フォールドは16件です。
- 1回目は64件で学習し、残る16件で検証します。
- 2~5回目も検証に使う16件を順番に入れ替え、同じ設定のモデルを各回で学習・評価します。
- 5回の評価値の平均やばらつきを確認し、モデル・設定を選びます。
- 選んだ設定で開発用80件を使って学習し直し、触れていなかった最終テスト20件で最後に評価します。

交差検証は1回の分割だけでは分からない評価値の変動を確認できる利点があります。ただし、学習を5回繰り返すため、1回のホールドアウト評価より計算に時間がかかるのが一般的です。
どちらをどう選ぶ?
最初に素早く大まかな性能を確かめたい場合は、ホールドアウト法が選びやすい方法です。データが十分にあり、学習に時間のかかるモデルでは、計算負担を抑える効果も期待できます。
一度の分割による結果の偏りを確かめたい場合は、交差検証法が役立ちます。複数の分割で評価し、平均だけでなく各回の値が大きく違っていないかも確認できます。ただし、データが極端に少ない場合は、交差検証だけで十分な信頼性が得られるとは限りません。
選ぶ基準は「交差検証法の方が必ず正確」という単純なものではありません。データの件数・偏り・計算時間・評価目的を考え、いずれの場合も最終テストをモデル選択から独立させることが重要です。
データ分割で失敗しないための注意点
評価方法を選んでも、分割の仕方を誤ると結果を信用できなくなります。特に注意したいのはデータ漏洩です。これは、本来は学習時に使えないはずの検証・テスト側の情報が、学習や前処理へ混ざることです。
例えば、全100件から平均値を計算して欠損値を埋めた後にデータを分けると、評価用データの情報まで前処理に使ってしまいます。最初にデータを分け、平均値などは各学習部分だけから求め、検証部分にはその値を適用します。交差検証でも各回の学習部分だけで前処理の条件を決める必要があります。
また、同じ人の記録が学習側と評価側の両方に入る場合や、時系列データで未来の記録を学習し過去を評価する場合には、通常のランダム分割が適切とは限りません。目的に応じてグループや時間の順序を保って分割します。クラスに大きな偏りがある分類では、各部分のクラス比率にも気を配りましょう。
まとめ
ホールドアウト法は一度の分割で素早く評価でき、交差検証法は検証部分を入れ替えて複数回評価できる点が主な違いです。評価結果が分割に左右されにくいかを確かめたいなら交差検証法、計算負担を抑えてまず評価したいならホールドアウト法が候補になります。
ただし、どちらも適切な分割とデータ漏洩の防止が前提です。検証用のデータでモデルを選び、最終テスト用のデータを最後に使うという原則を守って、目的に合う方法を選びましょう。