A Naive Bayes, perché preoccuparsi del livellamento di Laplace quando nel set di test abbiamo parole sconosciute?


28

Oggi stavo leggendo la classifica Naive Bayes. Ho letto, sotto l'intestazione della stima dei parametri con l'aggiunta di un livellamento :

Lascia che faccia riferimento a una classe (come Positivo o Negativo) e che faccia riferimento a un token o una parola.cw

Lo stimatore di massima verosimiglianza per èP(w|c)

count(w,c)count(c)=conta w in classe cconteggi di parole nella classe c.

Questa stima di potrebbe essere problematica poiché ci darebbe probabilità per documenti con parole sconosciute. Un modo comune per risolvere questo problema è utilizzare il livellamento di Laplace.P(w|c)0

Lascia che V sia l'insieme di parole nell'insieme di addestramento, aggiungi un nuovo elemento (per sconosciuto) all'insieme di parole.UNK

Definisci

P(w|c)=contare(w,c)+1contare(c)+|V|+1,

dove riferisce al vocabolario (le parole nel set di addestramento).V

In particolare, qualsiasi parola sconosciuta avrà probabilità

1contare(c)+|V|+1.

La mia domanda è questa: perché dovremmo preoccuparci di questo smoothing di Laplace? Se queste parole sconosciute che incontriamo nel set di test hanno una probabilità che è ovviamente quasi zero, cioè , che senso ha includerli nel modello? Perché non ignorarli ed eliminarli? 1contare(c)+|V|+1


3
In caso contrario, qualsiasi istruzione che incontri contenente una parola mai vista prima avrà . Ciò significa che è accaduto un evento impossibile. Ciò significa che il tuo modello è stato incredibilmente male. Anche in un modello bayesiano appropriato ciò non potrebbe mai accadere, poiché la parola sconosciuta probabilità avrebbe un numeratore dato dal precedente (forse non 1). Quindi non so perché questo richieda il nome stravagante "lisciatura di Laplace". p=0
congetture il

1
Qual è il testo da cui proviene la lettura?
parole per il

Risposte:


17

Hai sempre bisogno di questa probabilità "fail-safe".

Per capire perché considerare il caso peggiore in cui nessuna delle parole nel campione di addestramento appare nella frase di prova. In questo caso, secondo il tuo modello, concluderemmo che la frase è impossibile ma esiste chiaramente creando una contraddizione.

Un altro esempio estremo è la frase di prova "Alex ha incontrato Steve". dove "incontrato" appare più volte nell'esempio di allenamento ma "Alex" e "Steve" no. Il tuo modello dovrebbe concludere che questa affermazione è molto probabile, il che non è vero.


Odio sembrare un completo idiota, ma ti dispiacerebbe elaborare? In che modo la rimozione di "Alex" e "Steve" modifica la probabilità che si verifichi la dichiarazione?
Matt O'Brien,

2
Se assumiamo l'indipendenza delle parole P (Alex) P (Steve) P (incontrato) << P (incontrato)
Sid

1
potremmo costruire un vocabolario durante l'addestramento del modello sul set di dati di training, quindi perché non rimuovere semplicemente tutte le nuove parole non presenti nel vocabolario quando si fanno previsioni sul set di dati di test?
avocado,

15

Supponiamo che tu abbia addestrato il tuo Classificatore Naive Bayes su 2 classi, "Ham" e "Spam" (ovvero classifica le email). Per semplicità, supponiamo che le probabilità precedenti siano 50/50.

Ora diciamo che avete una e-mail (w1,w2,...,wn) , che i tassi di classificatore molto altamente come "Ham", dicono

