第5章 データ準備・可視化技法とモデル化(モデル化・機械学習)
DS検定のホールドアウト法・交差検証・データドリフト
DS検定(リテラシーレベル)の公式スキルチェックリストには、モデルの評価用にデータを分ける方法が★1つ星で入っています。ホールドアウト法と交差検証の仕組み、訓練データ・検証データ・テストデータの作り方、そして運用後に精度が下がる原因であるデータドリフトの3点です。このページでは、1,000件のデータを例に、分け方と平均の計算を確かめます。学習に使ったデータでは評価せず、評価用のデータは学習から切り離しておくのが共通の考え方です。
このページは試験の学習用の整理です。数字はすべて説明用の架空の値です。
この記事の目次
公式情報の確認
試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-10-02。
試験の出題範囲・実施要項は変動するため、受験前に公式情報を確認してください。
結論
- データは、訓練・検証・テストの3つに分ける。調整は検証データで行い、テストデータは最後の評価だけに使う
- ホールドアウト法は、1回だけ分ける方法。1,000件を6:2:2で分けると、訓練600件・検証200件・テスト200件
- 交差検証は、分け方を変えてk回学習・評価し、評価値の平均を取る方法。5分割で評価値が0.82・0.78・0.80・0.84・0.76なら、平均は0.80
- データドリフトは、データ構成の変化。学習完了後から精度が下がるので、運用中も精度をモニタリングする
訓練・検証・テストの3つのデータ
モデルの実力は、学習に使っていない、未知のデータでの成績で測ります。scikit-learn公式文書では、設定(ハイパーパラメータ)をテストデータで評価しながら調整すると、テストデータの情報がモデルに「漏れて」、評価値が未知のデータでの実力(汎化性能)を表さなくなる、と説明されています。これを防ぐために、調整用の検証データを別に取り置きます。
| データ | 役割 | 1,000件を6:2:2で分けたとき | 使い方 |
|---|---|---|---|
| 訓練データ | モデルに学習させる | 600件 | パラメータを学習する |
| 検証データ | ハイパーパラメータの調整や手法の選択に使う | 200件 | 調整のたびに評価する |
| テストデータ | 最後に、完成したモデルの実力を測る | 200件 | 調整には使わない |
検証データは調整のために何度でも使えますが、テストデータは、調整が終わった最後の評価に使います。なお、6:2:2という比率は、分け方の一例です。データの件数や目的に応じて変わります。
ホールドアウト法で1,000件を分ける
ホールドアウト法は、データの一部を評価用に取り置き(ホールドアウトし)、残りで学習する方法です。1,000件を、ランダムに、訓練600件・検証200件・テスト200件に分けます。
- 訓練600件で、複数の設定のモデルを学習する
- 検証200件で、各モデルの正解率を比べ、いちばんよい設定を選ぶ
- 選んだ設定で、テスト200件を使って、最終的な正解率を測る
手順が単純で、学習が1回で済みます。一方、1回しか分けないので、たまたまの分け方によって評価値が上下します。たとえば、検証200件に、答えやすい例が多く入ると、評価値は高めに出ます。ホールドアウト法は、手軽ですが、評価値が1回の分け方に左右されます。また、検証やテストに回した分は、学習に使えません。
時系列データでは、ランダムに分けず、時間の前後で訓練とテストに分けます。理由は、時系列分析のページで扱っています。
5分割の交差検証で評価値の平均を求める
交差検証(クロスバリデーション)は、データをk個に分け、k−1個で学習して残り1個で評価する処理を、評価に使う部分を入れ替えながらk回行う方法です。ここでは、前の節とは別の例として、テストデータを取り置く前の1,000件を200件ずつ5つに分けた5分割で考えます。実際には、最終評価用のテストデータは交差検証の外に取り置き、残りのデータを入れ替えながら使います。
| 回 | 評価に使う200件 | 学習に使う件数 | 正解率 |
|---|---|---|---|
| 1回目 | 1〜200件目 | 800件 | 0.82 |
| 2回目 | 201〜400件目 | 800件 | 0.78 |
| 3回目 | 401〜600件目 | 800件 | 0.80 |
| 4回目 | 601〜800件目 | 800件 | 0.84 |
| 5回目 | 801〜1,000件目 | 800件 | 0.76 |
5回の正解率の合計は0.82+0.78+0.80+0.84+0.76=4.00で、5で割ると0.80です。scikit-learn公式文書でも、k分割交差検証が報告する性能値は、k回の値の平均とされています。交差検証は、交差検証に回したデータは、すべて1回ずつ評価に使われ、評価値は平均で表します。1回目と5回目では0.82と0.76と、6ポイントの差があります。ホールドアウト法のように1回だけの分け方で測っていたら、0.82が出るか0.76が出るかで、モデルの印象が変わっていたことになります。
その代わり、学習をk回行うので、計算の手間は、5分割なら5倍かかります。なお、調整に交差検証を使う場合も、最終評価用のテストデータは別に取り置くのが基本です。
データドリフトと運用中のモニタリング
モデルは、作って終わりではありません。公式チェックリストの★1つ星には、データ構成の変化(データドリフト)によって、学習完了後から精度が劣化していくため、運用時は精度をモニタリングする必要があることが入っています。たとえば、季節や商品の入れ替わりで、入ってくるデータの性質が学習時と変わると、同じモデルでも当たりにくくなります。
| 時点 | 正解率(架空の例) |
|---|---|
| 運用開始時 | 0.90 |
| 1か月後 | 0.89 |
| 2か月後 | 0.86 |
| 3か月後 | 0.81 |
運用開始時の0.90が、3か月後に0.81へ9ポイント下がっています。毎月、実際の結果と照らして正解率を記録していれば、下がり始めた時点で、再学習などの対応を考えられます。データドリフトは、モデルが壊れたのではなく、データの側が変わったために起きます。公式チェックリストで理解が求められているのは、運用後に精度が下がる原因と、そのための継続的なモニタリングです。
DS検定の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
よくある質問
DS検定で、ホールドアウト法と交差検証はどこまで必要ですか?
公式スキルチェックリスト(data_science.csv)の★1つ星は、ホールドアウト法と交差検証の仕組みを理解し、訓練データ、パラメータチューニング用の検証データ、テストデータを作れることです。あわせて、データドリフトによる精度の劣化と、運用時のモニタリングの必要性を理解していることも★1つ星に入っています。
検証データとテストデータは、なぜ分けるのですか?
テストデータを見ながら設定を調整すると、テストデータの情報がモデルに漏れて、未知のデータに対する実力を正しく測れなくなるためです。scikit-learn公式文書でも、調整用の検証データを別に取り置き、最後にテストデータで評価する流れが説明されています。
ホールドアウト法と交差検証は、どちらがよいですか?
一般には、データが十分に多く、計算に時間がかかるときはホールドアウト法、データが少なく、1回の分け方に評価が左右されるのを避けたいときは交差検証が向いています。交差検証は、学習をk回行うので、計算の手間はk倍になります。
データドリフトとは何ですか?
公式チェックリストでは、データ構成の変化のことです。学習したときのデータと、運用中に入ってくるデータの性質がずれると、学習完了後から精度が下がっていきます。そのため、運用中も精度を定期的に確認します。
