Mi rendo conto che questa è una vecchia domanda, con una risposta affermata. Il motivo per cui sto postando è che la risposta accettata ha molti elementi di k-NN ( k -nearest neighbours), un algoritmo diverso.
Sia k-NN che NaiveBayes sono algoritmi di classificazione. Concettualmente, k-NN usa l'idea di "vicinanza" per classificare nuove entità. In k-NN la "vicinanza" è modellata con idee come la distanza euclidea o la distanza del coseno. Al contrario, in NaiveBayes, il concetto di "probabilità" viene utilizzato per classificare nuove entità.
Poiché la domanda riguarda Naive Bayes, ecco come descriverei le idee e i passaggi per qualcuno. Proverò a farlo con il minor numero di equazioni e in parole povere il più possibile.
Primo, Probabilità condizionale e regola di Bayes
Prima che qualcuno possa capire e apprezzare le sfumature di Naive Bayes, devono prima conoscere un paio di concetti correlati, vale a dire l'idea della probabilità condizionale e la regola di Bayes. (Se hai familiarità con questi concetti, passa alla sezione intitolata Come arrivare a Naive Bayes )
Probabilità condizionale in parole povere: qual è la probabilità che accada qualcosa, dato che è già successo qualcos'altro .
Diciamo che c'è un risultato O. E un po 'di prova E. Dal modo in cui sono definite queste probabilità: La probabilità di avere sia il risultato O che la prova E è: (Probabilità di O che si verificano) moltiplicata per (Prob of E dato che O è successo)
Un esempio per comprendere la probabilità condizionale:
Diciamo che abbiamo una collezione di senatori statunitensi. I senatori potrebbero essere democratici o repubblicani. Sono anche maschi o femmine.
Se selezioniamo un senatore in modo completamente casuale, qual è la probabilità che questa persona sia una donna democratica? La probabilità condizionale può aiutarci a rispondere a questo.
Probabilità di (democratica e senatrice) = Prob (senatrice è democratica) moltiplicata per la probabilità condizionale di essere femmina dato che sono democratiche.
P(Democrat & Female) = P(Democrat) * P(Female | Democrat)
Potremmo calcolare esattamente la stessa cosa, al contrario:
P(Democrat & Female) = P(Female) * P(Democrat | Female)
Comprensione della regola di Bayes
Concettualmente, questo è un modo per passare da P (Evidenza | Risultato noto) a P (Risultato | Evidenza nota). Spesso sappiamo con che frequenza vengono osservate alcune prove particolari, dato un risultato noto . Dobbiamo usare questo fatto noto per calcolare il contrario, per calcolare la possibilità che si verifichi quel risultato , date le prove.
P (risultato dato che conosciamo alcune prove) = P (prova dato che conosciamo il risultato) volte Prob (risultato), ridimensionato dalla P (prova)
L'esempio classico per comprendere la regola di Bayes:
Probability of Disease D given Test-positive =
Prob(Test is positive|Disease) * P(Disease)
_______________________________________________________________
(scaled by) Prob(Testing Positive, with or without the disease)
Ora, tutto questo era solo un preambolo, per arrivare a Naive Bayes.
Arrivare a Naive Bayes
Finora abbiamo parlato solo di una prova. In realtà, dobbiamo prevedere un risultato dato più prove. In tal caso, la matematica diventa molto complicata. Per ovviare a questa complicazione, un approccio consiste nel "disaccoppiare" più elementi di prova e nel considerare ciascuna parte di prove come indipendente. Questo approccio è il motivo per cui questo si chiama ingenuo Bayes.
P(Outcome|Multiple Evidence) =
P(Evidence1|Outcome) * P(Evidence2|outcome) * ... * P(EvidenceN|outcome) * P(Outcome)
scaled by P(Multiple Evidence)
Molte persone scelgono di ricordare questo come:
P(Likelihood of Evidence) * Prior prob of outcome
P(outcome|evidence) = _________________________________________________
P(Evidence)
Nota alcune cose su questa equazione:
- Se il Prob (prove | risultato) è 1, allora stiamo solo moltiplicando per 1.
- Se il Prob (alcune prove particolari | esito) è 0, allora l'intero prob. diventa 0. Se vedi prove contraddittorie, possiamo escludere questo risultato.
- Dato che dividiamo tutto per P (Evidenza), possiamo persino scappare senza calcolarlo.
- L'intuizione alla base della moltiplicazione per il precedente è tale da dare un'alta probabilità a risultati più comuni e basse probabilità a risultati improbabili. Questi sono anche chiamati
base rates
e sono un modo per ridimensionare le nostre probabilità previste.
Come applicare NaiveBayes per prevedere un risultato?
Basta eseguire la formula sopra per ogni possibile risultato. Dal momento che stiamo cercando di classificare , ogni risultato è chiamato a class
e ha un class label.
nostro compito è quello di esaminare le prove, considerare la probabilità che sia questa classe o quella classe e assegnare un'etichetta a ciascuna entità. Ancora una volta, adottiamo un approccio molto semplice: la classe che ha la più alta probabilità viene dichiarata "vincitrice" e quella etichetta di classe viene assegnata a quella combinazione di prove.
Esempio di frutta
Proviamo un esempio per aumentare la nostra comprensione: l'OP ha chiesto un esempio di identificazione "frutto".
Diciamo che abbiamo dati su 1000 pezzi di frutta. Capita che si tratti di banana , arancia o altra frutta . Conosciamo 3 caratteristiche di ciascun frutto:
- Se è lungo
- Che sia dolce e
- Se il suo colore è giallo.
Questo è il nostro "set di allenamento". Useremo questo per prevedere il tipo di qualsiasi nuovo frutto che incontriamo.
Type Long | Not Long || Sweet | Not Sweet || Yellow |Not Yellow|Total
___________________________________________________________________
Banana | 400 | 100 || 350 | 150 || 450 | 50 | 500
Orange | 0 | 300 || 150 | 150 || 300 | 0 | 300
Other Fruit | 100 | 100 || 150 | 50 || 50 | 150 | 200
____________________________________________________________________
Total | 500 | 500 || 650 | 350 || 800 | 200 | 1000
___________________________________________________________________
Possiamo pre-calcolare molte cose sulla nostra collezione di frutta.
Le cosiddette probabilità "precedenti". (Se non conoscessimo nessuno degli attributi del frutto, questa sarebbe la nostra ipotesi.) Questi sono i nostribase rates.
P(Banana) = 0.5 (500/1000)
P(Orange) = 0.3
P(Other Fruit) = 0.2
Probabilità di "Evidenza"
p(Long) = 0.5
P(Sweet) = 0.65
P(Yellow) = 0.8
Probabilità di "Probabilità"
P(Long|Banana) = 0.8
P(Long|Orange) = 0 [Oranges are never long in all the fruit we have seen.]
....
P(Yellow|Other Fruit) = 50/200 = 0.25
P(Not Yellow|Other Fruit) = 0.75
Dato un frutto, come classificarlo?
Diciamo che ci vengono date le proprietà di un frutto sconosciuto e ci viene chiesto di classificarlo. Ci viene detto che il frutto è lungo, dolce e giallo. È una banana? È un'arancia? O è un altro frutto?
Possiamo semplicemente eseguire i numeri per ciascuno dei 3 risultati, uno per uno. Quindi scegliamo la più alta probabilità e "classifichiamo" il nostro frutto sconosciuto come appartenente alla classe che aveva la più alta probabilità sulla base delle nostre prove precedenti (il nostro set di 1000 frutti):
P(Banana|Long, Sweet and Yellow)
P(Long|Banana) * P(Sweet|Banana) * P(Yellow|Banana) * P(banana)
= _______________________________________________________________
P(Long) * P(Sweet) * P(Yellow)
= 0.8 * 0.7 * 0.9 * 0.5 / P(evidence)
= 0.252 / P(evidence)
P(Orange|Long, Sweet and Yellow) = 0
P(Other Fruit|Long, Sweet and Yellow)
P(Long|Other fruit) * P(Sweet|Other fruit) * P(Yellow|Other fruit) * P(Other Fruit)
= ____________________________________________________________________________________
P(evidence)
= (100/200 * 150/200 * 50/200 * 200/1000) / P(evidence)
= 0.01875 / P(evidence)
Per margine schiacciante ( 0.252 >> 0.01875
), classifichiamo questo frutto dolce / lungo / giallo come probabile banana.
Perché il classificatore Bayes è così popolare?
Guarda a cosa si riduce. Solo un po 'di conteggio e moltiplicazione. Possiamo pre-calcolare tutti questi termini, e quindi la classificazione diventa facile, veloce ed efficiente.
Let z = 1 / P(evidence).
Ora calcoliamo rapidamente le seguenti tre quantità.
P(Banana|evidence) = z * Prob(Banana) * Prob(Evidence1|Banana) * Prob(Evidence2|Banana) ...
P(Orange|Evidence) = z * Prob(Orange) * Prob(Evidence1|Orange) * Prob(Evidence2|Orange) ...
P(Other|Evidence) = z * Prob(Other) * Prob(Evidence1|Other) * Prob(Evidence2|Other) ...
Assegna l'etichetta di classe di qualunque sia il numero più alto e il gioco è fatto.
Nonostante il nome, Naive Bayes risulta essere eccellente in alcune applicazioni. La classificazione del testo è un'area in cui brilla davvero.
Spero che aiuti a comprendere i concetti alla base dell'algoritmo Naive Bayes.