Mehrere Bezeichnungen im überwachten Lernalgorithmus

10

Ich habe einen Textkorpus mit entsprechenden Themen. Zum Beispiel "A rapper Tupac was shot in LA"und es wurde als bezeichnet ["celebrity", "murder"]. Grundsätzlich kann jeder Merkmalsvektor viele Beschriftungen haben (nicht die gleiche Menge. Der erste Merkmalsvektor kann 3 Beschriftungen haben, die zweite 1, die dritte 5).

Wenn ich nur eine Beschriftung für jeden Text hätte, würde ich einen Naive Bayes-Klassifikator ausprobieren , aber ich weiß nicht wirklich, wie ich vorgehen soll, wenn ich viele Beschriftungen haben kann.

Gibt es eine Möglichkeit, Naive Bayes in ein Problem der Klassifizierung mehrerer Etiketten umzuwandeln (wenn es einen besseren Ansatz gibt - lassen Sie es mich bitte wissen)?

PS ein paar Dinge über die Daten, die ich habe.

  • ca. 10.000 Elemente im Datensatz
  • Text ist ungefähr 2-3 Sätze
  • Maximal 7 Beschriftungen pro Text
Salvador Dali
quelle
@fordprefect Multinomial Naive Bayes verwendet eine Multinomialverteilung für die Wahrscheinlichkeiten eines Merkmals in einer Klasse: . Das OP möchte, dass ein Klassifizierer mehrere Ausgaben verwaltet, wie TheGrimmScientist beschrieben hat. p(fi|c)
Robert Smith

Antworten:

6

Für den Anfang ist Naive Bayes hier wahrscheinlich nicht geeignet. Es setzt Unabhängigkeit zwischen den Eingaben voraus (daher die "Naive") und Wörter in einem Satz sind sehr abhängig.

Angenommen, Sie möchten wirklich mit NB als Algorithmus arbeiten, um Ihre Experimente zu starten, gibt es zwei Optionen, die ich in Betracht ziehen würde:

Ungraceful: Viele NB-Klassifikatoren

Dies wäre ein alternativer Ansatz. Machen Sie einen Korupus aller Wörter, die als Ihr Eingabevektor beobachtet werden. Machen Sie einen Korpus aus allen Tags, die als Ihr Ausgabevektor beobachtet werden. Ein NB-Klassifizierer mit mehreren Ausgängen entspricht mehreren NB-Klassifizierern mit jeweils einem Ausgang (tun Sie also, was in dem von Ihnen verwendeten Software-Framework einfacher zu implementieren ist). Behandeln Sie jedes Element als Trainingsbeispiel, bei dem eine bestimmte Eingabe (ein Wort) ein 1Wenn dieses Wort vorhanden ist und ein 0Wenn dieses Wort nicht vorhanden ist. Verwenden Sie für die Ausgabe dasselbe Binärschema.

Dieser Rohling erzwingt die Anwendung des NB-Klassifikators auf Ihre Daten und lässt Sie einen Sinn finden, indem Sie immer noch die riesige Menge an Klassifikatoren abbauen müssen, die Ihnen übrig bleiben.

Anmutiger: Verarbeiten Sie Ihre Daten

Dies ist der Ansatz, den ich empfehlen würde, wenn Sie mit einem NB-Klassifikator mit mehreren Klassen arbeiten möchten.

Ihr Ziel hier ist es, herauszufinden, wie Sie jeden Satz von Tags einer einzelnen Klasse zuordnen können. Ich bin mir sicher, dass es eine Art Clustering-Schema oder eine Netzwerkanalyse gibt (vielleicht könnte ["Berühmtheit"] im Zusammenhang mit ["Mord"] zu einem Segment ["Ausschweifung"] werden), das Ihre Tags sinnvoll einem einzelnen Cluster zuordnet. Wenn Sie Tags als Knoten und zwei vorgegebene Tags zusammen als Links behandeln, sollten Sie sich mit Community-Erkennungsalgorithmen befassen (hier würde ich beginnen). Wenn Sie jedoch nur möchten, dass etwas funktioniert, reicht eine Art Hack auf die Tags aus, mit dem eine Liste von Tags nur in das Tag konvertiert wird, das in Ihrem Dataset am häufigsten vorkommt.

Diese Methode lädt die Arbeit zum Bereinigen Ihrer Daten vor und erleichtert das Verständnis der Ausgabe des NB-Klassifikators.

TheGrimmScientist
quelle
Vielen Dank für Ihre Eingabe. Wenn Sie eine Idee haben, was besser wäre als NB, lassen Sie es mich bitte wissen.
Salvador Dali
1
Der Abschnitt "Vorhandene Lösungen" dieses Dia-Decks enthält alles, womit ich antworten könnte, sowie mehr (vorausgesetzt, Sie benötigen keinen speziellen Klassifikator und möchten nur eine Möglichkeit, Tags zu verwenden). Ich hoffe es ist nützlich für dich.
TheGrimmScientist
@TheGrimmScientist Wäre es nicht sinnvoll, den ersten Ansatz zu verwenden? Wenn Sie einen Vektor mit den Merkmalen f1, f2, f3 und beispielsweise 3 Beschriftungen für diesen Vektor haben, können wir diesen in 3 Vektoren (alle mit denselben Merkmalen f1, f2, f3) mit unterschiedlichen Beschriftungen als Ausgaben unterteilen. Dann ist es möglich, Naive Bayes wie gewohnt zu verwenden. Ich bin mir nicht sicher, ob Sie das im Sinn hatten.
Robert Smith