
データセットのtrain/val/testとは?
2024/12/23
AIのモデルを精度よく作るには、たくさんのデータを使って学習させる必要があります。ただし、単にデータをたくさん集めればいいわけではなく、それを適切に利用することが大切です。機械学習に使用するデータは目的に応じていくつかの種類に分けられますが、分け方によってAIの精度は大きく左右されるといっても過言ではありません。今回はそのようなデータの分割方法やその効果について詳しく解説していきます。
データセットの種類
まずはデータセットの種類について説明します。
トレーニングデータセット
トレーニングデータセットは訓練データセットとも呼ばれます。文字通りモデルの学習に使用されるデータで、モデルの重みの更新はこのデータセットのみをもとに行われます。
検証データセット
検証データセットは、モデルのハイパーパラメータを調整したり、過学習を防ぐためのアーリーストッピングに使用されます。トレーニング中のモデルの性能を評価し、必要に応じてモデルやそのパラメータを調整するためのフィードバックを提供します。検証データはトレーニング中に使用されますが、モデルの精度を最終的に評価する際には使用されません。モデルの精度を向上を目的としている点はトレーニングデータセットと同じですが、検証データは重みの更新以外の用途に利用されるのが特徴です。
テストデータセット
テストデータセットは、最終的なモデルの性能を評価するために使用されます。このデータはモデルの学習やチューニングには一切使用されないため、最終的な精度を客観的に評価することができます。テストデータによる評価は、モデルが未見のデータにどれだけ一般化できるかを測定するためのものです。
Trainvalデータセット
データセットをトレーニングと検証の目的で使用する際に、これらを一つの大きなデータセットとしてまとめて扱うことがあります。この場合、上記の3種類のデータセットとは別にTrainvalデータセットを使用することがあります。これはトレーニングデータセットと検証データセットを合わせもので、モデルの重み更新に使用するデータを少しでも多くしたい場合に使用されます。特にコンピュータビジョンの分野では一般的な分割法で、全体のデータセットをまずTrainvalとして扱い、その中からランダムに一定割合を検証用に分けて使用します。
データセット分割の効果
それぞれのデータセットが異なる目的で使用されることで、より信頼性の高いモデル開発が可能となります。
過学習の防止
トレーニングだけでなく検証とテストも行うことで、モデルがトレーニングデータに過剰に適合する現象である過学習を防止できます。モデルの性能が頭打ちになり、これ以上性能向上が見込めない状況で学習プロセスを早期に打ち切ることを「アーリーストッピング」と呼びますが、アーリーストッピングを行うか否かの判断は検証データを用いて行います。
汎化性能の評価
訓練データや検証データはモデルの学習プロセスで使用するデータなので、最終的なモデルの性能を評価する際に使用するのは不適切です。例えば問題集と実際のテストが全く同じ問題で構成されている場合、問題の答えを覚えていれば正解できることになってしまいます。「見たことのない問題」に対しても正解できるかが重要であるため、テストデータセットを使用することで、モデルが未知のデータに対してどれだけうまく機能するかを測定できます。
データセット分割の方法
分割の比率
モデル開発のために集めたデータ全体のうち、以下のように検証・テストデータセットと比較してトレインデータセットが大きくなるように分割されることが一般的です。
トレインデータ:80%、検証データ:10%、テストデータ:10%
トレインデータ:60%、検証データ:20%、テストデータ:20%
この比率はタスクの性質や利用可能なデータ量によって調整されることがあります。
分割の手法
単純なランダムスプリット
ランダムサンプリングを用いてデータをトレーニング、検証、テストに分割します。この分割法は非常にシンプルで、データ全体からランダムにサンプルを選び出して各セットに割り当てます。
属性スプリット
属性サンプリングを用いて、各セット内でクラスの比率が元のデータセットと同じになるように分割する方法です。例えば、犬と猫を判別する画像認識モデルの場合、分割前のデータ全体で犬の画像が90%、猫の画像が10%を占めていたとします。この場合に上述の単純なランダムスプリットを採用してしまうと、検証データやテストデータに1枚も猫の画像が含まれないという事態が発生する可能性が高く、適切な分割とは言えません。このようにクラスが不均衡なデータセットでは属性スプリットが有効です。
時系列スプリット
時系列データの場合、上記のような単純なランダムスプリットなどの分割手法では時系列データの時間的順序を保持することができません。そこで時系列スプリットでは、過去のデータでモデルを学習し、その後の期間でモデルの評価を行います。
交差検証
交差検証とはデータの解析と評価を交差させる方法で、クロスバリデーションとも呼ばれます。これまで紹介した分割手法とは異なり、交差検証には「複数回の分割と評価」を含みます。各データが一度はテストデータセットに含まれるように分割を繰り返すことでモデルの性能を安定的に評価することができます。以下に2つの交差検証手法を紹介します。
k-分割交差検証
データをk個に分割し、そのうち1つをテストデータとして使用し、残りをトレーニングデータとして使用する方法です。このプロセスをk回繰り返し、各回で異なる部分をテストデータとして使用します。これにより、モデルの性能をより安定的に評価できます。
一つ抜き交差検証
k-分割交差検証の特殊なケースで、各回で1つのサンプルだけをテストセットとする方法です。データセットが小さい場合に適しています。
データ分割の例
データ分割の効果を実例を交えて確認してみましょう。今回は正弦関数にガウスノイズを加えたものを4次の多項式回帰で予測することを考えます。すなわち、4次多項式の5つの係数を重みととらえ、それらを更新・検証・評価していきます。
データセットに関して、100個のデータ点を生成し以下の比率で分割を行いました。
①トレーニングデータ:90%、検証データ:5%、テストデータ:5%
②トレーニングデータ:80%、検証データ:10%、テストデータ:10%
③トレーニングデータ:70%、検証データ:15%、テストデータ:15%
④トレーニングデータ:60%、検証データ:20%、テストデータ:20%
分割手法として、単純にxの値の小さいほうから分割した場合と、ランダムサンプリングにより分割した場合を比較します。
xの値の小さいほうから分割した場合

