Levigante nel modello Naive Bayes


13

Un predittore Naive Bayes fa le sue previsioni usando questa formula:

P(Y=y|X=X)=αP(Y=y)ΠioP(Xio=Xio|Y=y)

dove è un fattore normalizzante. Ciò richiede la stima dei parametri dai dati. Se lo facciamo con smoothing, otteniamo la stimaP ( X i = x i | Y = y ) kαP(Xio=Xio|Y=y)K

P^(Xio=Xio|Y=y)=#{Xio=Xio,Y=y}+K#{Y=y}+nioK

dove ci sono possibili valori per . Sto bene con questo. Tuttavia, per il precedente, abbiamoX inioXio

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

dove ci sono esempi nel set di dati. Perché non levigiamo anche il precedente? O meglio, cosa si liscia il preventivo? In tal caso, quale parametro di smoothing scegliamo? Sembra anche leggermente sciocco scegliere anche , poiché stiamo facendo un calcolo diverso. C'è un consenso? O non importa troppo?NK

Risposte:


5

Il motivo tipico del livellamento è innanzitutto gestire i casi in cui . Se ciò non avvenisse, otterremmo sempre ogni volta che questo è il caso.#{Xio=Xio|Y=y}=0P(Y=y|X=X)=0

Ciò accade quando, ad esempio, classificando i documenti di testo si incontra una parola che non era nei dati di allenamento o che non compare in una determinata classe.

D'altra parte, nel caso della probabilità precedente della classe, , questa situazione non dovrebbe verificarsi. In caso contrario, ciò significherebbe che si sta tentando di assegnare oggetti a classi che non sono nemmeno state visualizzate nei dati di allenamento.P(Y=y)

Inoltre, non ho mai incontrato il termine smoothing. Il livellamento di Laplace o additivo è molto più comune.K


1
Il motivo del livellamento in generale è di evitare un eccesso di adattamento dei dati. Il caso in cui il conteggio di una classe è zero è solo un caso particolare di overfit (che risulta essere particolarmente negativo). Potresti comunque voler smussare le probabilità quando si osserva ogni classe. Suppongo di essere infastidito dall'apparente asimmetria: il livellamento di Laplace corrisponde all'ipotesi che nel tuo set di dati siano presenti ulteriori osservazioni. Perché dovresti ignorare quelle osservazioni quando si adatta il precedente?
Chris Taylor,

P(Y=y)P(Xio=Xio|Y=y)

"questa situazione non dovrebbe verificarsi. Se lo facesse, ciò significherebbe che stai tentando di assegnare oggetti a classi che non sono nemmeno apparse nei dati di addestramento". Uhh ... come potrebbe un classificatore assegnare un oggetto a una classe che non aveva mai visto prima (cioè, non è nei dati di addestramento)?
Jemenake,

@Jemenake Il problema viene normalmente definito apprendimento Zero-shot, ad esempio vedi Apprendimento Zero-Shot con codici di uscita semantici
alto

quando formiamo il modello utilizzando il set di dati di training, potremmo creare un vocabolario usando le parole presenti nel set di dati di training, quindi perché non rimuovere semplicemente nuove parole non nel vocabolario quando si fanno previsioni sul set di test?
avocado,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.