Il classificatore di Bayes
Se a scuola hai studiato il teorema di Bayes, ora sarà più facile per te capire come viene impiegato dagli algoritmi di intelligenza artificiale. Se non lo hai studiato, non ti preoccupare. Con un po’ di pazienza leggendo questo articolo puoi capirne il senso e vedere in pratica come i modelli di Ai se ne servono.
Il teorema di Bayes è un teorema fondamentale della teoria delle probabilità che ci permette di calcolare la probabilità condizionale di un evento dato un’altra evidenza. Formalmente, il teorema di Bayes si esprime come segue:
P(A|B) = (P(B|A) * P(A)) / P(B)
Dove:
- P(A|B) è la probabilità dell’evento A condizionata dall’evidenza B,
- P(B|A) è la probabilità dell’evidenza B condizionata dall’evento A,
- P(A) è la probabilità dell’evento A,
- P(B) è la probabilità dell’evidenza B.
Esempio: diagnosi di una malattia
Per spiegare il teorema di Bayes, possiamo considerare un esempio: immaginiamo di voler calcolare la probabilità che una persona abbia una malattia data la presenza di determinati sintomi.
Supponiamo che l’evento A sia “la persona ha la malattia” e che l’evento B sia “i sintomi sono presenti“. Vogliamo calcolare la probabilità di avere la malattia dato che i sintomi sono presenti, ovvero P(A|B).
Il primo passo consiste nel determinare la probabilità a priori dell’evento A, ovvero P(A), che rappresenta la probabilità di avere la malattia indipendentemente dalla presenza dei sintomi.
Il secondo passo consiste nel calcolare la probabilità dell’evidenza B dato l’evento A, ovvero P(B|A), che rappresenta la probabilità di avere i sintomi se si ha la malattia.
Il terzo passo consiste nel calcolare la probabilità dell’evidenza B, ovvero P(B), che rappresenta la probabilità di avere i sintomi indipendentemente dalla presenza o assenza della malattia.
Infine, si può applicare il teorema di Bayes per calcolare la probabilità condizionale P(A|B), ovvero la probabilità di avere la malattia dato che i sintomi sono presenti:
P(A|B) = (P(B|A) * P(A)) / P(B)
Dove:
- P(A|B) è la probabilità che la persona abbia la malattia dato che i sintomi sono presenti,
- P(B|A) è la probabilità che i sintomi siano presenti dato che la persona ha la malattia,
- P(A) è la probabilità che una persona abbia la malattia,
- P(B) è la probabilità che i sintomi siano presenti.
Il teorema di Bayes è particolarmente utile in situazioni in cui vogliamo aggiornare le nostre conoscenze sulla base di nuove evidenze.
Ora che abbiamo capito il teorema di Bayes vediamo come se ne servono gli algoritmi di AI
Il teorema di Bayes e gli algoritmi di AI
Il teorema di Bayes, nella sua forma condizionale, viene ampiamente utilizzato negli algoritmi di intelligenza artificiale per il ragionamento probabilistico e l’apprendimento automatico.Nell’apprendimento automatico, ad esempio nell’ambito della classificazione, l’algoritmo di Bayes (Naive Bayes) è un modello probabilistico molto popolare che si basa proprio sul teorema di Bayes. L’obiettivo di questo algoritmo è quello di classificare un’istanza in base alle caratteristiche (feature) osservate. Per applicare l’algoritmo di Bayes, si deve innanzitutto calcolare le probabilità a priori delle diverse classi basandosi sulle informazioni del dataset di addestramento. In seguito, si calcolano le probabilità condizionali di ogni caratteristica dato uno specifico valore della classe. Quando si riceve una nuova istanza da classificare, l’algoritmo utilizza il teorema di Bayes per calcolare la probabilità che l’istanza appartenga a ogni classe. La classe con la probabilità più alta viene quindi assegnata come classificazione dell’istanza. La qualificazione “naive” di questo algoritmo significa che tutte le caratteristiche siano indipendenti tra loro dato il valore della classe. Nonostante questa semplificazione, l’algoritmo di Bayes è spesso sorprendentemente efficace in molti problemi di classificazione, come ad esempio il filtraggio dello spam o la classificazione di documenti.Inoltre, il teorema di Bayes è anche utilizzato in altre aree dell’intelligenza artificiale, come la filtraggio collaborativo, l’elaborazione del linguaggio naturale, l’inferenza bayesiana e i reti bayesiane. Questi algoritmi si basano sul ragionamento probabilistico e sulla combinazione di evidenze per fare previsioni o prendere decisioni in base ai dati disponibili.
Esempio: spam o non spam?
Immaginiamo di costruire un sistema di classificazione di e-mail che determina se una e-mail è spam o non spam. Abbiamo un dataset di addestramento con 1000 e-mail, di cui 600 sono spam e 400 non spam. Ogni e-mail del dataset ha alcune caratteristiche, come la presenza di determinate parole chiave, la lunghezza del testo, ecc.
Per applicare l’algoritmo di Bayes, dobbiamo prima calcolare le probabilità a priori delle due classi: spam (S) e non spam (NS). Dal nostro dataset di addestramento, possiamo calcolare:
P(S) = Numero di e-mail spam / Numero totale di e-mail = 600 / 1000 = 0.6
P(NS) = Numero di e-mail non spam / Numero totale di e-mail = 400 / 1000 = 0.4
Ora dobbiamo calcolare le probabilità condizionali di ogni caratteristica dato uno specifico valore della classe. Ad esempio, supponiamo che abbiamo due caratteristiche: la presenza della parola “offerta” (F1) e la lunghezza del testo superiore a 1000 caratteri (F2). Per calcolare le probabilità condizionali, dobbiamo calcolare la frequenza in cui queste caratteristiche sono presenti o assenti in entrambe le classi (spam e non spam).
Supponiamo che tra le e-mail spam, 400 hanno la parola “offerta” e 200 hanno una lunghezza del testo superiore a 1000 caratteri. Tra le e-mail non spam, 100 hanno la parola “offerta” e 50 hanno una lunghezza del testo superiore a 1000 caratteri. Possiamo quindi calcolare le probabilità condizionali:
P(F1=offerta|S) = Numero di e-mail spam con la parola “offerta” / Numero di e-mail spam = 400 / 600 = 0.67
P(F2>1000|S) = Numero di e-mail spam con lunghezza > 1000 / Numero di e-mail spam = 200 / 600 = 0.33
P(F1=offerta|NS) = Numero di e-mail non spam con la parola “offerta” / Numero di e-mail non spam = 100 / 400 = 0.25
P(F2>1000|NS) = Numero di e-mail non spam con lunghezza > 1000 / Numero di e-mail non spam = 50 / 400 = 0.125
Adesso, supponiamo di ricevere una nuova e-mail da classificare. Analizziamo le caratteristiche di questa e-mail: contiene la parola “offerta” (F1) e ha una lunghezza del testo di 1200 caratteri (F2). Vogliamo determinare se questa e-mail è spam o non spam utilizzando l’algoritmo di Bayes.
Calcoliamo la probabilità che l’e-mail sia spam:
P(S|F1=offerta,F2>1000) = (P(F1=offerta|S) * P(F2>1000|S) * P(S)) / (P(F1=offerta) * P(F2>1000))
Per semplicità, supponiamo che P(F1=offerta) e P(F2>1000) siano gli stessi per entrambe le classi (quindi non influiscono sulla classificazione). Possiamo calcolare:
P(S|F1=offerta,F2>1000) = (0.67 * 0.33 * 0.6) / (P(F1=offerta,F2>1000)) = 0.1338 / (P(F1=offerta,F2>1000))
Effettuando lo stesso calcolo per la probabilità che l’e-mail sia non spam, otteniamo:
P(NS|F1=offerta,F2>1000) = (P(F1=offerta|NS) * P(F2>1000|NS) * P(NS)) / (P(F1=offerta,F2>1000)) = (0.25 * 0.125 * 0.4) / (P(F1=offerta,F2>1000)) = 0,0125 / (P(F1=offerta,F2>1000))
Infine, confrontiamo le due probabilità
P(S|F1=offerta,F2>1000) e P(NS|F1=offerta,F2>1000).
Se P(S|F1=offerta,F2>1000) è maggiore di P(NS|F1=offerta,F2>1000), classifichiamo l’e-mail come spam; altrimenti, la classifichiamo come non spam.
Nel nostro caso specifico risulta
P(S|F1=offerta,F2>1000) > P(NS|F1=offerta,F2>1000)
in quanto vale 0.1338 > 0.0125
quindi l’email è classificata come spam.
Questo esempio illustra come l’algoritmo utilizza il teorema di Bayes per calcolare la probabilità che una nuova istanza appartenga a ogni classe e come assegna la classificazione sulla base delle probabilità calcolate.
Il parametro di rischio medio
Il parametro di rischio medio è una misura che indica quanto l’algoritmo di apprendimento automatico è incline a fare predizioni errate su un insieme di dati di addestramento. In generale, un algoritmo di apprendimento con un basso parametro di rischio medio è preferibile perché indica che l’algoritmo ha buone prestazioni di generalizzazione su nuovi dati.
Nel contesto degli algoritmi di intelligenza artificiale basati sul teorema di Bayes, come l’algoritmo di Bayes, il parametro di rischio medio è strettamente collegato alla probabilità di errore di classificazione. L’obiettivo è minimizzare il parametro di rischio medio, cioè ridurre la probabilità di fare predizioni errate.
Tornando all’esempio del sistema di classificazione di e-mail spam, il parametro di rischio medio sarebbe rappresentato dalla probabilità che l’algoritmo commetta un errore di classificazione su un nuovo insieme di dati, ad esempio su e-mail che non sono presenti nel dataset di addestramento.
Supponendo che il sistema di classificazione abbia un basso parametro di rischio medio, significa che l’algoritmo ha una buona capacità di generalizzazione e fa pochi errori nella classificazione di nuove e-mail. Al contrario, se il parametro di rischio medio è alto, l’algoritmo è più incline a fare predizioni errate e commettere errori di classificazione su nuovi dati.
Un’altra relazione importante da considerare è che nel calcolo delle probabilità nel teorema di Bayes, le probabilità a priori e le probabilità condizionali (come P(F1=offerta|S) e P(F2>1000|NS)) sono calcolate utilizzando il dataset di addestramento. Quindi, la precisione delle stime di queste probabilità influenzerà direttamente il parametro di rischio medio dell’algoritmo di apprendimento. Se il dataset di addestramento è rappresentativo e fornisce una buona stima delle vere probabilità nella popolazione, allora l’algoritmo avrà una migliore capacità di classificazione e un parametro di rischio medio più basso.
Il parametro di rischio medio, anche chiamato rischio empirico, può essere calcolato utilizzando l’insieme di dati di addestramento nel contesto del classificatore di e-mail spam.
Supponiamo di avere un insieme di dati di addestramento di dimensione N. Ogni e-mail è etichettata come spam (S) o non spam (NS). Indichiamo con Yi l’etichetta corretta per l’i-esima e-mail (indica la classe), e con h(Xi) la classificazione fatta dall’algoritmo per l’i-esima e-mail.
La formulazione corretta del parametro di rischio medio è la seguente:
Rischio medio = ∑j∑i c(Yj, h(Xi)) * P(Xi, Yj)
c(Yj, h(Xi)) è la funzione di perdita che rappresenta il costo di aver classificato un elemento Xi nella classe h(Xi) quando appartiene alla classe Yj
j indice delle classi
i indice dei dati X
dove la sommatoria è eseguita su tutte le possibili combinazioni di X e Y, e P(X, Y) rappresenta la distribuzione di probabilità congiunta di X e Y: La probabilità che l’elemento X sia nella classe corretta Y
Per applicare questo calcolo nel contesto del classificatore di e-mail spam, dovremmo conoscere la distribuzione di probabilità congiunta di tutte le possibili combinazioni di caratteristiche delle e-mail (ad esempio, presenza di determinate parole chiave, lunghezza del testo, ecc.) e la corrispondente etichetta (spam o non spam).
Tuttavia, nella pratica, è molto difficile, se non impossibile, ottenere la distribuzione di probabilità congiunta esatta. Pertanto, spesso si fa un’approssimazione e si utilizza l’insieme di dati di addestramento per stimare la distribuzione di probabilità empirica.
In questo caso, il parametro di rischio medio può essere stimato come:
Rischio medio approssimato = (1/N) * ∑i c(Yi, h(Xi))
dove la sommatoria è eseguita su tutti gli esempi dell’insieme di dati di addestramento e N rappresenta la dimensione dell’insieme di dati.
Algoritmo che sceglie in base al rischio medio minimo
A partire dalla seguente formula
Rischio medio = R = ∑j∑i c(Yj, h(Xi)) * P(Xi, Yj)
consideriamo il caso di due classi ( j =1,2)
R = c11 * ∑iP(h1(Xi), Y1) + c22 * ∑iP(h2(Xi), Y2) + c21 * ∑iP(h2(Xi), Y1) + c12 * ∑iP(h1(Xi), Y2)
P(hk(Xi), Yj) probabilità che il vettore Xi appartenente alla classe Yj sia stato classificato nella classe hk
P(Yj) probabilità a priori che un elemento sia della classe Yj
cij sono le funzioni di perdita e rappresentano il costo di aver classificato un elemento nella classe hi quando appartiene alla classe Yj
ora poichè vale la seguente espressione che lega la probabilità congiunta a quella condizionata:
P(hk(Xi), Yj) = P(Yj) * P(hk(Xi)|Yj)
l’espressione del rischio medio diventa:
R = c11 * p1 ∑iP(h1(Xi)|Y1) + c22 * p2 ∑iP(h2(Xi)|Y2) + c21 * p1 ∑iP(h2(Xi)|Y1) + c12 * p2 ∑iP(h1(Xi)|Y2)
dove sono state fatte le seguenti definizioni:
p1 = P(Y1)
p2 = P(Y2)
Criterio di rischio medio minimo
Dopo alcuni passaggi (non riportati) la condizione di rischio minimo sul singolo elemento X è
se vale p1(c21 – c11) p(X|Y1) > p2(c12 – c22) p(X|Y2) -> si assegna X a Y1
se vale p1(c21 – c11) p(X|Y1) < p2(c12 – c22) p(X|Y2) -> si assegna X a Y2
(i passaggi completi li puoi trovare sul testo Neural Networks and Learning Machines di Haykin)
Assumendo una distribuzione di Gauss per le due variabili vettoriali X|Y1 e X|Y2
svolgendo alcuni passaggi matematici si vede che la precedente condizione di scelta si traduce nella seguente
f(y) = wX + b
se f(y) > 0 X sta in Y1
se f(y) < 0 X sta in Y2
dove
y = log [( p(X|Y1) / p(X|Y2)]
w = C-1(m1 – m2)
b =1/2 (m2T C-1 m2 – m1T C-1 m1)
m1 ed m2 sono i valori medi delle due distribuzioni di Gauss associate alle due variabili vettoriali X|Y1 e X|Y2
C è la matrice della covarianza e C-1 è la sua inversa.
In questa espressione riconosciamo l’operazione simile a quella di classificazione lineare del perceptron, dove w rappresenta i pesi delle connessioni sinaptiche della rete neurale.
Per maggiori dettagli sul perceptron leggi l’articolo: La prima rete neurale: il perceptron.