結果は上図のようになりました。青い点がトレーニング、黄色い点が検証、赤い点がテストで使用したデータ点です。予測対象となる真の関数sin(x)は緑色の破線、訓練の結果得られた5次多項式は紫色の実線で表示しています。
トレーニングデータセットを全体の①90%、②80%とした場合は比較的よく適合できている一方で、トレーニングデータセットを全体の③70%、④60%とした場合は真の関数から大きく外れている箇所があるのが確認できます。
それぞれの二乗平均平方根誤差(RMSE)を確認してみましょう。RMSEはデータ点ごとに二乗誤差をとり、それらの平均値の平方根を取ったもので、値が小さければ小さいほど精度の良いモデルとなります。ここでは上記①~④についてトレーニングデータ、検証データ、テストデータのそれぞれに対するRMSEを算出しています。
RMSE(トレーニングデータ) | RMSE(検証データ) | RMSE(テストデータ) | |
|---|---|---|---|
① | 0.099 | 0.334 | 0.792 |
② | 0.097 | 0.261 | 1.278 |
③ | 0.086 | 0.541 | 3.045 |
④ | 0.085 | 0.855 | 6.009 |
テストデータに対するRMSEは①、②の場合が小さく、未知のデータに対しても良い精度を出せることがわかります。一方でトレーニングデータに対するRMSEは③、④が①、②に比べて小さくなっており、学習データに対して過剰に適合した状態である過学習を起こしている可能性があることがわかります。
ランダムサンプリングにより分割した場合

100個のデータ点を①~④の比率でランダムにサンプリングした場合の結果がこちらです。この例ではどの比率においてもかなりよく真の関数の特徴をとらえていることがわかります。xの値の小さいほうからサンプリングした場合と比べてデータセットに含まれる点が分散しており、偏りのないデータとなっています。
このことから、分割比率だけでなく、分割手法もモデルの精度に非常に大きく影響することがわかります。データに対して適切な分割手法を選択することが極めて重要です。
先ほどと同様にRMSEの値を比較してみましょう。
RMSE(トレーニングデータ) | RMSE(検証データ) | RMSE(テストデータ) | |
|---|---|---|---|
① | 0.115 | 0.099 | 0.079 |
② | 0.115 | 0.130 | 0.064 |
③ | 0.118 | 0.116 | 0.089 |
④ | 0.121 | 0.080 | 0.124 |
テストデータに対するRMSEを確認すると、最も精度が良いのは②で、次いで①、③、④という結果となりました。
モデル自体の複雑さとの関係
複雑なモデルを訓練する場合、通常は、必要となるトレーニングデータの量もそれに従って多くなっていきます。例として多項式の次数(モデルの複雑さに対応します)を4次から6次へと変化させた場合の結果はこのようになります。

①ではうまく適合できていますが、②、③、④は良い結果とは言えません。モデルの複雑さに対してデータ量が少なく、思った通りに学習が進んでいない可能性があります。このようなケースでは、①のようにトレーニングデータを多くとって学習することが有効です。
以下はデータ点の数を200個に増やして学習した結果です。この場合は②の場合でも性能に改善がみられることがわかります。このように、分割の比率や手法は様々な要因によって最適値が変化する総合的な指標であることがわかります。

今回は多項式回帰と呼ばれるかなり単純なモデルで正弦関数を予測できるか試しましたが、より大規模で複雑なデータセットに対しても、基本的には上記のような傾向が成り立ちます。
まとめ
今回は、データセットの分割の手法やその意味について、実際の学習例を交えながら解説しました。データの量や質、予測対象など様々な要素を考慮したうえで、データセットの分割の比率や分割手法を決定することが重要です。
ノーコードAI 開発ツール「TechSword Vision」
TechSword Visionは誰でも簡単にノーコードで画像認識AIを開発し、現場のエッジデバイスに簡単なマウス操作でインストールが可能なノーコードAIプラットフォームです。
導入にあたっては、画像の撮影や収集、カメラの選定、システム導入後の運用支援やメンテナンスに至るまで幅広いサポートをおこなっております。
AIエンジニアの稼働が必要ないため初期コストも小さく、新たにAIによる画像検査の導入を検討している場合に特におすすめです。
ご興味がある場合は、ぜひ詳細なサービス説明資料をご請求ください。
また、具体的な導入事例や導入後の流れについても、ご希望に応じて説明させて頂きます。ぜひお気軽にお問い合わせください。




