Da Naive Bayes-Alogorithmen, die von den meisten Bibliotheken implementiert werden, im Allgemeinen keine Multilabel-Klassifizierung unterstützen. Obwohl Sie Ihren eigenen Algorithmus entwickeln können, der sich vom naiven Bayes-Ansatz inspirieren lässt.
Für eine bestimmte Klasse c und Dokument d (mit 3 Wörtern w1, w2, w3)
'/' steht für 'gegebenes' p (a / b) = Wahrscheinlichkeit (a gegebenes b)
Nach dem Bayes-Theorem.
p (c / d) = p (c, d) / p (d)
p (c / d) = (p (c) · p (d / c)) / p (d)
wo:
p (d / c) = p (w1 / c) · p (w2 / c) · p (w3 / c)
Da Wörter als unabhängig voneinander angenommen werden.
Und p (w1 / c) kann mit Ihrem Code erhalten werden, indem die Anzahl von w1 in Dokumenten der Klasse c geteilt durch die Gesamtanzahl von w1 in allen Dokumenten berechnet wird, oder Sie können Ihre eigene Logik verwenden
Aber wenn Sie vermeiden möchten, detaillierten Code zu schreiben
Sie können Ihre Eingabedaten umstrukturieren, um eine Klassifizierung mit mehreren Labels zu erreichen. so dass ein gegebenes Dokument d mit n Bezeichnungen / Klassen (z. B. d, das mit c1, c2, c3 gekennzeichnet ist) in Daten von n Proben (3 hier) desselben Dokuments d mit jeweils unterschiedlicher Bezeichnung ((d, c1), () erweitert wird d, c2), (d, c3)). Jetzt können Sie diese Daten an jede R / Python-Bibliothek übergeben, die multinomiale naive Bayes unterstützt. Gleiches muss auch in Ihrem Datensatz erfolgen. Derzeit übergeben Sie Traindata $ -Themen, die unverändert y-variabel (Trainingsbezeichnungen) sind, ohne Änderungen.
Auch nachdem Sie Ihre Daten mit diesem Ansatz trainiert haben. Sie müssen einen Wahrscheinlichkeitsschwellenwert verwenden, z. B. 0,2, damit diesem Testdokument Klassenbezeichnungen mit einer Wahrscheinlichkeit über 0,2 zugewiesen werden.
Besserer Ansatz, der eine Umstrukturierung Ihrer Eingabe erfordert
Wenn Sie 'n' Klassenbezeichnungen haben, können Sie 'n' verschiedene binäre naive Bayes-Klassifikatoren für jede Klasse trainieren. Zum Trainieren eines Klassifikators für die Klasse 'c1' trainieren Sie beispielsweise einen naiven Bayes-Klassifikator mit der abhängigen Variablen Y, die das Vorhandensein der Klasse c1 in diesem Dokument als '1' und das Fehlen der Klasse '0' bezeichnet.
Nachdem Sie 'n' binären naiven Bayes-Klassifikator mit diesem Ansatz trainiert haben. Sie werden nun die Ausgabe dieser n Klassifikatoren verwenden. Wenn beispielsweise von diesen n Klassifizierern ein bestimmter Klassifizierer, der der Klasse 'c1' entspricht, eine Ausgabewahrscheinlichkeit über 0,5 hat, wird diesem Testdokument die Klassenbezeichnung 'c1' zugewiesen.