P(Hun'm|w1,w2,...wn)=.90
e
P(Spun'm|w1,w2,..wn)=.10

Fin qui tutto bene.

Ora diciamo che hai un altro e-mail (w1,w2,...,wn,wn+1) che è esattamente lo stesso come l'e-mail sopra, salvo che non c'è una sola parola in esso che non è incluso nel vocabolario . Pertanto, poiché il conteggio di questa parola è 0,

P(Hun'm|wn+1)=P(Spun'm|wn+1)=0

Improvvisamente,

P(Hun'm|w1,w2,...wn,wn+1)=P(Hun'm|w1,w2,...wn)*P(Hun'm|wn+1)=0
e
P(Spun'm|w1,w2,..wn,wn+1)=P(Spun'm|w1,w2,...wn)*P(Spun'm|wn+1)=0

Nonostante la prima e-mail sia fortemente classificata in una classe, questa seconda e-mail può essere classificata in modo diverso a causa dell'ultima parola che ha una probabilità pari a zero.

Il livellamento di Laplace risolve questo dando all'ultima parola una piccola probabilità diversa da zero per entrambe le classi, in modo che le probabilità posteriori non scendano improvvisamente a zero.


perché dovremmo mantenere una parola che non esiste affatto nel vocabolario? perché non rimuoverlo?
avocado,

4
se il tuo classificatore giudica un'email come probabile che sia ham, allora p (ham | w1, ..., wn) è 0.9, non p (w1, ..., wn | ham)
braaterAfrikaaner

5

Questa domanda è piuttosto semplice se hai familiarità con gli stimatori di Bayes, poiché è la conclusione diretta dello stimatore di Bayes.

Nell'approccio bayesiano, i parametri sono considerati una quantità la cui variazione può essere descritta da una distribuzione di probabilità (o distribuzione precedente).

Quindi, se consideriamo la procedura di raccolta come distribuzione multinomiale, allora possiamo risolvere la domanda in pochi passaggi.

Innanzitutto, definire

m=|V|,n=ni

pi

p(p1,p2,...,pm|n1,n2,...,nm)=Γ(n+m)i=1mΓ(ni+1)i=1mpini

pi

E[pi]=ni+1n+m

piopio

p^io=E[pio]

Come puoi vedere, traggiamo le stesse conclusioni di Laplace Smoothing.


4

Ignorare quelle parole è un altro modo di gestirlo. Corrisponde alla media (integrazione fuori) su tutte le variabili mancanti. Quindi il risultato è diverso. Come?

P(C*|d)=argmaxCΠiop(tio|C)P(C)P(d)αargmaxCΠiop(tio|C)P(C)
tiod

tKtK

P(C*|d)αargmaxCΣtKΠiop(tio|C)P(C)=argmaxCP(C)ΠioKp(tio|C)ΣtKp(tK|C)=argmaxCP(C)ΠioKp(tio|C)

Ma in pratica si preferisce l'approccio levigante. Invece di ignorare quei token, assegni loro una bassa probabilità che è come pensare: se ho token sconosciuti, è più improbabile che sia il tipo di documento che altrimenti penserei che sia.


2

Volete sapere perché ci preoccupiamo del livellamento in un classificatore Naive Bayes (quando invece possiamo buttare via le funzioni sconosciute).

La risposta alla tua domanda è: non tutte le parole devono essere sconosciute in tutte le classi.

Supponiamo che ci siano due classi M e N con le caratteristiche A , B e C , come segue:

M: A = 3, B = 1, C = 0

(Nella classe M , A appare 3 volte e B solo una volta)

N: A = 0, B = 1, C = 3

(Nella classe N , C appare 3 volte e B solo una volta)

Vediamo cosa succede quando butti via funzionalità che appaiono zero volte.

A) Gettare via funzioni che appaiono zero volte in qualsiasi classe

Se elimini le funzioni A e C perché compaiono zero volte in una qualsiasi delle classi, allora rimani solo con la funzione B per classificare i documenti.

E perdere queste informazioni è una brutta cosa come vedrai di seguito!

Se ti viene presentato un documento di prova come segue:

B = 1, C = 3

(Contiene B una volta e C tre volte)

Ora, dal momento che hai scartato le caratteristiche A e B , non sarà in grado di dire se il documento di cui sopra appartiene alla classe M o di classe N .

Quindi, perdere qualsiasi informazione sulle funzionalità è una cosa negativa!

B) Gettare via funzioni che appaiono zero volte in tutte le classi

È possibile aggirare questo problema scartando solo quelle funzionalità che appaiono zero volte in tutte le classi?

No, perché ciò creerebbe i suoi problemi!

Il seguente documento di prova illustra cosa accadrebbe se lo facessimo:

A = 3, B = 1, C = 1

La probabilità di M e N diventerebbe entrambi zero (perché non abbiamo gettato via la probabilità zero di A in classe N e la probabilità zero di C in classe M ).

C) Non gettare nulla: utilizzare invece Smoothing

La levigatura consente di classificare correttamente entrambi i documenti sopra perché:

  1. Non perdi le informazioni di conteggio nelle classi in cui tali informazioni sono disponibili e
  2. Non devi fare i conti con zero conteggi.

Classificatori Naive Bayes in pratica

Il classificatore Naive Bayes in NLTK era solito eliminare le funzionalità che avevano conteggi zero in una qualsiasi delle classi.

Questo usato per farlo funzionare male quando allenato usando una dura procedura EM (in cui il classificatore viene avviato da pochissimi dati di allenamento).


2
@ Aiaioo Labs Non ti sei reso conto che si stava riferendo a parole che non apparivano affatto nel set di addestramento, per il tuo esempio, si riferiva per dire che se fosse apparso D, il problema non è con il livellamento lasco sui calcoli dal set di allenamento piuttosto il set di test. L'uso del livellamento sul posto di parole sconosciute dal set TEST fa sì che la probabilità di essere inclinata verso qualunque classe abbia il minor numero di token a causa di 0 + 1/2 + 3 maggiore di 0 + 1/3 + 3 (se una delle classi aveva 3 token e l'altro aveva 2). ...

