Ich verwende Vowpal Wabbit 7.10.0 (VW), um Kategorien für Textdaten zu lernen und vorherzusagen. Meine Textdaten für jeden Datensatz ähneln jedoch nicht einem Artikel oder einem anderen Textdokument mit anständiger Größe, sondern einigen Sätzen wie Titel, Untertitel und Schlüsselwörtern.
Ich habe ungefähr 10.000 beschriftete Datensätze, die ich für die Validierung, Schulung und Prüfung verwenden kann, und ungefähr 1-2 Millionen unbeschriftete Datensätze. Es ist ein Mehrklassenproblem mit rund 100 Klassenetiketten, die ebenfalls unausgewogen sind.
Was wäre das beste Vorverarbeitungs- und Eingabeformat, um solche Daten mit VW optimal zu nutzen?
Meine Erfahrung zeigt mir, dass VW-Modelle empfindlich auf Probleme mit Klassenungleichgewichten reagieren sollten. Hier ist eine andere Quelle, die dies bestätigt . Ist das richtig?
Bei der Auswahl eines Modells habe ich beschlossen, lieber Wortkombinationen durch n-Gramm zu berücksichtigen und dann latente Variablen basierend auf der Häufigkeit zu entdecken (weil die Texte zu kurz sind). Außerdem neigen einige Texte dazu, ein Wort hundertmal aufzulisten (für SEO) in meinen Daten. Daher gehe ich nicht TF-IDF. Ist das richtig oder nicht? Ich denke, ich kann sowohl n-Gramm als auch Wortbeutel als verschiedene Namespaces kombinieren. Aber mit welchem Klassifikator mit welchen Parametern soll man anfangen?
Bisher habe ich es auf drei verschiedene Arten der Datenvorverarbeitung versucht: (1) unverarbeiteter Text mit nur entfernter Interpunktion, (2) Tokenisierung, Lemmatisierung (nicht Stemming), entfernte Stoppwörter, (3) zusätzlich zu (2), Tasche von Wörtern, dh Wort: word_count-Format.
Die Ergebnisse sind mit einer sehr grundlegenden Einstellung nicht zufriedenstellend (in diesem Beispiel wurden 16 Klassen verwendet, nicht 100):
vw input.vw -c -k --passes 300 -b 24 --ect 16 -f model.vw
vw input.vw -t -i model.vw -p preds.txt
Die Fehlerrate beträgt selbst auf dem Trainingssatz etwa 0,68.
Ich habe einige Zeitlimits, um alle Arten von Einstellungen gründlich zu untersuchen, und brauche wirklich schnelle und informative Ratschläge: Was ist in meinem Fall die beste Vorverarbeitungstechnik und welches Modell, das in der neuesten VW implementiert ist, sollte ich verwenden. Diese beiden Probleme hängen zusammen.
Antworten:
Hier einige Tipps zur Leistungssteigerung von VW-Modellen:
--decay_learning_rate=.95
.--learning_rate=10
es großartig war, und andere Fälle, in denen--learning_rate-0.001
es großartig war.--oaa 16
oder--log_multi 16
lieber als--ect 16
. Normalerweise finde ichect
es weniger genau. Istoaa
jedoch ziemlich langsam. Ich habe festgestellt--log_multi
, dass dies ein guter Kompromiss zwischen Geschwindigkeit und Genauigkeit ist. Bei 10.000 Trainingsbeispielen--oaa 16
sollte das in Ordnung sein.--loss_function=hinge
kann manchmal zu großen Verbesserungen bei Klassifizierungsmodellen führen.--l1
und--l2
, die Ihr Modell regulieren.--l2
ist insbesondere bei Textdaten nützlich. Versuchen Sie etwas wie--l2=1e-6
.--ngram=2
und--skips=2
n-Gramm und überspringen Gramm auf Ihre Modelle hinzuzufügen. Dies kann sehr hilfreich sein.--autolink=2
oder--autolink=3
ein quadratisches oder kubisches Spline - Modell zu passen.--ftrl
. Dies kann bei Textdaten oder Datensätzen mit einigen äußerst seltenen und äußerst häufigen Funktionen hilfreich sein.--nn=1
oder--nn=10
.--ksvm --kernel=rbf --bandwidth=1
. (Dies kann sehr langsam sein).--ksvm --kernel=poly --degree=3
. (Dies kann sehr langsam sein).--boosting=25
. Dies kann etwas langsam sein.VW ist extrem flexibel, so dass es oft dauert viel Feinabstimmung ein gutes Modell für einen gegebenen Datensatz zu erhalten. Weitere Tuning-Ideen finden Sie hier: https://github.com/JohnLangford/vowpal_wabbit/wiki/Command-line-arguments
In Bezug auf den Beitrag, auf den Sie verlinkt haben: Diese Person hat vw mit quadratischem Verlust für ein unausgeglichenes Klassifizierungsproblem verwendet. Das ist eine dumme Sache und garantiert so ziemlich, dass jedes lineare Modell immer die dominierende Klasse vorhersagt. Wenn Sie sich Sorgen um die Klassenbalance machen, unterstützt VW Gewichte, sodass Sie die selteneren Klassen übergewichten können.
Bearbeiten : Sie haben 100 Klassen und 10.000 Trainingsbeispiele? Das sind durchschnittlich 100 Beobachtungen pro Klasse, von denen man nicht so viele lernen kann, egal welches Modell Sie verwenden.
quelle