Glätten im Naive Bayes-Modell

13

Ein Naive Bayes-Prädiktor macht seine Vorhersagen mit dieser Formel:

P(Y.=y|X=x)=αP(Y.=y)ichP(Xich=xich|Y.=y)

wobei ein normalisierender Faktor ist. Dies erfordert das Abschätzen der Parameter aus den Daten. Wenn wir dies mit Glättung tun, erhalten wir die SchätzungP ( X i = x i | Y = y ) kαP(Xich=xich|Y.=y)k

P^(Xich=xich|Y.=y)=#{Xich=xich,Y.=y}+k#{Y.=y}+nichk

wo gibt es mögliche Werte für . Mir geht es gut damit. Für den Prior haben wir jedochnichXich

P^(Y=y)=#{Y=y}N

wo gibt es Beispiele in der Datenmenge. Warum glätten wir nicht auch den Prior? Oder besser gesagt, sie glätten wir die vor? Wenn ja, welchen Glättungsparameter wählen wir? Es scheint ein wenig albern, auch zu wählen , da wir eine andere Berechnung durchführen. Gibt es einen Konsens? Oder spielt es keine Rolle zu viel?Nk

Chris Taylor
quelle

Antworten:

5

Der typische Grund für die Glättung ist in erster Linie die Behandlung von Fällen, in denen . Wenn dies nicht geschehen wäre, würden wir immer P ( Y = y | X = x ) = 0 erhalten, wenn dies der Fall war.#{Xich=xich|Y.=y}=0P(Y.=y|X=x)=0

Dies passiert zum Beispiel, wenn Sie Textdokumente klassifizieren, bei denen Sie auf ein Wort stoßen, das nicht in Ihren Trainingsdaten enthalten ist oder nur in einer bestimmten Klasse nicht vorkommt.

P(Y.=y)

k

Alt
quelle
1
Der Grund für die Glättung im Allgemeinen ist die Vermeidung einer Überanpassung der Daten. Der Fall, in dem die Zählung einer Klasse Null ist, ist nur ein besonderer Fall von Überanpassung (der zufällig besonders schlimm ist). Möglicherweise möchten Sie die Wahrscheinlichkeiten noch glätten, wenn jede Klasse beobachtet wird. Die offensichtliche Asymmetrie stört mich vermutlich - Laplace-Glättung entspricht der Annahme, dass Ihr Datensatz zusätzliche Beobachtungen enthält. Warum sollten Sie diese Beobachtungen ignorieren, wenn Sie den Prior anpassen?
Chris Taylor
P(Y.=y)P(Xich=xich|Y.=y)
"Diese Situation sollte nicht auftreten. Wenn dies der Fall wäre, würden Sie versuchen, Objekte Klassen zuzuweisen, die nicht einmal in den Trainingsdaten enthalten sind." Ähh ... wie würde ein Klassifikator ein Objekt einer Klasse zuordnen, die er noch nie zuvor gesehen hat (dh nicht in den Trainingsdaten)?
Jemenake
@ Jemenake Das Problem wird normalerweise als Zero-Shot-Lernen bezeichnet, siehe z. B. Zero-Shot-Lernen mit semantischen Ausgabecodes
Alt
Wenn wir das Modell unter Verwendung des Trainingsdatensatzes trainieren, können wir ein Vokabular unter Verwendung der im Trainingsdatensatz vorkommenden Wörter erstellen. Warum also nicht einfach neue Wörter entfernen, die nicht im Vokabular enthalten sind, wenn Vorhersagen für den Testsatz getroffen werden?
Avocado