2
Questo può effettivamente trasformare una classificazione corretta in una classificazione errata se nell'equazione vengono appianate abbastanza parole sconosciute. Il livellamento di Laplace va bene per i calcoli del set di allenamento, ma è dannoso per l'analisi del set di test. Immagina anche di avere un set di test con tutte le parole sconosciute, che dovrebbe essere classificato immediatamente nella classe con la più alta probabilità, ma in realtà può e di solito non essere classificato come tale, e di solito è classificato come la classe con l'importo più basso di token.

@DrakeThatcher, sono pienamente d'accordo con te, sì, se non rimuoviamo le parole non presenti nel vocabolario, allora proba previsto verrà inclinato in classe con il minor numero di parole.
avocado,

1

Mi sono anche imbattuto nello stesso problema mentre studiavo Naive Bayes.

Secondo me, ogni volta che incontriamo un esempio di test che non avevamo riscontrato durante l'allenamento, allora la probabilità posteriore diventerà 0.

Quindi aggiungendo 1, anche se non ci alleniamo mai su una particolare caratteristica / classe, la probabilità posteriore non sarà mai 0.


1

Matt hai ragione, sollevi un ottimo punto - sì, Laplace Smoothing è francamente senza senso! Eliminare semplicemente queste funzionalità può essere un approccio valido, in particolare quando anche il denominatore è un piccolo numero - semplicemente non ci sono prove sufficienti per supportare la stima della probabilità.

Ho una forte avversione nel risolvere qualsiasi problema attraverso l'uso di qualche aggiustamento arbitrario. Il problema qui è zeri, la "soluzione" è semplicemente "aggiungere un valore piccolo a zero, quindi non è più zero - MAGIC il problema non è più". Ovviamente è del tutto arbitrario.

Il tuo suggerimento di una migliore selezione delle funzionalità per cominciare è un approccio meno arbitrario e l'IME aumenta le prestazioni. Inoltre, Laplace Smoothing in combinazione con Bayes ingenuo, poiché nella mia esperienza il modello peggiora il problema della granularità, ovvero il problema in cui l'output dei punteggi tende ad essere vicino a 1,0 o 0,0 (se il numero di funzioni è infinito, ogni punteggio sarà 1,0 o 0,0 - questa è una conseguenza dell'assunzione di indipendenza).

Ora esistono tecniche alternative per la stima della probabilità (oltre alla massima verosimiglianza + livellamento di Laplace), ma sono ampiamente sotto documentate. In realtà esiste un intero campo chiamato Logica induttiva e processi di inferenza che utilizzano molti strumenti della teoria dell'informazione.

Quello che usiamo in pratica è l'aggiornamento dell'entropia incrociata minima, che è un'estensione dell'aggiornamento di Jeffrey in cui definiamo la regione convessa dello spazio di probabilità coerente con l'evidenza di essere la regione in modo tale che un punto in essa significhi che la stima della massima verosimiglianza rientra nella Deviazione assoluta prevista dal punto.

Ciò ha una bella proprietà che, man mano che il numero di punti dati diminuisce, le stime pacificamente si avvicinano senza problemi al precedente, e quindi il loro effetto nel calcolo bayesiano è nullo. Il livellamento di Laplace invece rende ogni approccio di stima il punto di Entropia massima che potrebbe non essere il precedente e quindi l'effetto nel calcolo non è nullo e aggiungerà solo rumore.

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.