ランダム化

実践的な考慮事項

データ生成パイプラインを再現可能にする。特徴を追加して、それがモデルの品質にどのように影響するかを確認するとします。公平なテストを行うには、この新機能を除き、データセットは同じにする必要があります。データ生成の実行が再現できない場合は、これらのデータセットを作成することはできません。

その意味で、データ生成のランダム化は決定論的に行えるようにしてください。

  • 乱数ジェネレータ(RNG)をシードします。シーディングを行うと、RNG を実行するたびに同じ順序で同じ値が出力され、データセットが再作成されます。
  • 不変ハッシュキーを使用します。ハッシュ化は、データを分割またはサンプリングするための一般的な方法です。各例をハッシュして、結果の整数値を使用して、サンプルを配置する分割を決定できます。ハッシュ関数の入力は、データ生成プログラムを実行するたびに変更されることはありません。ハッシュをオンデマンドで再作成する場合など、ハッシュまたは現在の時刻を乱数に使用しないでください。

上記のアプローチは、データのサンプリングと分割の両方に適用されます。

ハッシュ化に関する考慮事項

ここでも、検索クエリを収集し、ハッシュを使用してクエリを含めたり除外したりします。ハッシュキーがクエリのみを使用していた場合は、数日間のデータで、そのクエリを常に含めるか、常に除外します。クエリを常に含めるか、常に除外するのは不適切です。理由は次のとおりです。

  • トレーニング セットには、あまり一般的ではないクエリセットが表示されます。
  • 評価セットはトレーニング データと重複しないため、人為的に難しくなります。実際には、サービス提供時にはトレーニング データの一部にライブ トラフィックがあるため、その点を評価に反映する必要があります。

その代わりに、クエリと日付に基づいてハッシュできます。これにより、毎日異なるハッシュになります。

 

クエリのみのハッシュによって毎日同じバケットにデータが入ることを説明するが、クエリとクエリ時間のハッシュにより毎日データが別のバケットに入る様子を示すアニメーションの可視化。バケットは、トレーニング、評価、無視の 3 つです。