最終更新日:2026年10月4日
fe fe-technology basic-theory ai
まず結論
訓練データはモデルを学習させるため、検証データはモデルや設定を選ぶため、テストデータは選択を終えたモデルの性能を最終評価するために使います。 訓練データは、学習データとも呼びます。
科目Aでは、データの名前だけでなく、「その結果を何の判断に使うか」を確認します。
学ぶ → 訓練、選ぶ → 検証、最後に測る → テスト。
このページは、三つのデータの役割を比較する記事です。訓練データに合わせすぎる状態とその対策は、過学習とは?で扱います。
直感的な説明
工場で、製品の画像から良品・不良品を判定する仕組みを作るとします。この予測・分類の仕組みを、モデルと呼びます。
まず、正解が分かっている画像を使って、不良品の特徴を学ばせます。次に、学習には使っていない別の画像で複数の設定を比べ、採用する設定を決めます。最後に、選択にも使っていない画像で、完成したモデルの性能を測ります。
最初の画像だけで性能を測ると、その画像にだけ詳しくなったモデルを高く評価してしまいます。また、最後の評価用画像を見ながら設定を選び直すと、その画像もモデル選びの材料になります。
学習に使わないだけでなく、最終評価用のデータを選択・調整にも使わないことが大切です。
定義・仕組み
三つのデータの役割
ここでは、正解付きのデータを三つに分ける、教師あり学習の基本的な流れで説明します。機械学習の基本のうち、モデルを作って評価する段階の話です。
| データ | 主な目的 | 結果を何に使うか |
|---|---|---|
| 訓練データ(学習データ) | データの規則をモデルに学習させる | 重みなど、モデル内部の値を更新する |
| 検証データ | モデルや設定を比較する | 採用する設定や学習の止めどきを選ぶ |
| テストデータ | 選択後の性能を評価する | 未知データへの性能を見積もり、報告する |
学習によって決まる重みなどをパラメータといいます。一方、学習の前に指定するモデルの複雑さなどの設定をハイパーパラメータといいます。
検証データは、通常、重みの更新に直接使いません。しかし、検証結果を見て設定を選ぶため、どのモデルを採用するかには影響します。ここが、最終評価用のテストデータとの違いです。
1,000件を分けて使う例
良品・不良品の正解付き画像が1,000件あるとします。同じ画像が複数の組に入らないように、次のように分けます。件数と比率は説明用の例であり、必須の分割比率ではありません。
| 手順 | 使う画像 | 行うこと |
|---|---|---|
| 1. 学習 | 訓練用600件 | 設定の異なる候補モデルを、それぞれ同じ訓練データで学習する |
| 2. 選択 | 検証用200件 | 同じ指標で候補を比較し、採用するモデルを決める |
| 3. 最終評価 | テスト用200件 | 選んだモデルを固定して性能を測る |
この例では、正しく分類できた件数の割合である正解率を比較基準とします。正解率は高いほどよい指標です。
| 候補モデル | 訓練データの正解率 | 検証データの正解率 |
|---|---|---|
| A | 88% | 82% |
| B | 96% | 90% |
| C | 100% | 86% |
検証正解率が最も高いのはBです。訓練正解率が100%という理由だけでCを選びません。
Bを選んで固定した後、テスト用200件のうち176件を正しく分類できたとします。テスト正解率は、176 ÷ 200 × 100 = 88%です。
検証の90%は「候補を選ぶために使った成績」、テストの88%は「選択に使わなかったデータで測った成績」です。対象データが異なるので、両者が一致する必要はありません。また、88%はこのテストデータでの結果であり、今後のすべての画像で同じ正解率を保証する値ではありません。
科目Aでどう出る?
「評価する」の後に何を決めるかを見る
検証データとテストデータは、どちらも学習済みモデルの予測結果を評価します。「学習に使っていないデータで評価する」という説明だけでは、区別しきれません。
| 選択肢の説明 | 対応するデータ・判断 |
|---|---|
| 予測と正解のずれを使ってモデルの重みを更新する | 訓練データ |
| 複数の設定を比較し、最もよいものを選ぶ | 検証データ |
| 学習途中の性能を見て、終了する時点を決める | 検証データ |
| 設定を決め終えたモデルの性能を、別に残しておいたデータで測る | テストデータ |
| テスト正解率が上がるまで設定を変更する | テストを調整に使っており、最終評価として不適切 |
テスト結果を見て選び直すとどうなる?
先ほどの例で、Bのテスト正解率88%を見て「AやCの方がよいかもしれない」と考え、同じテストデータで比べて採用モデルを変更したとします。
この時点で、そのデータはモデル選択に使われています。名称を「テストデータ」のままにしても、選択から独立した最終評価用データとしては扱えません。
モデルを改善すること自体は必要ですが、改善後の性能を評価するには、選択・調整に使っていない別のデータを確保するなど、評価手順を見直します。
どんな場面で使う?
製品の不良判定や需要予測のモデルを導入するときに、候補の比較と導入前の性能確認を分けるために使います。
データの分け方も、実際に使う状況に合わせます。例えば、将来の売上を予測するなら、過去のデータで学習し、それより後の期間で評価する方法が考えられます。同じ製品を連続撮影したほぼ同一の画像が学習側と評価側に混ざると、新しい製品への性能を過大評価するおそれがあります。
三つの組に分けたという形式だけでなく、評価用データが実際の未知データを適切に代表しているかも確認します。
よくある誤解・混同
テストデータには正解を付けない?
正解率などを測るには、比較対象となる正解が必要です。このページの分類例では、検証・テストデータにも正解が付いています。
「未知」とは、ここではモデルの学習などに使っていないという意味です。評価する側も正解を知らない、という意味ではありません。
分割すれば、情報の混入は必ず防げる?
前処理にも注意が必要です。例えば、数値の尺度をそろえる標準化で使う平均・標準偏差を、分割前の全データから求めると、評価用データの情報も取り込んでしまいます。
基本は、訓練データから平均・標準偏差を求め、検証・テストデータにもその値を使って変換することです。評価用の情報などが不適切にモデル作成へ入り込むことを、データリーク(データリーケージ)と呼びます。
三つに分ける比率は決まっている?
このページの600件・200件・200件は一例です。必要な学習量と評価の信頼性、データの総数や性質に応じて決めます。
また、学習用と検証用の組合せを入れ替えて評価する交差検証もあります。固定した検証用データを一組だけ用意する方法とは異なりますが、モデル選択と最終評価を区別する考え方は共通です。k分割の手順や、各回に使うデータ件数は交差検証の記事で確認できます。
確認問題(科目A・オリジナル)
ある企業は、正解付きの画像を、互いに重複しないP・Q・Rの三つの集合に分けた。Pを使って候補モデルを学習し、Qでの正解率を比較して採用モデルを決めた。その後、選択まで一度も利用していないRで、採用モデルの正解率を測定した。P・Q・Rの役割として、最も適切な組合せはどれか。
- ア:Pは訓練データ、Qはテストデータ、Rは検証データ
- イ:Pは検証データ、Qは訓練データ、Rはテストデータ
- ウ:Pは訓練データ、Qは検証データ、Rはテストデータ
- エ:Pはテストデータ、Qは検証データ、Rは訓練データ
正解:ウ
- ア:Qは採用モデルを選ぶために使っているので、検証データです。Rとの役割が逆です。
- イ:重みなどを学習するPが訓練データであり、モデルを比較するQが検証データです。
- ウ:Pで学習し、Qで選択し、選択に使っていないRで最終評価するため、適切です。
- エ:Pは学習に使っており、最終評価用のテストデータではありません。Rは学習には使っていません。
判断の決め手は、QもRも正解率を測っているが、Qの結果だけをモデル選択に使っていることです。
公式情報・参考リンク
- IPA:基本情報技術者試験シラバス Ver.9.2
- 「基礎理論」の「情報に関する理論」で、機械学習の用語例として学習・検証・テストデータなどが挙げられています。
- scikit-learn公式:Cross-validation
- 学習、モデル選択、最終評価のためにデータを分ける理由を確認できます。
- scikit-learn公式:Common pitfalls and recommended practices
- 前処理によるデータリークと、訓練データで求めた変換を評価用データへ適用する考え方を確認できます。
まとめ(試験直前用)
- 訓練データ=学習、検証データ=選択・調整、テストデータ=最終評価。
- 検証とテストは、評価結果をモデル選択に使うかどうかで区別する。
- テスト結果を見ながら設定を選ぶと、独立した最終評価ではなくなる。
- 前処理で求める平均などにも、評価用データの情報を混ぜない。
- 分割比率は固定ではない。データの性質と評価の目的に合わせる。