2016-07-25 7 views
0

私はVowpal Wabbitを使ってバイナリ分類をしようとしています。つまり、フィーチャ値vwは1または0のいずれかに分類されます。これで私はトレーニングデータをフォーマットしました。Vowpal Wabbitはバイナリ値を予測していない、おそらく過剰訓練ですか?

1 'name | feature1:0 feature2:1 feature3:48 feature4:4881 ... 
-1 'name2 | feature1:1 feature2:0 feature3:5 feature4:2565 ... 
etc 

私は約30,000個のデータポイントと約3000個のデータポイントを持っています。モデルを作成した後で、テストするために使用している100 1と100 0のデータポイントがあります。ここで1は、私が予測セットにフォーマットする方法であるように、これらのテスト・データ・ポイントは、デフォルトで分類されている:VWのドキュメントの私の理解から

1 'name | feature1:0 feature2:1 feature3:48 feature4:4881 ... 

を、私はどちらかのロジスティックを使用するか、バイナリの分類のためのloss_functionヒンジする必要があります。

vw -d ../training_set.txt --loss_function logistic/hinge -f model 

そして、これは私が予測を試みる方法である:これは私がモデルを作成してきた方法です

vw -d ../test_set.txt --loss_function logistic/hinge -i model -t -p /dev/stdout 

私が問題に実行している場所しかし、これはあります。ヒンジ損失関数を使用すると、すべての予測は-1になります。ロジスティックロス関数を使用すると、5と11の間の任意の値が得られます。データポイントの一般的な傾向は、0より低い値、5-7、および1から6 -11。私は間違って何をしていますか?私はドキュメンテーションの周りを見て、私の問題が何であるかを特定できるかどうかを調べるために、VWについての記事の束をチェックしましたが、わかりません。理想的には、0,1の値、または0と1の間の値が得られます。これは、VWが結果をどれだけ強く感じるかに対応します。どんな助けもありがとう!

+0

トレーニングデータをシャッフルしましたか? –

+0

いいえ、それは必要ですか?私は、データの順序が重要であるとは考えず、特徴値だけを考えました。 – stormcynk

+0

トレーニングデータに最初にすべての否定的な例が含まれていて、すべての正の例が含まれている場合、オンライン学習(デフォルトでは--bfgsを指定しないとvwで使用されます)では、トレーニングデータのランダムなシャッフルがこの共通の落とし穴を防ぎます。トレーニングデータが既にシャッフルされている場合(または、自然な時系列順に従っている場合)は厳密には必要ありません。 –

答えて

0

あなたのツールおよび/または特定のアルゴリズムとは無関係に、「学習曲線」と列車/交差検定/テスト分割を使用してアルゴリズムを診断し、問題点を特定することができます。あなたが持っている見つける場合には、例えば、あなたのアルゴリズムに調整を適用することができ、あなたの問題を診断した後、オーバーフィッティングあなたのようないくつかのアクションを適用することができます正則に追加

  1. ゲットより多くのトレーニングデータ
  2. 複雑さを軽減しますあなたのモデルの
  3. 冗長機能を排除します。

Andrew Ng。この件に関する詳細については、YouTubeの「機械学習のアドバイス」のビデオをご覧ください。

+0

アドバイスをいただき、ありがとうございました。 VWでのトレーニングやランニングの予測は? – stormcynk

1
  • 出力がちょうど-1+1ラベルする必要がある場合は、--binaryオプション(テスト)を使用します。
  • 出力が0と1の間の実数である場合は、--loss_function=logistic --link=logisticを使用してください。トレーニングの際にはloss_function=logisticが必要なので、数字は確率として解釈できます。
  • 出力が-1と1の間の実数である場合は、--link=glf1を使用します。

トレーニングデータがアンバランスな場合、負の数よりも10倍多い正の例ですが、テストデータのバランスが取れていれば、このテストデータで最良の損失を得たい場合は、正の例のimportance weightを0.1に設定します(正の例は10倍です)。

関連する問題