データ分割の例

必要に応じてデータを収集し、必要に応じてサンプリングした後、トレーニング セット検証セットテストセットにデータを分割します。

ランダム分割が最適な手法でない場合

ランダム分割は多くの ML 問題に対する最適なアプローチですが、常に適切な解決策であるとは限りません。たとえば、サンプルが類似したサンプルに自然にクラスタリングされたデータセットについて考えてみましょう。

ニュース記事のテキストからトピックをモデルで分類するとします。ランダム分割に問題がある理由

記事の 4 つのクラスタ(「ストーリー 1」「ストーリー 2」「ストーリー 2」「ストーリー 3」「ストーリー 4」)がタイムラインに表示されます。 図 1. ニュース記事はクラスタ化されています。

ニュース記事はクラスタに表示されます。同じトピックに関する複数の記事が同時に公開されます。したがって、データをランダムに分割した場合、テストセットとトレーニング セットに同じストーリーが含まれる可能性があります。実際には、この方法はすべてのストーリーが同時に届くため、機能しません。このように分割すると、スキューが発生します。

図 1 の同じ記事がタイムラインに表示されていません。記事は、トレーニング セットとテストセットにランダムに分割されるようになりました。トレーニング セットとテストセットには、4 つのストーリーすべての異なる例が混在しています。 図 2. ランダム分割はクラスタを複数のセットに分割するため、スキューが発生します。

この問題を解決するための簡単な方法は、ストーリーが公開された日付(たとえば、ストーリーが公開された日)に基づいてデータを分割することです。これにより、同じ日のストーリーが同じスプリットに配置されます。

図 1 の元のタイムラインは、トレーニング セットとテストセットに分けられます。「ストーリー 1」と「ストーリー 2」のすべての記事はトレーニング セットに含まれており、「ストーリー 3」と「ストーリー 4」のすべての記事はテスト セットにあります。 図 3. 時間どおりに分割すると、クラスタはほぼ同じセットになります。

数万件以上のニュース記事がある場合、割合が日によって分割されることがあります。しかし、実際には、これらの記事はニュース サイクルの 2 日間に分割されました。また、受付終了時間から一定時間以内にデータを除外して、重複が生じないようにすることもできます。たとえば、4 月のストーリーをトレーニングしてから、5 月の第 2 週をテストセットとして使用し、週のギャップで重複を防ぐことができます。