[解決済み】データセットをトレーニングセットとバリデーションセットに分割する方法には法則性があるのでしょうか?[クローズド]
2022-04-03 11:28:50
質問
データをトレーニングセットとバリデーションセットに分ける最適な方法には法則がありますか?半々くらいがいいのでしょうか?それとも、学習データが多い方が検証データより明らかに有利なのでしょうか(あるいはその逆)?あるいは、この選択はアプリケーションに依存するのでしょうか?
私はこれまで、学習データと検証データをそれぞれ80%/20%の割合で使用することがほとんどでしたが、この分け方は特に原理的な理由もなく選びました。機械学習の経験が豊富な方にアドバイスをお願いします。
どのように解決するのですか?
学習データが少ないと、パラメータ推定値の分散が大きくなるという2つの懸念があります。テストデータが少ないと、パフォーマンス統計の分散が大きくなります。大まかに言えば、どちらの分散も大きくなりすぎないようにデータを分割することに気をつけるべきです。
インスタンスの数が100個であれば、クロスバリデーションを行うしかないでしょう。なぜなら、1つの分割では推定値に満足な分散を与えることができないからです。100,000インスタンスの場合、80:20の分割でも90:10の分割でも問題ありません(特に計算量の多い手法の場合、より少ない学習データを使用することも可能です)。
クロスバリデーションではなく)適切なホールドアウトテストデータを行うのに十分なデータがあると仮定すると、分散を把握するのに有益な方法は次のとおりです。
- データをトレーニング用とテスト用に分ける(実際には80/20が出発点として良い)。
- を分割して トレーニング のデータを学習用と検証用に分ける(これも80/20が妥当なところ)。
- 学習データから無作為に選択したサンプルを用いて分類器を学習させ,検証セットでの性能を記録します.
- 例えば、20%の学習データをランダムに10回サンプリングし、検証データでのパフォーマンスを観察します。データが多いほど性能が向上し、ランダムなサンプル間の分散も小さくなるはずです。
- テストデータのサイズに起因する分散を把握するために、同じ手順を逆に実行します。すべてのトレーニングデータで学習し、そのうちの何パーセントかをランダムにサンプリングします。 バリデーション のデータを何度か取得し、パフォーマンスを観察します。検証データの小さなサンプルでの平均性能は、すべての検証データでの性能とほぼ同じですが、テストサンプルの数が少ないと分散が大きくなることがわかると思います。
関連
-
[解決済み】TensorFlowでtf.gradientsが動作する方法
-
[解決済み] PyTorchのバックワード関数
-
[解決済み] イプシロン貪欲q学習におけるイプシロンと学習率の減衰について
-
[解決済み] コスト関数、線形回帰、シータをハードコーディングしないようにする。オクターブ
-
[解決済み】ニューラルネットワークにおけるバイアスの役割とは?[クローズド]
-
[解決済み】データを3つのセット(トレーニング、検証、テスト)に分割する方法とは?)
-
[解決済み】同じ問題で binary_crossentropy と categorical_crossentropy が異なる性能を示すのはなぜか?
-
[解決済み] なぜ人工ニューラルネットワークの入力を正規化する必要があるのですか?[クローズド]
-
[解決済み] Kerasにおける多対一および多対多のLSTMの例
-
[解決済み] フィーチャーとラベルの違いは何ですか?[クローズド]
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PyTorchのバックワード関数
-
[解決済み] RuntimeError: 次元が範囲外([-1, 0]の範囲にあると期待されたが、1が得られた)
-
[解決済み] エアフローとKubeflowパイプラインの違いは何ですか?
-
[解決済み] コスト関数、線形回帰、シータをハードコーディングしないようにする。オクターブ
-
[解決済み] kerasのtrain_on_batch()の使い道は?
-
[解決済み] サポートベクターマシンに対する人工ニューラルネットワークの優位性は何ですか?[終了しました]
-
[解決済み】線形回帰とロジスティック回帰の違いは何ですか?[クローズド]
-
[解決済み】同じ問題で binary_crossentropy と categorical_crossentropy が異なる性能を示すのはなぜか?
-
[解決済み】機械学習モデルの損失と精度の解釈の仕方【終了しました
-
[解決済み] Appleはどのように電子メールの日付、時間、アドレスを見つけるのですか?