• Home
  • Chi sono
  • Risorse
  • Contatti
  • Approfondimenti
  • Cerca nel sito

Lorenzo Govoni

Business e Tecnologia

  • Big Data
  • Business
  • Excel
  • Intelligenza Artificiale

Introduzione all’algoritmo Naive Bayes

Naive Bayes

Nel machine learning siamo spesso interessati a scegliere, quale che sia, la migliore ipotesi (A) da dei dati forniti (B).

In un problema di classificazione, la nostra ipotesi (A) potrebbe essere la classe da assegnare per una nuova istanza di dati (B) che si vuol prevedere.

Uno dei modi più semplici per determinare l’ipotesi preferibile avendo già a disposizione dei dati è quello di usare il Teorema di Bayes, che fornisce un modo per calcolare la probabilità di un’ipotesi in base alla nostra conoscenza precedente.

Un algoritmo che utilizza il teorema di Bayes per questo scopo è il Naive Bayes. Prima di vedere cos’è e come utilizzarlo vediamo di spiegare il teorema di Bayes, senza la cui comprensione, risulta difficile comprendere i principi di funzionamento dell’algoritmo.

 

Cos’è il teorema di Bayes?

In statistica e teoria delle probabilità, il teorema di Bayes descrive la probabilità di un evento, in base alla conoscenza preliminare delle condizioni che potrebbero essere correlate all’evento. Serve come un modo per capire la probabilità condizionata.

Essenzialmente, il teorema consente di aggiornare un’ipotesi ogni volta che viene introdotta una nuova evidenza. L’equazione che la rappresenta è la seguente:

Con:

“P” = simbolo per indicare la probabilità.

P (A | B) = La probabilità dell’evento A (ipotesi) verificatasi dato che B (evidenza) si è verificata. Essa viene definita anche come probabilità posteriore.

P (B | A) = La probabilità che l’evento B (evidenza) si verifichi dato che A (ipotesi) si è verificata.

P (B) = La probabilità dell’evento B (ipotesi) che si verifichi. 

P (A) = La probabilità dell’evento A (evidenza) che si verifichi. Essa viene anche chiamata “probabilità precedente” perché è la conoscenza che abbiamo del valore di A prima di guardare le osservabili B.

 

Esempio

Ipotizziamo il lancio di due dadi e immaginiamo le seguenti ipotesi:

  • L’evento B indica “ottenere un solo 2 dal lancio dei due dadi”;
  • Nello spazio degli eventi ci sono in tutto 36 possibili esiti, tutti equiprobabili;
  • Tra i 36 possibili esiti solo 11 (2,1; 2,2; 2,3; 2,4; 2,5; 2,6; 1,2; 3,2; 4,2; 5,2; 6,2) di questi sono favorevoli al realizzarsi dell’evento B.

Di conseguenza, P (B) = 11/36 = 30,56%

Ipotizzando ora che l’evento A rappresenti la possibilità di “ottenere 7 come somma dal lancio dei due dadi” abbiamo che:

  • Tra i 36 possibili esiti solo 6 (1,6; 2,5; 3,4; 4,3; 5,2; 6,1) di questi sono favorevoli al realizzarsi dell’evento A.

Quindi, P(A) = 6/36 = 16,67%.

Per calcolare la probabilità condizionata ai due eventi, occorre trovare quali delle 6 possibilità dell’evento A (“ottenere 7 come somma dal lancio dei due dadi”), siano incluse nell’evento B (“ottenere un solo 2 dal lancio dei due dadi”). Siccome dentro A ci sono solo i possibili casi 2,5 e 5,2 che l’evento B sia verificato, abbiamo che:

P(B|A) = 2 / 6 = 33,33%

Applicando ill teorema di Bayes otteniamo:

P(A|B) = P(B|A) * P(A) / P(B) = 2/6 * 6/36 / (11/36) = 2/11 = 18,18%

Ciò significa che quasi 2 volte su 10 otteniamo come somma dal lancio dei due dadi 7 (con valore 2 dal primo lancio e 5 dal secondo lancio o viceversa, 5 dal primo lancio e 2 dal secondo lancio).

 

 

Naive Bayes

Naive Bayes è un algoritmo di apprendimento supervisionato adatto a risolvere problemi di classificazione binari (a due classi) e multi-classe.

