Classificatore Bayesiano¶
La Storia Dietro la Matematica¶
La storia della classificazione bayesiana inizia con una delle idee più rivoluzionarie nella teoria della probabilità, formulata da un ministro presbiteriano del XVIII secolo che non pubblicò mai il suo lavoro durante la sua vita.
Thomas Bayes (1701-1761) era un ministro nonconformista a Tunbridge Wells, Inghilterra. A differenza dei matematici prominenti della sua era, Bayes lavorava in relativa oscurità, perseguendo la matematica come passione intellettuale piuttosto che come professione. Il suo lavoro più importante, "An Essay towards solving a Problem in the Doctrine of Chances," fu scoperto tra le sue carte dopo la sua morte dal suo amico Richard Price, che lo pubblicò nel 1763.
L'intuizione rivoluzionaria: Bayes mostrò come invertire le probabilità condizionali — come ragionare dagli effetti alle cause, dai dati alle ipotesi. Questo era filosoficamente radicale: significava che potevamo aggiornare le nostre credenze basandoci sulle evidenze, trattando la probabilità come misura di incertezza piuttosto che solo frequenza.
Per oltre 150 anni, le idee di Bayes rimasero controverse. La scuola frequentista dominante, guidata da figure come Ronald Fisher e Jerzy Neyman, rifiutava la nozione di probabilità come credenza soggettiva. Ma il teorema di Bayes trovò silenziosamente applicazioni pratiche.
Rinascita moderna: La rivoluzione computazionale della fine del XX secolo trasformò i metodi bayesiani da curiosità teoriche a potenze pratiche:
- 1950-60: Prime applicazioni nell'elaborazione del segnale e teoria delle decisioni
- 1980: Lo sviluppo di Markov Chain Monte Carlo (MCMC) rese fattibili calcoli bayesiani complessi
- 1990: I classificatori Naive Bayes emersero come sorprendentemente efficaci per la classificazione di testi (filtro spam)
- 2000: Le reti bayesiane divennero standard nella diagnosi medica e sistemi esperti
- 2010-presente: I metodi bayesiani sono alla base del machine learning moderno (ottimizzazione bayesiana, inferenza variazionale, programmazione probabilistica)
Perché "Naive" Bayes?: Il classificatore bayesiano più usato fa un'assunzione "naive" (ingenua) — che tutte le caratteristiche siano condizionalmente indipendenti data la classe. In altre parole: una volta che sappiamo a quale classe appartiene un esempio, conoscere il valore di una caratteristica non ci dice nulla sul valore delle altre caratteristiche.
Esempio: Nella classificazione di email come spam o non-spam, l'assunzione naive dice che se sappiamo che un'email è spam, la presenza della parola "gratis" è indipendente dalla presenza della parola "vincita". Nella realtà queste parole tendono a comparire insieme (se c'è "gratis" è più probabile che ci sia anche "vincita"), quindi l'assunzione è "naive" (ingenua).
Questa assunzione è quasi sempre sbagliata, eppure il metodo funziona notevolmente bene in pratica. Questo paradosso affascinò i ricercatori e rese Naive Bayes un benchmark fondamentale nel machine learning.
Significato filosofico: Il pensiero bayesiano rappresenta una filosofia diversa dell'inferenza: la conoscenza è incerta, le credenze dovrebbero essere quantificate come probabilità, e le evidenze dovrebbero aggiornare queste credenze in modo principiato. Questo framework ora domina campi dall'intelligenza artificiale alle neuroscienze al ragionamento giuridico.
Perché È Importante¶
I classificatori bayesiani sono fondamentali per l'apprendimento statistico moderno e sono utilizzati in:
- Filtro Email: Rilevamento spam (applicazione classica di Naive Bayes)
- Classificazione Testi: Categorizzazione documenti, analisi del sentimento, topic modeling
- Diagnosi Medica: Predizione malattie da sintomi e risultati test
- Sistemi di Raccomandazione: Filtro contenuti, predizione preferenze utente
- Bioinformatica: Classificazione proteine, analisi espressione genica
- Computer Vision: Riconoscimento oggetti, classificazione immagini
- Elaborazione Linguaggio Naturale: Tagging part-of-speech, riconoscimento entità nominate
- Rilevamento Frodi: Frodi carte credito, frodi assicurative
- Previsioni Meteo: Previsioni probabilistiche basate su condizioni atmosferiche
- Riconoscimento Vocale: Classificazione fonemi, riconoscimento parole
I classificatori bayesiani forniscono predizioni probabilistiche — non solo etichette di classe, ma stime di confidenza — rendendoli inestimabili quando la quantificazione dell'incertezza è importante.
Prerequisiti¶
- Fondamenti di Probabilità (variabili casuali, probabilità condizionale)
- Teorema di Bayes (essenziale!)
- Distribuzione di Bernoulli e distribuzioni discrete
- Distribuzione Gaussiana (per caratteristiche continue)
- Statistiche Basate su Likelihood (per stima parametri)
- Concetto di Indipendenza e indipendenza condizionale
Concetti Fondamentali¶
Costruiremo la classificazione bayesiana dai primi principi, partendo dal teorema di Bayes e derivando la regola decisionale ottimale.
Il Problema di Classificazione¶
Osserviamo: - Caratteristiche: \(\mathbf{X} = (X_1, X_2, \ldots, X_p)\) (possono essere discrete, continue, o miste) - Etichetta classe: \(Y \in \{1, 2, \ldots, K\}\) (discreta)
Obiettivo: Date nuove caratteristiche \(\mathbf{x}\), predire la classe \(y\).
Approccio bayesiano: Usare la teoria della probabilità per quantificare l'incertezza e fare predizioni ottimali.
Teorema di Bayes: Il Fondamento¶
Teorema di Bayes per classificazione:
Componenti:
- Probabilità posteriore \(P(Y = k | \mathbf{X} = \mathbf{x})\): Probabilità della classe \(k\) date le caratteristiche \(\mathbf{x}\) (ciò che vogliamo)
- Likelihood \(P(\mathbf{X} = \mathbf{x} | Y = k)\): Probabilità di osservare \(\mathbf{x}\) nella classe \(k\) (dai dati)
- Priore \(P(Y = k)\): Probabilità della classe \(k\) prima di vedere i dati (da frequenze di classe o conoscenza del dominio)
- Evidenza \(P(\mathbf{X} = \mathbf{x})\): Probabilità totale di osservare \(\mathbf{x}\) (costante di normalizzazione)
Espandendo l'evidenza usando la legge della probabilità totale:
Teorema di Bayes completo:
La Regola Decisionale Bayesiana Ottimale¶
Domanda: Date le probabilità posteriori \(P(Y = k | \mathbf{X} = \mathbf{x})\) per tutte le classi, come dovremmo classificare?
Classificatore di Bayes (chiamato anche classificatore ottimale di Bayes):
Interpretazione: Scegli la classe con la più alta probabilità posteriore.
Perché è ottimale? Questa regola minimizza la probabilità di misclassificazione.
Dimostrazione: La probabilità di errore per un classificatore \(h(\mathbf{x})\) è:
Per minimizzare l'errore, dobbiamo massimizzare \(P(h(\mathbf{X}) = Y)\). Per ogni \(\mathbf{x}\), la scelta migliore è:
Risultato: Nessun altro classificatore può raggiungere un tasso di errore inferiore al classificatore di Bayes (se conosciamo le vere probabilità).
Tasso di errore di Bayes: Il minimo tasso di errore possibile:
Questo è un limite inferiore di errore irriducibile — il meglio che qualsiasi classificatore possa fare dato lo spazio delle caratteristiche.
Semplificazione per la Classificazione¶
Poiché l'evidenza \(P(\mathbf{X} = \mathbf{x})\) è uguale per tutte le classi, possiamo ignorarla per la classificazione:
Regola di classificazione equivalente:
In parole: Moltiplica la likelihood per il priore, e scegli la classe con il prodotto più alto.
Forma logaritmica (spesso più conveniente numericamente):
Classificatore Naive Bayes¶
Il classificatore Naive Bayes è il classificatore bayesiano più usato. Fa un'assunzione semplificativa forte.
L'Assunzione di Indipendenza Naive¶
Assunzione: Le caratteristiche sono condizionalmente indipendenti data la classe:
Significato: Una volta che conosciamo la classe, conoscere il valore di una caratteristica non dà informazioni sul valore di un'altra caratteristica.
Esempio: Per la classificazione spam, questo assume che dato che un'email è spam, la presenza della parola "gratis" sia indipendente dalla presenza di "vincitore" — chiaramente falso! Eppure Naive Bayes funziona.
Perché "naive"? Questa assunzione è quasi sempre sbagliata nei dati reali, ma rende il calcolo trattabile.
Regola di Classificazione Naive Bayes¶
Sostituendo l'assunzione di indipendenza nella regola di Bayes:
Regola di classificazione:
Forma logaritmica (preferita per stabilità numerica):
Interpretazione: Somma le log-probabilità (evidenza) da ogni caratteristica più il log-priore.
Stima dei Parametri dai Dati¶
Per usare Naive Bayes, dobbiamo stimare: 1. Priori di classe \(P(Y = k)\) 2. Likelihood delle caratteristiche \(P(X_j = x | Y = k)\) per ogni caratteristica \(j\) e classe \(k\)
Dati di training: \(\{(\mathbf{x}_1, y_1), (\mathbf{x}_2, y_2), \ldots, (\mathbf{x}_n, y_n)\}\)
Stima dei Priori di Classe¶
Stima di massima likelihood:
dove \(n_k\) è il numero di esempi di training nella classe \(k\).
Interpretazione: Frazione di dati di training appartenenti alla classe \(k\).
Stima delle Likelihood delle Caratteristiche¶
Il metodo di stima dipende dal tipo di caratteristica.
Per caratteristiche discrete (es., presenza parola, variabili categoriali):
Per caratteristiche continue (es., misurazioni):
Assumi una distribuzione (tipicamente Gaussiana):
Stima parametri dai dati:
Smoothing di Laplace (Smoothing Additivo)¶
Problema: Cosa succede se un valore di caratteristica non appare mai con una classe nei dati di training?
Allora \(P(Y = k | \mathbf{X} = \mathbf{x}) \propto 0\) per qualsiasi \(\mathbf{x}\) contenente \(v\) — la classe ottiene probabilità zero!
Soluzione: Smoothing di Laplace aggiunge un piccolo pseudo-conteggio \(\alpha > 0\):
dove \(|V_j|\) è il numero di valori possibili per la caratteristica \(j\).
Scelta comune: \(\alpha = 1\) (smoothing "add-one" originale di Laplace)
Effetto: - Non assegna mai probabilità zero a eventi non visti - Regolarizza le stime (riduce l'overfitting) - Impatto minimo quando i conteggi sono grandi
Esempio Completo: Classificazione Testi¶
Problema: Classificare email come spam o ham (non spam) usando occorrenze di parole.
Dati di training:
| Classe | Contiene "gratis"? | Contiene "soldi"? | Contiene "riunione"? | |
|---|---|---|---|---|
| 1 | Spam | Sì | Sì | No |
| 2 | Spam | Sì | No | No |
| 3 | Ham | No | No | Sì |
| 4 | Ham | No | Sì | Sì |
| 5 | Spam | Sì | Sì | No |
Passo 1: Stima priori di classe.
- \(n_{\text{spam}} = 3\), \(n_{\text{ham}} = 2\), \(n = 5\)
- \(\hat{P}(Y = \text{spam}) = 3/5 = 0.6\)
- \(\hat{P}(Y = \text{ham}) = 2/5 = 0.4\)
Passo 2: Stima likelihood delle caratteristiche (con smoothing di Laplace \(\alpha = 1\)).
Per "gratis": - Spam: appare in 3/3 email spam - Ham: appare in 0/2 email ham
Similmente per "soldi":
Per "riunione":
Passo 3: Classifica una nuova email con caratteristiche: gratis=sì, soldi=no, riunione=sì.
Per spam:
Per ham:
Decisione: Poiché \(0.0384 > 0.0375\), classifica come spam.
Nota: Possiamo anche calcolare probabilità posteriori normalizzate:
L'email è 50.6% probabilmente spam.
Gaussian Naive Bayes¶
Quando le caratteristiche sono continue (misurazioni a valori reali), tipicamente assumiamo distribuzioni Gaussiane.
Modello: Per classe \(k\) e caratteristica \(j\):
Regola di classificazione:
Log-likelihood per Gaussiana:
Semplificazione (eliminando costanti indipendenti da \(k\)):
Confronto con LDA¶
Gaussian Naive Bayes vs. Analisi Discriminante Lineare:
- Naive Bayes: Assume covarianza diagonale (caratteristiche indipendenti entro ogni classe)
- LDA: Permette caratteristiche correlate (matrice di covarianza completa, condivisa tra classi)
Quando Naive Bayes è migliore: - Caratteristiche ad alta dimensionalità (\(p\) grande) - Le caratteristiche sono approssimativamente indipendenti - Dati di training limitati (meno parametri da stimare)
Quando LDA è migliore: - Le caratteristiche sono fortemente correlate - Dati di training sufficienti - L'assunzione di covarianza condivisa vale
Varianti di Classificatori Bayesiani¶
Multinomial Naive Bayes¶
Per dati di conteggio (es., conteggi parole nei documenti):
dove \(\theta_{jk} = P(\text{caratteristica } j | Y = k)\) e \(\sum_j \theta_{jk} = 1\).
Stima:
Caso d'uso: Classificazione testi con conteggi parole (più sofisticato della presenza binaria).
Bernoulli Naive Bayes¶
Per caratteristiche binarie (presenza/assenza):
Caso d'uso: Classificazione documenti con indicatori binari di parole.
Reti Bayesiane (Caso Generale)¶
Limitazione Naive Bayes: L'assunzione di indipendenza è troppo forte.
Rete bayesiana: Grafo aciclico diretto (DAG) che codifica dipendenze condizionali.
Nodi: Variabili (\(Y, X_1, \ldots, X_p\))
Archi: Dipendenze dirette
Distribuzione congiunta si fattorizza secondo il grafo:
Esempio: Tree-Augmented Naive Bayes (TAN) permette a ogni caratteristica di dipendere da al massimo un'altra caratteristica.
Perché Naive Bayes Funziona Nonostante Assunzioni Sbagliate?¶
Paradosso: L'assunzione di indipendenza naive è quasi sempre violata, eppure Naive Bayes spesso performa bene. Perché?
Spiegazione 1: Classificazione vs. Stima di Densità
- Stima di densità: Richiede \(P(Y=k|\mathbf{X})\) accurato ovunque
- Classificazione: Richiede solo \(\arg\max_k P(Y=k|\mathbf{X})\) corretto — il ranking, non le probabilità esatte
Anche se \(P(Y=k|\mathbf{X})\) è stimato male, la classe con la probabilità più alta potrebbe ancora essere corretta.
Spiegazione 2: Compromesso Bias-Varianza
- Naive Bayes ha alto bias (modello sbagliato) ma bassa varianza (pochi parametri)
- Con dati limitati, bassa varianza spesso supera l'alto bias
- Modelli complessi potrebbero fare overfitting, mentre Naive Bayes generalizza meglio
Spiegazione 3: Ridondanza delle Caratteristiche
Se caratteristiche multiple forniscono informazioni ridondanti sulla classe, l'assunzione di indipendenza potrebbe non danneggiare molto — il classificatore ottiene "voti" multipli che puntano nella stessa direzione.
Osservazione empirica: Naive Bayes è particolarmente efficace quando: - Le caratteristiche non sono troppo fortemente correlate - La dimensione del campione è piccola rispetto alla dimensione delle caratteristiche - I confini decisionali sono relativamente semplici
Classificatore Bayesiano vs. Altri Metodi¶
Bayesiano vs. Regressione Logistica¶
- Naive Bayes: Generativo (modella \(P(\mathbf{X}|Y)\) e \(P(Y)\))
- Regressione Logistica: Discriminativo (modella direttamente \(P(Y|\mathbf{X})\))
Compromesso: - Naive Bayes: Più assunzioni, meno parametri, training più veloce, migliore con pochi dati - Regressione Logistica: Meno assunzioni, più flessibile, migliore con molti dati
Ng & Jordan (2002) mostrarono: Naive Bayes raggiunge l'errore asintotico più velocemente (con meno dati), ma Regressione Logistica ha errore asintotico inferiore (con dati infiniti).
Bayesiano vs. Alberi Decisionali¶
- Bayesiano: Probabilistico, confini decisionali smooth, gestisce incertezza
- Alberi Decisionali: Non probabilistico, split allineati agli assi, regole interpretabili
Compromesso: - Bayesiano: Migliori stime di probabilità, gestisce dati mancanti naturalmente - Alberi: Gestiscono interazioni meglio, nessuna assunzione distribuzionale
Bayesiano vs. k-NN¶
- Bayesiano: Parametrico (impara parametri del modello)
- k-NN: Non parametrico (memorizza dati di training)
Compromesso: - Bayesiano: Più veloce al test time, richiede assunzioni distribuzionali - k-NN: Nessuna assunzione, ma lento al test time e memory-intensive
Considerazioni Pratiche¶
Gestione Dati Mancanti¶
Vantaggio dei metodi bayesiani: Le caratteristiche mancanti sono gestite naturalmente.
Se la caratteristica \(X_j\) manca per l'osservazione \(\mathbf{x}\), semplicemente omettila dal prodotto:
Selezione Caratteristiche¶
Non tutte le caratteristiche sono ugualmente informative. Usa informazione mutua per classificare le caratteristiche:
Seleziona caratteristiche con più alta informazione mutua con la classe.
Complessità Computazionale¶
Training: \(O(np)\) — lineare in dimensione dati e caratteristiche
Predizione: \(O(Kp)\) — lineare in classi e caratteristiche
Scalabilità: Naive Bayes scala a dataset molto grandi e spazi di caratteristiche ad alta dimensione.
Confidenza e Calibrazione¶
Probabilità posteriori \(P(Y = k | \mathbf{X})\) possono essere interpretate come confidenza.
Problema: Le probabilità di Naive Bayes sono spesso mal calibrate (troppo estreme — troppo vicine a 0 o 1).
Perché? L'assunzione di indipendenza causa overconfidence quando le caratteristiche sono correlate.
Soluzione: Applica metodi di calibrazione: - Platt scaling (fit regressione logistica a punteggi Naive Bayes) - Regressione isotonica (fit funzione monotona a punteggi)
Variabili e Simboli¶
| Simbolo | Nome | Descrizione |
|---|---|---|
| \(Y\) | Variabile classe | Etichetta classe discreta \(\in \{1, \ldots, K\}\) |
| \(\mathbf{X}\) | Vettore caratteristiche | \((X_1, \ldots, X_p)\) caratteristiche |
| \(K\) | Numero classi | Totale classi |
| \(p\) | Numero caratteristiche | Dimensionalità |
| \(P(Y=k)\) | Priore | Probabilità classe \(k\) prima di vedere dati |
| \(P(\mathbf{X}\|Y=k)\) | Likelihood | Probabilità caratteristiche data classe \(k\) |
| \(P(Y=k\|\mathbf{X})\) | Posteriore | Probabilità classe \(k\) date caratteristiche |
| \(\hat{y}\) | Classe predetta | \(\arg\max_k P(Y=k\|\mathbf{X})\) |
| \(\alpha\) | Parametro smoothing | Pseudo-conteggio smoothing Laplace |
Concetti Correlati¶
- Teorema di Bayes — Fondamento della classificazione bayesiana
- Statistiche Basate su Likelihood — Stima parametri
- Analisi Discriminante Lineare — Classificatore Gaussiano correlato
- Regressione Logistica — Alternativa discriminativa
- Distribuzione di Bernoulli — Per caratteristiche binarie
- Distribuzione Gaussiana — Per caratteristiche continue
- Curva ROC — Valutazione prestazioni classificatore
Riferimenti Storici e Moderni¶
- Bayes, T., & Price, R. (1763). "An Essay towards solving a Problem in the Doctrine of Chances." Philosophical Transactions of the Royal Society, 53, 370-418.
- Maron, M. E. (1961). "Automatic Indexing: An Experimental Inquiry." Journal of the ACM, 8(3), 404-417. [Prima applicazione alla classificazione testi]
- Duda, R. O., & Hart, P. E. (1973). Pattern Classification and Scene Analysis. Wiley.
- Domingos, P., & Pazzani, M. (1997). "On the Optimality of the Simple Bayesian Classifier under Zero-One Loss." Machine Learning, 29(2-3), 103-130.
- Ng, A. Y., & Jordan, M. I. (2002). "On Discriminative vs. Generative Classifiers: A comparison of logistic regression and naive Bayes." NIPS 14, 841-848.
- Murphy, K. P. (2012). Machine Learning: A Probabilistic Perspective. MIT Press. [Capitolo 3]
- Hastie, T., Tibshirani, R., & Friedman, J. (2009). The Elements of Statistical Learning (2nd ed.). Springer. [Capitolo 6.6.3]