データセット: 元のデータセットの分割

優れたソフトウェア エンジニアリング プロジェクトはすべて、 テストします。同様に ML モデルを使用して予測の正確性を判定します。

トレーニング セット、検証セット、テストセット

モデルは、これらとは異なるサンプルセットでテストする必要があります。 モデルを定義します。このコースでは、 少し後で、テスト モデルの適合性を証明したほうが、 同じ例セットに対して実行できます そうしたさまざまな例はどこで得られるのでしょうか。従来の ML では 元のデータセットを分割することで異なるサンプルが得られます。もしかしたら、 したがって、元のデータセットを 2 つのサブセットに分割する必要があるとします。

図 8. 2 つに分割された水平バー: そのうちの約 80%
            がトレーニング セットで、約 20% がテストセットです。
図 8.最適な分割ではありません。

 

演習:直感をチェック

トレーニング セットでトレーニングし、テストセットで評価するとします。 繰り返しテストします各ラウンドでは、テストセットの結果を使用して ハイパーパラメータと特徴セットの更新方法の指針になります。あなたは 何か問題がありますか?回答を 1 つだけ選択してください。
この処理を何回も繰り返すと、モデルの予測結果に悪影響が 暗黙的にテストセットの特性に適合させます。
はい。同じテストセットを頻繁に使うほど モデルがテストセットに厳密に適合する可能性が高くなります。 あたかも「テストに教える」教師のように、モデルが意図せずして モデルがテストセットに当てはまらないため、モデルの 適合させることです
この方法は問題ありません。結局のところ、あなたは 別個のテストセットで評価できます
実際には、ちょっとした問題があります。たとえば 次第にうまくいきません
この方法は計算効率が悪くなります。変更しない ハイパーパラメータや特徴セットを 手動で変更する必要はありません
頻繁にテストすることは費用がかかりますが、重要です。ただし、 追加のトレーニングよりはるかに低コストです最適化 ハイパーパラメータと特徴セットにより、 モデルの品質を向上させるため、時間とコンピューティング リソースを常に 進めていきます

データセットを 2 セットに分割するのは妥当な考えですが、 より適切なアプローチは、データセットを 3 つのサブセットに分割することです。 トレーニング セットとテストセットに加えて、3 つ目のサブセットは次のとおりです。

  • 検証セット は、トレーニング中にモデルに対して初期テストを実行します。
図 9. 3 つの部分に分割された水平バー。そのうち 70% は
            15% が検証セット、15% が検証セット、15% が
            テストセット
図 9.かなり良いスプリットです。

検証セットを使用して、トレーニング セットの結果を評価します。 検証セットを繰り返し使用すると、モデルは 適切な予測を行うには、テストセットを使用してモデルをダブルチェックします。

次の図は、このワークフローを示しています。 上の図の [モデルを微調整] をクリックします。モデルの調整とは何かを - 学習率の変更から、リソースの追加や削除まで、 まったく新しいモデルをゼロから設計することもあります。 このワークフローの最後に、テストセットで最適なモデルを選択します。

図 10. 次のステージで構成されるワークフロー図:
            1.トレーニング セットでモデルをトレーニングする。
            2. 検証セットでモデルを評価する
            3. 検証セットの結果に応じてモデルを微調整する
            4. 1、2、3 を反復処理し、最終的に候補に挙がるモデルを
               最適解です
            5. テストセットで結果を確認します。
図 10. 開発とテストに適したワークフローです。

図 10 に示すワークフローが最適ですが、そのワークフローでも、 テストセットと検証セットが依然として「ウェアアウト」同じです つまり 同じデータを使用して ハイパーパラメータ設定やその他のモデルの改善が見つかれば、その信頼度は モデルが新しいデータに対して適切に予測できるということです。 そのため、より多くのデータを収集して「更新」することをおすすめします。テスト 検証セットで構成されています最初からやり直すのはリセットです。

演習:直感をチェック