La peculiarità principale dell’algoritmo, oltre ad avvalersi del teorema di Bayes, è che si basa sul fatto che tutte le caratteristiche non siano correlate l’una all’altra. La presenza o l’assenza di una caratteristica non influenzano la presenza o l’assenza di altre.

Wikipedia esprime questo fatto con il seguente esempio:

“Un frutto può essere considerato una mela se è rosso, rotondo e di circa 4″ di diametro. Anche se queste caratteristiche dipendono l’una dall’altra o dall’esistenza di altre caratteristiche, un classificatore Naive Bayes considera tutte queste proprietà come indipendenti per la probabilità che questo frutto sia una mela.”

Nei dataset reali, ciò può creare confusione in quanto i calcoli iniziano a diventare complicati. Per semplificare il lavoro, l’approccio di indipendenza delle caratteristiche viene utilizzato per “separare” prove multiple e trattarle come indipendenti.

Pertando la probabilità,

P(B1,B2,B3,…,Bn| A)

Può essere tradotta in:

P(B1|A) * P(B2|A) * P(B3|A) *…* P(Bn|A)

 

Come funziona il Naive Bayes?

Il Naive Bayes viene spesso descritto utilizzando dati categoriali poiché è facile da descrivere e calcolare utilizzando i rapporti. Secondo questo approccio basta calcolare delle probabilità.

Gli step da seguire sono:

1) Calcolo della probabilità della classe: Le probabilità di classe sono semplicemente le frequenze delle istanze che appartengono a ciascuna classe divisa per il numero totale di istanze.

2) Calcolo della probabilità condizionata: si applica il teorema di Bayes, per determinare le probabilità condizionate delle caratteristiche del problema.

3) Prendere una decisione: si calcola la probabilità per prevedere la classe di appartenenza della nuova istanza rispettando la verifica dell’indipendenza delle caratteristiche. La decisione finale è identificata nella classe che ottiene il valore di probabilità più elevato.

Vediamo subito un esempio per capirci meglio.

Esempio Naive Bayes con dati categoriali

Immaginiamo di utilizzare l’esempio visto per l’algoritmo Cart: un problema di classificazione che permette di identificare se possiamo giocare a tennis un giorno oppure no a seconda delle caratteristiche meteo, temperatura, vento e umidità.

 

 

Possiamo subito trovare la probabilità della classe giocare e non giocare (step 1). Dividendo le frequenze dei si (5) e dei no (9) per il totale delle istanze (14) troviamo:

  • 9 / 14 -> probabilità di giocare;
  • 5 / 14 -> probabilità di non giocare.

Successivamente, creiamo una tabella di frequenza usando ogni caratteristica del set di dati. Determiniamo la frequenza dei Si e la frequenza dei No nelle caratteristiche e regole analizzate come mostrato da successiva immagine:

 

 

Per ogni tabella di frequenza, generiamo una tabella di probabilità, che ci permetterà di calcolare la probabilità condizionata delle caratteristiche (step 2). Partendo dalla tabella meteo abbiamo:

 

 

La probabilità “Soleggiato” dato “Sì” rappresenta il numero di istanze per cui è soleggiato e si prevede di andare a giocare (2 volte rispetto alle 9 volte che è previsto il si).

La probabilità “Soleggiato” rappresenta il numero di istanze per cui è soleggiato (5) rispetto al totale delle istanze (14).

La probabilità “Si” indica il numero di istanze che prevedo di andare a giocare (9) rispetto al totale (14).

Pertanto, la probabilità di “Sì” dato “Soleggiato” è:

P (Sì | Soleggiato) = P (Soleggiato | Si) * P (Si) / P (Soleggiato) = (0,2222 x 0,6429) /0,3571 = 0,4

 

 

Allo stesso modo la probabilità “Soleggiato” dato “No” rappresenta il numero di istanze per cui è soleggiato e non si prevede di andare a giocare (3 volte rispetto alle 5 volte che è previsto il no).

La probabilità “Soleggiato” rappresenta il numero di istanze per cui è soleggiato (5) rispetto al totale delle istanze (14). Di fatto non cambia rispetto a prima.

