Ich versuche Vowpal Wabbit zu verwenden, um eine binäre Klassifizierung zu machen, d. H. Bestimmte Merkmalswerte. Vw klassifiziert es entweder 1 oder 0. So habe ich die Trainingsdaten formatiert.Vowpal Wabbit nicht binäre Werte vorhersagen, vielleicht Übertraining?
1 'name | feature1:0 feature2:1 feature3:48 feature4:4881 ...
-1 'name2 | feature1:1 feature2:0 feature3:5 feature4:2565 ...
etc
Ich habe etwa 30.000 1 Datenpunkte und etwa 3.000 0 Datenpunkte. Ich habe 100 1 und 100 0 Datenpunkte, die ich zum Testen verwende, nachdem ich das Modell erstellt habe. Diese Testdatenpunkte werden standardmäßig klassifiziert als 1. Hier ist, wie ich die Vorhersage Satz formatiert werden:
1 'name | feature1:0 feature2:1 feature3:48 feature4:4881 ...
Von meinem Verständnis der VW-Dokumentation, muss ich entweder die logistische oder Scharnier loss_function für binäre Klassifikationen verwenden. Dies ist, wie ich habe das Modell wurde die Erstellung:
vw -d ../training_set.txt --loss_function logistic/hinge -f model
Und das ist, wie ich die Prognosen versuchen:
vw -d ../test_set.txt --loss_function logistic/hinge -i model -t -p /dev/stdout
Dies ist jedoch, wo ich in Probleme laufen lasse. Wenn ich die Scharnierverlustfunktion verwende, sind alle Vorhersagen -1. Wenn ich die logistische Verlustfunktion verwende, erhalte ich willkürliche Werte zwischen 5 und 11. Es gibt einen allgemeinen Trend für Datenpunkte, die 0 sein sollten, um niedrigere Werte zu sein, 5-7, und für Datenpunkte, die 1 von 6 sein sollten -11. Was mache ich falsch? Ich habe mich in der Dokumentation umgeschaut und eine Reihe von Artikeln über VW überprüft, um zu sehen, ob ich mein Problem identifizieren kann, aber ich kann es nicht herausfinden. Idealerweise würde ich einen Wert von 0,1 oder einen Wert zwischen 0 und 1 erhalten, der dem starken VW entspricht. Jede Hilfe wäre willkommen!
Haben Sie die Trainingsdaten gemischt? –
Nein, ist das erforderlich? Ich glaube nicht, dass die Reihenfolge der Daten eine Rolle gespielt hat, sondern nur die Merkmalswerte. – stormcynk
Wenn die Trainingsdaten zuerst alle negativen Beispiele gefolgt von allen positiven Beispielen enthalten, dann wird Online-Lernen (standardmäßig in vw verwendet, wenn Sie nicht "--bfgs" angeben) nichts trainieren und wird (fast) nur positive Markierungen vorhersagen. Zufälliges Shuffling der Trainingsdaten verhindert diesen häufigen Fallstrick. Es ist nicht unbedingt erforderlich, wenn Ihre Trainingsdaten bereits gemischt sind (oder wenn sie einer natürlichen chronologischen Reihenfolge folgen). –