データセット内のすべてのサンプルをシャッフルして、 トレーニング用、検証用、テスト用にシャッフルされた例を 学習しますしかし、テストセットの損失値は驚くほど低いです。 通知を受け取れます何がいけなかったのでしょうか
テストセットのサンプルの多くがサンプルの重複です 返されます。
はい。これは、多数の冗長なデータセットで 説明します。重複する例を削除することを強くおすすめします。 必要があります。
トレーニングとテストは非決定的です。時には偶然にも テストの損失は驚くほど小さくなりますテストを再実行して、 表示されます。
損失は実行ごとに多少異なりますが、変動する必要はありません。 自動的に計算します
たまたま、テストセットにはたまたま、 パフォーマンスが良好であるという意味です
サンプルは適切にシャッフルされているため、そのような可能性は極めて低いです。

テストセットに関するその他の問題

前の質問で示したように、重複した例はモデルの評価に影響を与える可能性があります。 データセットをトレーニング セット、検証セット、テストセットに分割した後、 検証セットまたはテストセット内のサンプルと重複している例を削除します。 必要があります。モデルの唯一の公平なテストは、 新しい例です。

たとえば、メールが迷惑メールであるかどうかを予測するモデルについて考えてみましょう。 件名、メール本文、送信者のメールアドレスを特徴量として扱うことができます。 データをトレーニング セットとテストセットに 80 対 20 で分割するとします。 トレーニング後、モデルはトレーニング セットと 2 つのモデルの両方で 99% の適合率を達成 作成します。おそらく、テストセットの精度は低いでしょう。そのため、 データを再確認すると、テストに含まれる多くの例が サンプルが重複しています。問題は、 入力内容から同じ迷惑メールの重複するエントリをスクラブするのを怠った 分割する前に変換する必要があります誤ってトレーニングされてしまった一部の テストデータを抽出できます

まとめると、優れたテストセットまたは検証セットは、 次の条件が適用されます。

  • 統計的に有意なテスト結果を得るのに十分なサイズ。
  • データセット全体の代表値。つまり、 トレーニング セットとは異なる特性を持つテストセットです。
  • モデルが遭遇する実世界のデータの代表値 ビジネス目的の一部として使用することです
  • トレーニング セットでサンプルが 0 つ。

演習:理解度をチェックする

例の数が固定された単一のデータセットの場合、 次の説明のうち正しいものはどれですか。
モデルのテストに使用される例は、使用する例が 1 つ減る モデルのパフォーマンスです。
サンプルをトレーニング用、テスト用、検証用のセットに分割することは、ゼロサムゲームです。 これが中心的なトレードオフです。
テストセットのサンプル数は次の値よりも大きくする必要があります 検証セットのサンプル数。
理論上は、検証セットとテストテストには同じ 例をほとんど必要としません。
テストセットのサンプル数は次の値よりも大きくする必要があります 検証セットやトレーニング セットのサンプル数
通常、トレーニング セットのサンプル数は 検証セットまたはテストセットのサンプル数ただし、 各セットに割合の要件はありません。
テストセットに十分な数の例が含まれているとします。 有意性のあるテストですさらに、 損失が小さくなります。しかし このモデルは 実社会であまり役に立たないということですどうすればよいですか。
元のデータセットが実際のデータとどのように異なるかを判断する。
はい。たとえ優れたデータセットであっても、実際のデータのスナップショットにすぎない。 基盤となる グラウンド トゥルース 時間とともに変化する傾向にありますテストセットはテストセットと モデルの品質が十分でないと判断した場合 実世界のデータと十分に一致していない可能性があります。 新しいデータセットに対して再トレーニングとテストが必要になる場合があります。
同じテストセットで再度テストします。テスト結果には 異常でした。
再テストの結果は若干異なる場合がありますが あまり役に立たないでしょう。
テストセットにはいくつのサンプルを含める必要がありますか。
統計的に有意なテストを出すのに十分なサンプル。
はい。例はいくつありますか。試行錯誤する必要があります。
元のデータセットの 15% 以上。
15% しかない場合もあれば、十分でない場合もあります。