Wie gehe ich mit einem Nullfaktor bei der Berechnung des Naive Bayes-Klassifikators um?

13

Wenn ich einen Trainingsdatensatz habe und einen Naive Bayes-Klassifikator darauf trainiere und einen Attributwert mit der Wahrscheinlichkeit Null habe. Wie gehe ich damit um, wenn ich später die Klassifizierung für neue Daten vorhersagen möchte? Das Problem ist, wenn es eine Null in der Berechnung gibt, wird das gesamte Produkt zu Null, egal wie viele andere Werte ich habe, die vielleicht eine andere Lösung finden würden.

Beispiel:

P(x|speinm=yes)=P(TichmeZÖne=US|speinm=yes)P(GeÖLÖceintichÖn=EU|speinm=yes) ... =0,004

P(x|spam=no)=P(TimeZone=US|spam=no)P(GeoLocation=EU|spam=no) ... =0

Das gesamte Produkt wird zu da in den Trainingsdaten das Attribut TimeZone US in unserem kleinen Trainingsdatensatz immer Ja lautet. Wie kann ich damit umgehen? Sollte ich einen größeren Satz von Trainingsdaten verwenden oder gibt es eine andere Möglichkeit, dieses Problem zu lösen?0

fragant
quelle
Wenn ein diskreter Attributwert auftritt, kann seine Wahrscheinlichkeit per Definition nicht null sein.
Paul
warum wir 1 in 0 Frequenzproblem hinzufügen, was ist die Logik dahinter, warum wir nicht eine andere Zahl hinzufügen.
Aftab Hussaiin

Antworten:

12

Ein Ansatz zur Überwindung dieses „Null-Frequenz-Problems“ in einer Bayes'schen Einstellung besteht darin, für jede Attributwert-Klassen-Kombination eine zur Anzahl hinzuzufügen, wenn nicht bei jedem Klassenwert ein Attributwert auftritt. Angenommen, Ihre Trainingsdaten sahen folgendermaßen aus:

Spam=yesSpam=noTimeZone=US105TimeZone=EU00

P(TimeZone=US|Spam=yes)=1010=1

P(TimeZone=EU|Spam=yes)=010=0

Dann sollten Sie zu jedem Wert in dieser Tabelle einen hinzufügen, wenn Sie ihn zur Berechnung der Wahrscheinlichkeiten verwenden:

Spam=yesSpam=noTimeZone=US116TimeZone=EU11

P(Zeitzone=US|Spam=yes)=1112

P(Zeitzone=EU|Spam=yes)=112

timleathart
quelle
4
Tatsächlich. Beachten Sie, dass Sie manchmal andere Werte als einen hinzufügen können. Für Details siehe en.wikipedia.org/wiki/Additive_smoothing
DaL