Frage

Hallo, ich benutze Spark ML, um einen naiven Bayes-Multi-Class-Klassifizierer zu optimieren.

Ich habe ungefähr 300 Kategorien und klassifiziere Textdokumente. Das Trainingssatz ist ausgewogen genug und es gibt ungefähr 300 Trainingsbeispiele für jede Kategorie.

Alles sieht gut aus und der Klassifikator arbeitet mit akzeptabler Präzision für unsichtbare Dokumente. Aber was ich bemerkt, dass der Klassifizierer bei der Klassifizierung eines neuen Dokuments häufig eine sehr hohe Wahrscheinlichkeit zu einer der Kategorien zuweist (die Vorhersagewahrscheinlichkeit ist fast gleich 1), während die anderen Kategorien sehr niedrige Wahrscheinlichkeiten erhalten (nahezu Null ).

Was sind die möglichen Gründe für dieses Phänomen?

  • Ich kann mir einen möglichen Grund vorstellen, der alle Wörter in einigen Dokumenten sind, die nicht mit einigen Kategorien im Trainingsdatensatz angezeigt wurden? Aber ich bin nicht ganz davon überzeugt, dass es für die meisten Ergebnisse immer eine Kategorie gibt, die eine sehr hohe Wahrscheinlichkeit hat und alle anderen eine sehr geringe Wahrscheinlichkeit haben.
  • Gibt es andere Erklärungen oder Gründe?

Ich möchte hinzufügen, dass in Spark ML etwas sogenanntes "rohe Vorhersage" gibt, und wenn ich es mir ansehe, kann ich negative Zahlen sehen, aber sie haben mehr oder weniger vergleichbare Größe, sodass selbst die Kategorie mit der hohen Wahrscheinlichkeit eine vergleichbare rohe Vorhersage hat Punktzahl, aber ich finde Schwierigkeiten bei der Interpretation dieser Punktzahlen.

War es hilfreich?

Lösung

Der Grund, warum NB als "naiv" bezeichnet wird, ist die Annahme, dass die Vorhersagevariablen alle sind unabhängig. Diese Annahme verzerrt normalerweise die Modellwerte (die unter der oben genannten naiven Annahme unvoreingenommene Wahrscheinlichkeitsschätzungen auf 0 oder 1 sind.

In Ihrem Fall, z. B. das Vorhandensein von Wörtern flower und petal angeben gardening Kategorie, aber weil das Vorhandensein dieser Wörter nicht unabhängig ist (wenn einer vorhanden ist, wird das andere wahrscheinlich auch vorhanden sein), wird das Modell ihr Aussehen überwerten. Den extremen Fall nehmen, wenn Wörter A und B erscheinen nur zusammen zusammen

P(Category=X | A & B) = P(Category=X | B) = P(Category=X | A)

und so sollte man sich mit dem Quotenverhältnis von multiplizieren A&B Einmal, nicht zweimal, wie der naive Bayes -Algorithmus erfordert.

Ihr Mittel ist zu verwenden Kalibrierung (Ein separates Modell, das die Modellbewertungen auf Wahrscheinlichkeiten abbildert).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit datascience.stackexchange
scroll top