私は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が結果をどれだけ強く感じるかに対応します。どんな助けもありがとう!
トレーニングデータをシャッフルしましたか? –
いいえ、それは必要ですか?私は、データの順序が重要であるとは考えず、特徴値だけを考えました。 – stormcynk
トレーニングデータに最初にすべての否定的な例が含まれていて、すべての正の例が含まれている場合、オンライン学習(デフォルトでは--bfgsを指定しないとvwで使用されます)では、トレーニングデータのランダムなシャッフルがこの共通の落とし穴を防ぎます。トレーニングデータが既にシャッフルされている場合(または、自然な時系列順に従っている場合)は厳密には必要ありません。 –