Algoritmo Naive Bayes nell'apprendimento automatico
Algoritmo di classificazione Naive Bayes
Il classificatore è un algoritmo di apprendimento automatico che categorizza i dati in una o più "classi" di un set. Il classificatore di posta elettronica è un esempio di classificatore che analizza le e-mail per filtrarle in base all'etichetta di classe: Spam o Non Spam.
Il classificatore Naive Bayes nell'apprendimento automatico è un apprendimento automatico supervisionato per attività di classificazione.
Naive Bayes viene utilizzato per risolvere problemi di classificazione. Prevede sulla base della probabilità di un oggetto. Naive Bayes si basa sul teorema di Bayes ed è utilizzato principalmente per la classificazione del testo. Naive Bayes è un algoritmo di classificazione probabilistico facile da implementare e veloce da addestrare.
Poiché il classificatore Naive Bayes si basa sul teorema di Bayes, è noto come classificatore di probabilità. Prevede in base alla probabilità di un elemento.
Motivo per essere chiamato Naïve Bayes?
Il classificatore Naive Bayes ha due parole: Naive e Bayes. Perché Navie? Questo algoritmo tratta tutte le frasi di parole come uguali. Ad esempio, "Tu sei" e "Sei tu" sono gli stessi per questo algoritmo. Non dipende dalle funzionalità o dalla presenza di funzionalità. Se vuoi identificare il frutto Mela allora devi avere il colore rosso, la forma sferica, il sapore dolce per riconoscerla come una Mela. Significa che queste funzionalità sono indipendenti l'una dall'altra.
- Il classificatore Naive Bayes presuppone che le caratteristiche siano indipendenti l'una dall'altra. Poiché ciò è raramente possibile nei dati della vita reale, il classificatore è chiamato ingenuo.
- Questo algoritmo di classificazione si basa sul teorema di Bayes noto come Naive Bayes Classifier.
Teorema di Bayes ingenuo
Il teorema di Bayes viene utilizzato per trovare la probabilità di un'ipotesi con probabilità condizionali dipendenti dalla conoscenza precedente. Questo teorema prende il nome da Thomas Bayes. Il classificatore Naive Bayes funziona secondo il principio della probabilità condizionata, come indicato dal teorema di Bayes.
Per comprendere il teorema di Bayes, diamo un'occhiata a un semplice esempio di classificatore di Bayes ingenuo del lancio di due monete. Possiamo ottenere questi spazi campione lanciando due monete: {HH, HT, TH, TT}. Quindi, le probabilità di questi eventi saranno:
- Ottenere due teste = 1/4
- Almeno una coda = 3/4
- La seconda moneta è testa dato che la prima moneta è coda = 1/2
- Ottenere due teste data la prima moneta è una testa = 1/2
Il teorema di Bayes calcola la probabilità che un evento accada in base alla probabilità di un evento diverso che si è già verificato. La formula del teorema di Bayes è data come:
P(A|B) = (P(B|A) * P(A)) / P(B)
P(A|B) Probabilità che si verifichi anche A quando anche B si è già verificato. La probabilità P(B) non dovrebbe essere zero.
- Devi trovare la probabilità dell'evento A, che viene data quando l'evento B (prova) è vero.
- P(A) è a priori (a priori, cioè la probabilità di un evento osservato prima della dimostrazione) di A. Qui l'evento B è il valore di un'istanza sconosciuta.
- P(A|B) è la probabilità a posteriori dell'evento B, cioè la probabilità dell'evento dopo aver esaminato le prove.
Esempio funzionante del classificatore di Naïve Bayes
Prendiamo un esempio di shopping per comprendere il funzionamento del Bayes Naive Classifier. In questo set di dati è presente un piccolo set di dati di esempio di 30 righe per questo esempio.
dataset
Il problema è prevedere se una persona acquisterà un prodotto in una specifica combinazione di giorno, sconto e consegna gratuita utilizzando il teorema di Naive Bayes.
Passo 1) Creeremo tabelle di frequenza per ciascun attributo utilizzando i tipi di input menzionati nel set di dati, come giorni, sconto e consegna gratuita.
Lascia che l'evento "Acquista" venga indicato come "A" e le variabili indipendenti, vale a dire "Sconto", "Consegna gratuita" e "Giorno", indicate come "B". Utilizzeremo questi eventi e variabili per applicare il teorema di Bayes.
Passo 2) Ora calcoliamo le tabelle delle probabilità una per una.
Esempio 1:
Sulla base di questa tabella di probabilità, calcoleremo le probabilità condizionali come di seguito.
P(A) = P(No Buy) = 6/30 = 0.2 P(B) = P(Weekday) = 11/30 = 0.37 P(B/A) = P(Weekday / No Buy) = 2/6 = 0.33
E trova P(A/B) usando il teorema di Bayes,
P(A/B) = P(No Buy / Weekday) = P(Weekday / No Buy) * P(No Buy) / P(Weekday) = (2/6 * 6/30) / (11/30) = 0.1818
Allo stesso modo, se A è Acquista, allora
= P(Buy / Weekday) = P(Weekday / Buy) * P(Buy) / P(Weekday) = (9/24 * 24/30) / (11/30) = 0.8181
Nota: Poiché P(Acquista | Giorno feriale) è maggiore di P(Nessun acquisto | Giorno feriale), possiamo concludere che molto probabilmente un cliente acquisterà il prodotto in un giorno feriale.
Passo 3) Allo stesso modo possiamo calcolare la probabilità che si verifichi un evento sulla base di tutte e tre le variabili. Ora calcoleremo le tabelle di probabilità per tutte e tre le variabili utilizzando le tabelle di frequenza sopra indicate.
Esempio 2:
Ora, utilizzando queste tre tabelle di probabilità, calcoleremo se è probabile che un cliente effettui un acquisto in base a una combinazione specifica di "Giorno", "Sconto" e "Consegna gratuita".
Qui, prendiamo una combinazione di questi fattori:
- Giorno = Festività
- Sconto = sì
- Consegna gratuita = Sì
Quando, A = Acquista
Calcola la probabilità condizionata di acquisto nella seguente combinazione di giorno, sconto e consegna gratuita.
Dove B è:
- Giorno = Festività
- Sconto = sì
- Consegna gratuita = Sì
E A = Acquista
Perciò,
= P(A/B) = P(Buy / Discount=Yes, Day=Holiday, Free Delivery=Yes) = ( P(Discount=(Yes/Buy)) * P(Free Delivery=(Yes/Buy)) * P(Day=(Holiday/Buy)) * P(Buy) ) / ( P(Discount=Yes) * P(Free Delivery=Yes) * P(Day=Holiday) ) = (19/24 * 21/24 * 8/24 * 24/30) / (20/30 * 23/30 * 11/30) = 0.986
Quando, A = Nessun acquisto
Allo stesso modo, calcola la probabilità condizionata di acquisto nella seguente combinazione di giorno, sconto e consegna gratuita.
Dove B è:
- Giorno = Festività
- Sconto = sì
- Consegna gratuita = Sì
E A = Nessun acquisto
Perciò,
= P(A/B) = P(No Buy / Discount=Yes, Day=Holiday, Free Delivery=Yes) = ( P(Discount=(Yes/No Buy)) * P(Free Delivery=(Yes/No Buy)) * P(Day=(Holiday/No Buy)) * P(No Buy) ) / ( P(Discount=Yes) * P(Free Delivery=Yes) * P(Day=Holiday) ) = (1/6 * 2/6 * 3/6 * 6/30) / (20/30 * 23/30 * 11/30) = 0.027
Passo 4) Quindi,
Probabilità di acquisto = 0.986
Probabilità di non acquisto = 0.027
Infine, abbiamo probabilità condizionate di acquistare in questo giorno. Generalizziamo ora queste probabilità per ottenere la Probabilità degli eventi.
- Somma delle probabilità = 0.986 + 0.027 = 1.013
- Probabilità di acquisto = 0.986 / 1.013 = 97.33 %
- Probabilità di non acquisto = 0.027 / 1.013 = 2.67 %
Si noti che, poiché il 97.33% è maggiore del 2.67%. Possiamo concludere che il cliente medio acquisterà in vacanza con uno sconto e consegna gratuita.
Tipi di modello Naïve Bayes
Esistono molti tipi di classificatori Naive Bayes. Qui abbiamo discusso i classificatori multinomiali, Bernoulli e gaussiani Naive Bayes.
1. Bayes ingenuo multinomiale
Questo tipo di modello Naive Bayes viene utilizzato per problemi di classificazione dei documenti. Funziona con funzionalità che rappresentano la frequenza delle parole in un documento. Il classificatore considera la occorrenza e il conteggio delle parole per determinare la probabilità che un documento appartenga a una categoria specifica, come sport, politica o tecnologia.
2. Bernoulli Ingenuo Bayes
Questo è simile al multinomiale Naive Bayes. Il classificatore Bernoulli Naive Bayes viene utilizzato per attività di classificazione dei documenti. Tuttavia, utilizza predittori booleani. Rappresenta se una parola è presente o meno e assume solo valori Sì o No. Il classificatore calcola le probabilità in base al fatto che una parola sia presente o meno nel testo.
3. Bayes ingenuo gaussiano
Questo classificatore viene utilizzato in caso di valore continuo ma non di valore discreto. Questo classificatore calcola le probabilità utilizzando i parametri di Gaussiana distribuzione, cioè media e varianza.
La formula per la probabilità condizionata cambia in,
Vantaggi e limiti del classificatore Naive Bayes
Esistono vari vantaggi e svantaggi dell’algoritmo Naive Bayes nell’apprendimento automatico.
Vantaggi del classificatore Naive Bayes
- Semplicità ed efficienza: Naive Bayes è semplice e facile da addestrare e implementare. È efficiente a causa del basso costo computazionale. Può gestire in modo efficiente set di dati di grandi dimensioni.
- Allenamento veloce e previsione: Naive Bayes non richiede tanti dati di addestramento a causa dell'indipendenza tra le funzionalità. Può prevedere rapidamente una volta addestrato il modello.
- Scalabilità: Naive Bayes può gestire set di dati ad alta dimensione con un gran numero di funzionalità. Funziona bene anche quando il numero di funzionalità è maggiore del numero di esempi di formazione. Si adatta al numero di punti dati e predittori. Gestisce sia dati continui che discreti.
- Robustezza rispetto a caratteristiche irrilevanti: Non è sensibile alle caratteristiche irrilevanti.
- Funziona bene con piccoli set di allenamento: Naive Bayes può fornire risultati ragionevoli anche con dati di addestramento limitati. Può gestire situazioni in cui il numero di istanze di training è ridotto. Non richiede tanti dati di addestramento.
Limitazione del classificatore Naive Bayes
L'ingenuo Bayes dentro machine learning presuppone che tutte le caratteristiche siano indipendenti l'una dall'altra. Pertanto, non può apprendere le relazioni tra le diverse caratteristiche dei dati. Tratta ogni caratteristica come se non avesse alcuna relazione con le altre.
Per superare questo problema, è possibile utilizzare Alberi decisionali, Random Forests, Support Vector Machines (SVM), Neural Networks ecc. Questi algoritmi hanno la capacità di apprendere relazioni e dipendenze complesse tra le caratteristiche nei dati. Quindi possono prevedere risultati più accurati.
Applicazioni del classificatore Naive Bayes
Poiché questo algoritmo è veloce ed efficiente, puoi utilizzarlo per fare previsioni in tempo reale.
Rilevamento spam
Servizi di posta elettronica (come Gmail) usano questo algoritmo per determinare se un'email è spam. Questo algoritmo è eccellente per il filtraggio dello spam.
Analisi del sentimento
Può classificare il testo come positivo, negativo o neutro in base a caratteristiche come la scelta delle parole, la struttura della frase e il contesto. Trova applicazioni nel monitoraggio dei social media, nelle recensioni dei clienti e nelle ricerche di mercato.
Classificazione dei documenti
Può classificare i documenti in categorie come sport, politica, tecnologia o finanza in base alla frequenza o alla presenza di parole o caratteristiche specifiche all'interno del documento.
Sistemi di raccomandazione
Può analizzare le preferenze dell'utente, i dati storici e le caratteristiche degli articoli per prevedere gli interessi o le preferenze dell'utente per consigliare prodotti, film o articoli.
Questo algoritmo di classificazione viene utilizzato anche nel riconoscimento facciale, nelle previsioni meteorologiche, nella diagnosi medica, negli acquisti, nella classificazione delle notizie, ecc. È possibile implementare Naive Bayes in Python. Esiste il classificatore Naive Bayes sklearn, ovvero sklearn.naive_bayes. È il modulo che implementa questo algoritmo.
Conclusione
Gli algoritmi Naive Bayes nell'apprendimento automatico sono classificatori utilizzati principalmente nel rilevamento dello spam, nella classificazione delle notizie, nell'analisi del sentiment, nelle previsioni del tempo, negli acquisti, ecc. Gli algoritmi Naive Bayes si basano sul Teorema di Bayes. Questo algoritmo è semplice e facile da implementare. Poiché è veloce, possiamo usarlo in applicazioni in tempo reale. Il suo più grande svantaggio è che assume caratteristiche indipendenti (poiché le caratteristiche indipendenti sono raramente possibili nella vita reale, è noto come Naive). Tratta ogni caratteristica come uguale. Per superare questo inconveniente è possibile utilizzare altri classificatori come Decision Tree, Random Forest, Support Vector Machine (SVM) ecc.