2

Vowpal Wabbit でグリッド検索またはより高度なハイパーパラメーター検索を実装しようとしています。この目的のために、検証セット (vw のホールドアウト) で取得された損失関数値を取得する比較的簡単な方法はありますか? VW は、値に応じて早期停止が発生するため、たとえばパスの数ごとに計算したに違いありません。

これまでのところ、検証データセットを含む別のファイルを作成し、このデータセットで異なるモデルの予測を保存し、Python でそれらのパフォーマンスを比較することでこれを迂回しているため、不要なデータの浪費が発生しています。しかし、vw holdout スコアを明示的に使用する方法があるのではないでしょうか?

4

1 に答える 1

2

コメントを要約すると、VW からホールドアウト損失を取得する方法がいくつかあります (それらを組み合わせることができます)。

  1. ワンパス学習では、VW は漸進的な検証損失を報告します。これは、(簡単に言えば) 十分な例の後、ホールドアウト損失とほぼ同じ値に収束します。
  2. 複数のパスがある場合、VW は10 番目の例 (例のランダムな 1/10 ではなく--holdout_off) に基づいて (指定されていない限り) ホールドアウト損失を報告します。1 を使用--holdout_periodすると、10 以外の数を指定できます。
  3. パラメーター--holdout_after=Nは、入力データの最初の N サンプルがトレーニングに使用され、残りのファイルがホールドアウト セットとして使用されることを指定します (代わりに、10 個ごとのサンプル)。
  4. VW の外で損失を使用-p predictions.txtして計算することができます (predictions.txt入力データをゴールド ラベルと比較することにより)。X パスが使用される場合、predictions.txtX*number_of_input_data_examples が含まれます。したがって、トレーニング データでトレーニングし (おそらく複数のパスを使用)、モデルをファイルに保存してから、VW のみを使用して予測することをお勧めしますvw -i trained.model -t -d test.input -p test.predictions
  5. 一部のシナリオでは--save_per_pass、オンデマンドでモデルvw --daemon保存することが役立つ場合があります。
  6. ホールドアウト (テスト) 損失とトレイン損失の両方を計算するには、コマンド ラインから簡単に vw-experimentを使用できます。
于 2015-10-31T02:34:36.937 に答える