Das Problem, mit dem ich mich befasse, ist die Kategorisierung von Kurztexten in mehrere Klassen. Mein aktueller Ansatz ist die Verwendung von tf-idf-gewichteten Termfrequenzen und das Erlernen eines einfachen linearen Klassifikators (logistische Regression). Dies funktioniert recht gut (ca. 90% Makro F-1 am Testgerät, fast 100% am Trainingsgerät). Ein großes Problem sind unsichtbare Wörter / n-Gramm.
Ich versuche, den Klassifikator zu verbessern, indem ich andere Merkmale hinzufüge, z. B. einen Vektor mit fester Größe, der unter Verwendung von Verteilungsähnlichkeiten (wie von word2vec berechnet) berechnet wurde, oder andere kategoriale Merkmale der Beispiele. Meine Idee war es, die Features einfach zu den spärlichen Eingabefeatures aus der Worttüte hinzuzufügen. Dies führt jedoch zu einer schlechteren Leistung des Test- und Trainingssatzes. Die zusätzlichen Funktionen für sich allein ergeben etwa 80% F-1 im Testsatz, so dass sie kein Müll sind. Das Skalieren der Funktionen hat auch nicht geholfen. Ich bin der Meinung, dass diese Art von Funktionen nicht gut mit den (spärlichen) Wortfeatures zusammenpassen.
Die Frage ist also: Unter der Annahme, dass die zusätzlichen Funktionen zusätzliche Informationen liefern, wie lassen sie sich am besten integrieren? Könnte man getrennte Klassifikatoren trainieren und in einer Art Ensemble-Arbeit kombinieren (dies hätte wahrscheinlich den Nachteil, dass keine Interaktion zwischen den Merkmalen der verschiedenen Klassifikatoren erfasst werden könnte)? Gibt es andere komplexere Modelle, die ich berücksichtigen sollte?
quelle
Antworten:
Wenn ich das richtig verstehe, haben Sie im Wesentlichen zwei Arten von Funktionen für Ihre Modelle. (1) Textdaten, die Sie als spärliche Wortsammlung dargestellt haben, und (2) traditionellere dichte Merkmale. In diesem Fall gibt es drei gängige Ansätze:
TruncatedSVD
) für Ihre spärlichen Daten durch, um diese zu verdichten, und kombinieren Sie die Features in einer einzigen dichten Matrix, um Ihre Modelle zu trainieren.hstack
in eine einzelne dünne Matrix umwandeln , um Ihre Modelle zu trainieren.Pipeline
wenn dies gewünscht wird).Alle drei Ansätze sind gültig und haben ihre eigenen Vor- und Nachteile. Persönlich empfinde ich (1) als am schlechtesten, weil es relativ langsam ist. Ich finde auch, dass (3) normalerweise das Beste ist, sowohl ausreichend schnell als auch mit sehr guten Vorhersagen. Sie können natürlich auch eine Kombination daraus erstellen, wenn Sie bereit sind, ein umfangreicheres Ensemble zu erstellen.
Die von Ihnen verwendeten Algorithmen können im Wesentlichen alle in dieses Framework passen. Die logistische Regression funktioniert die meiste Zeit überraschend gut, aber andere können es besser machen, je nachdem, welches Problem vorliegt und wie gut Sie sie einstellen. Ich bin selbst ein Teil von GBMs, aber das Fazit ist, dass Sie so viele Algorithmen ausprobieren können, wie Sie möchten, und sogar einfache gewichtete Ensembles ihrer Vorhersagen führen fast immer zu einer besseren Gesamtlösung.
quelle
Lineare Modelle addieren einfach ihre Merkmale multipliziert mit den entsprechenden Gewichten. Wenn Sie zum Beispiel 1000 Sparse-Features haben, von denen jeweils nur 3 oder 4 aktiv sind (und die anderen Nullen sind), und 20 Dichte-Features, die alle nicht Nullen sind, ist es ziemlich wahrscheinlich, dass Dichte-Features das Beste aus ihnen machen Die Auswirkungen, während spärliche Features nur einen geringen Wert hinzufügen. Sie können dies überprüfen, indem Sie die Feature-Gewichtung für einige Instanzen und deren Einfluss auf die resultierende Summe untersuchen.
Eine Möglichkeit, dies zu beheben, besteht darin, das additive Modell zu verlassen. Hier sind einige Kandidatenmodelle.
SVM basiert auf der Trennung von Hyperebenen. Obwohl die Hyperebene selbst ein lineares Modell ist, fasst SVM ihre Parameter nicht zusammen, sondern versucht, den Merkmalsraum auf optimale Weise zu teilen. Angesichts der Anzahl der Funktionen würde ich sagen, dass lineare SVM gut funktionieren sollte, während kompliziertere Kernel dazu neigen, die Daten zu überfüllen.
Trotz seines Namens ist Naive Bayes ein ziemlich leistungsfähiges statistisches Modell, das gute Ergebnisse für die Textklassifizierung zeigt. Es ist auch flexibel genug, um Ungleichgewichte in der Häufigkeit von spärlichen und dichten Merkmalen zu erfassen. Probieren Sie es also unbedingt aus.
Schließlich können in diesem Fall zufällige Wälder als gute Ensemblemethode fungieren. Durch die Randomisierung wird sichergestellt, dass verschiedene Arten von Features (dünn / dicht) als primäre Entscheidungsknoten in verschiedenen Bäumen verwendet werden. RF- / Entscheidungsbäume eignen sich auch zum Prüfen von Features selbst. Es lohnt sich also, deren Struktur zu beachten.
Beachten Sie, dass alle diese Methoden ihre Nachteile haben, die sie in Ihrem Fall in einen Müll verwandeln können. Das Kombinieren von spärlichen und dichten Features ist keine wirklich gut untersuchte Aufgabe. Teilen Sie uns daher mit, welche dieser Ansätze für Ihren Fall am besten geeignet sind.
quelle