1. ホーム
  2. machine-learning

[解決済み】データセットをトレーニングセットとバリデーションセットに分割する方法には法則性があるのでしょうか?[クローズド]

2022-04-03 11:28:50

質問

データをトレーニングセットとバリデーションセットに分ける最適な方法には法則がありますか?半々くらいがいいのでしょうか?それとも、学習データが多い方が検証データより明らかに有利なのでしょうか(あるいはその逆)?あるいは、この選択はアプリケーションに依存するのでしょうか?

私はこれまで、学習データと検証データをそれぞれ80%/20%の割合で使用することがほとんどでしたが、この分け方は特に原理的な理由もなく選びました。機械学習の経験が豊富な方にアドバイスをお願いします。

どのように解決するのですか?

学習データが少ないと、パラメータ推定値の分散が大きくなるという2つの懸念があります。テストデータが少ないと、パフォーマンス統計の分散が大きくなります。大まかに言えば、どちらの分散も大きくなりすぎないようにデータを分割することに気をつけるべきです。

インスタンスの数が100個であれば、クロスバリデーションを行うしかないでしょう。なぜなら、1つの分割では推定値に満足な分散を与えることができないからです。100,000インスタンスの場合、80:20の分割でも90:10の分割でも問題ありません(特に計算量の多い手法の場合、より少ない学習データを使用することも可能です)。

クロスバリデーションではなく)適切なホールドアウトテストデータを行うのに十分なデータがあると仮定すると、分散を把握するのに有益な方法は次のとおりです。

  1. データをトレーニング用とテスト用に分ける(実際には80/20が出発点として良い)。
  2. を分割して トレーニング のデータを学習用と検証用に分ける(これも80/20が妥当なところ)。
  3. 学習データから無作為に選択したサンプルを用いて分類器を学習させ,検証セットでの性能を記録します.
  4. 例えば、20%の学習データをランダムに10回サンプリングし、検証データでのパフォーマンスを観察します。データが多いほど性能が向上し、ランダムなサンプル間の分散も小さくなるはずです。
  5. テストデータのサイズに起因する分散を把握するために、同じ手順を逆に実行します。すべてのトレーニングデータで学習し、そのうちの何パーセントかをランダムにサンプリングします。 バリデーション のデータを何度か取得し、パフォーマンスを観察します。検証データの小さなサンプルでの平均性能は、すべての検証データでの性能とほぼ同じですが、テストサンプルの数が少ないと分散が大きくなることがわかると思います。