La probabilità “No” indica il numero di istanze che non prevedo di andare a giocare (5) rispetto al totale (14).

Quindi la probabilità di “No” dato “Soleggiato” è:

P (No | Soleggiato) = P (Soleggiato | No) * P (No) / P (Soleggiato) = (0,6 x 0,3571) /0,3571 = 0,60

Per quanto riguarda la tabella temperatura abbiamo:

 

 

La probabilità “Caldo” dato “Sì” rappresenta il numero di istanze per cui è caldo e si prevede di andare a giocare (2 volte rispetto alle 9 volte che è previsto il si).

La probabilità “Caldo” rappresenta il numero di istanze per cui è caldo (4) rispetto al totale delle istanze (14).

La probabilità “Si” indica il numero di istanze che prevedo di andare a giocare (9) rispetto al totale (14).

La probabilità di “Sì” dato “Caldo” è:

P (Sì | Caldo) = P (Caldo | Si) * P (Si) / P (Caldo) = (0,2222 x 0,6429) /0,2857 = 0,5

 

 

Allo stesso modo la probabilità “Caldo” dato “No” rappresenta il numero di istanze per cui è caldo e non si prevede di andare a giocare (2 volte rispetto alle 5 volte che è previsto il no).

La probabilità “Caldo” rappresenta il numero di istanze per cui è caldo (4) rispetto al totale delle istanze (14). Di fatto non cambia rispetto a prima.

La probabilità “No” indica il numero di istanze che non prevedo di andare a giocare (5) rispetto al totale (14).

Quindi la probabilità di “No” dato “Caldo” è:

P (No | Caldo) = P (Caldo | No) * P (No) / P (Caldo) = (0,4 x 0,3571) / 0,2857 = 0,5

Procedendo come appena visto otteniamo le tabelle di probabilità e rispettive probabilità condizionate per la tabella Umidità e Vento.

 

 

Una volta analizzato il dataset è possibile procedere a prendere decisioni (step 3).

Supponiamo che domani il meteo ci dia i seguenti valori:

Meteo = Pioggia
Temperatura = Caldo
Umidità = Elevata
Vento = Debole
Giocare =?

Vogliamo pronosticare se “domani possiamo giocare a tennis o meno”.

Probabilità di “Sì” (= di giocare domani) = P (Meteo = Pioggia | Sì) * P (Temperatura = Caldo | Si) * P (Umidità = Elevata | Sì) * P (Vento = Debole | Sì) * P (Sì) = 3/9 * 2/9 * 3/9 * 6/9 * 9/14 = 0,0106

Probabilità di “No” (= di non giocare domani) = P (Meteo = Pioggia | No) * P (Temperatura = Caldo | No) * P (Umidità = Elevata | No) * P (Vento = Debole | No) * P (No) = 2/5 * 2/5 * 4/5 * 2/5 * 5/14 = 0,0183

Se normalizziamo otteniamo che:

P (Si) = 0,0106 / (0,0106 + 0,0183) = 36,68%

P (No) = 0,0183 / (0,0106 + 0,0183) = 63,32%

Ciò significa che secondo il 63,32% di probabilità domani non giocheremo.

 

Conclusione

In questo articolo abbiamo introdotto il Teorema di Bayes, che permette di calcolare la probabilità di un evento condizionata ad un altro evento.

Successivamente abbiamo visto l’algoritmo Naive Bayes per dati categoriali, mostrando un esempio per comprenderne il funzionamento.

Nel prossimo articolo vediamo come è possibile utilizzare il classificatore Naive Bayes, qualora si dovessero utilizzare dataset numerici. 

  • Naive Bayes in linguaggio Python
    Naive Bayes in linguaggio Python
  • Classificatore Naive Bayes Gaussiano
    Classificatore Naive Bayes Gaussiano
  • 8 algoritmi diffusi nel machine learning
    8 algoritmi diffusi nel machine learning
  • Introduzione alla funzione di massima verosimiglianza
    Introduzione alla funzione di massima verosimiglianza
Share
Pin
Share
Tweet

Intelligenza Artificiale Classificazione, Machine Learning

  • Home
  • Archivio
  • Risorse
  • Newsletter
  • Cerca nel sito

Copyright © 2021 · Lorenzo Govoni - Privacy Policy