Introduzione al Classificatore Naive Bayes
e al suo utilizzo
Vorrei introdurvi ad un concetto fondamentale nel campo dell’Intelligenza Artificiale e del Machine Learning: il classificatore Naive Bayes.
di Alberto Montanari
Che cos’è il Classificatore Naive Bayes?
Per comprendere il classificatore (divide i dati in classi / gruppi) Naive Bayes, iniziamo con il teorema di Bayes, un principio fondamentale della probabilità che porta il nome del matematico inglese Thomas Bayes del XVIII secolo. Questo teorema ci aiuta a calcolare la probabilità che un evento accada, basandoci sul fatto che un altro evento correlato è già avvenuto.
La parola “Naive”, che in inglese significa “ingenuo”, indica una semplificazione o un’assunzione che l’algoritmo fa: ritiene che tutte le caratteristiche o gli attributi, che stiamo considerando, siano indipendenti tra loro. Anche se nella realtà gli attributi possono essere correlati, questa assunzione semplifica enormemente i calcoli e, sorprendentemente, l’algoritmo funziona molto bene in molte applicazioni pratiche.
Come Funziona il Classificatore Naive Bayes?
- Fase di Addestramento
- Fase di Predizione
Motivi per l’Utilizzo
Il classificatore Naive Bayes è ampiamente utilizzato per diversi motivi.- Semplicità: è facile da implementare e richiede un tempo di addestramento relativamente breve rispetto ad altri algoritmi più complessi.
- Efficienza: funziona bene con grandi quantità di dati, il che è essenziale nell’era dei “Big Data” e non richiede grandi capacità di calcolo.
- Versatilità: può essere applicato in vari campi e per diversi tipi di problemi.
Applicazioni Pratiche
- Filtraggio di Spam
Molti servizi di posta elettronica utilizzano questo algoritmo, come anticipato, per identificare e filtrare le email indesiderate. Analizzando parole chiave e modelli comuni nelle email di spam, il sistema può classificare automaticamente i messaggi in arrivo.
- Analisi del Sentiment
Nelle recensioni online o nei social media, il classificatore può determinare se un commento è positivo, negativo o neutro, aiutando le aziende a comprendere l’opinione pubblica sui loro prodotti o servizi.
- Diagnosi Medica
In campo sanitario, può aiutare a prevedere la probabilità che un paziente abbia una certa malattia basandosi su sintomi e risultati di esami.
- Sistemi di Raccomandazione
Piattaforme come Netflix o Amazon possono utilizzare questo algoritmo per suggerire film, serie TV o prodotti che potrebbero interessare all’utente, basandosi sul suo comportamento precedente.
Vantaggi
- Efficienza Computazionale: richiede meno risorse computazionali rispetto ad altri algoritmi più complessi.
- Buone Prestazioni: nonostante l’assunzione di indipendenza tra le caratteristiche, offre spesso risultati accurati.
- Facilità di Interpretazione: essendo basato su probabilità, è più facile da interpretare rispetto ad algoritmi “black box” come le reti neurali profonde.
Limitazioni
- Ipotesi di Indipendenza: nella realtà, le caratteristiche possono essere correlate. Ad esempio, in un testo, la presenza delle parole “neve” e “freddo” è correlata.
- Dati Categorici: funziona meglio con dati categorici piuttosto che con dati numerici continui, anche se esistono versioni modificate per gestire questo tipo di dati.
Alcune definizioni
Per rendere più concreta la comprensione di come funziona il classificatore Naive Bayes, faremo un semplice esempio pratico, ma prima ricapitoliamo i concetti chiave.- Probabilità a priori
La probabilità iniziale di un evento prima di osservare qualsiasi evidenza. Ad esempio, la probabilità che un paziente abbia l’influenza senza conoscere i suoi sintomi.
- Probabilità condizionata (a Posteriori)
La probabilità che un evento accada dato che un altro evento è già accaduto. Ad esempio, la probabilità che un paziente abbia la febbre dato che ha l’influenza.
- Enunciato del teorema
L’enunciato in maniera semplice è: La probabilità di A, dato B, è uguale alla probabilità di B, dato A, moltiplicato per la probabilità di A, il tutto diviso per la probabilità di B.
Interpretazione della Formula:
- P(A|B) Questa è la probabilità che l’evento A sia vero dato che B è vero. In altre parole, se sappiamo che B si è verificato (ad esempio, l’e-mail contiene la parola ‘offerta’), vogliamo sapere quanto è probabile che A sia vero (l’e-mail è spam).
- P(B|A) Questa è la probabilità che B sia vero se A è vero. Quindi, se sappiamo che l’e-mail è spam (A), questa probabilità ci dice quanto è probabile che contenga la parola ‘offerta’ (B).
- P(A) Questa rappresenta la probabilità a priori di A, cioè quanto è probabile che un’e-mail sia spam prima di considerare le caratteristiche specifiche (B).
- P(B) Questa è la probabilità a priori di B, ovvero quanto è probabile osservare le caratteristiche B in generale (“offerta”), indipendentemente dalla classe A.
p(B|A) = p(B)*p(A|B) / p(B)*p(A|B) + p(B’)*p(A’|B’) => 0,65*0,31 / (0,65*0,31) + (0,35*0,71) =0,45
Lascio a voi gli altri calcoli. In questo caso l’esempio è semplice e si poteva ottenere anche direttamente dalla tabella, ma se si hanno molte righe e colonne il tutto si complica parecchio.
Il machine learning ci viene però incontro e possiamo usare KNIME.
L’esercizio tratta il riconoscere se un vino è bianco o rosso partendo dalle caratteristiche chimiche.
Calcolare Naive Bayes è molto semplice. Per confronto ho aggiunto anche una Regressione Logistica e i risultati ottenuti sono molto simili con alta precisione.
https://hub.knime.com/zompazompa/spaces/Public/Esercizio_NaiveBayes_11_24~Yaw9XSMZIG4UMlyV/current-state