logo

Algoritme classificador de Bayes naïf

  • L'algoritme Naïve Bayes és un algorisme d'aprenentatge supervisat, que es basa en Teorema de Bayes i s'utilitza per resoldre problemes de classificació.
  • S'utilitza principalment en classificació de textos que inclou un conjunt de dades d'entrenament d'alta dimensió.
  • Naïve Bayes Classifier és un dels algorismes de classificació senzills i eficaços que ajuda a crear models ràpids d'aprenentatge automàtic que poden fer prediccions ràpides.
  • És un classificador probabilístic, és a dir, prediu sobre la base de la probabilitat d'un objecte.
  • Alguns exemples populars de Naïve Bayes Algorithm són filtració de correu brossa, anàlisi sentimental i classificació d'articles .

Per què es diu Naïve Bayes?

L'algorisme de Naïve Bayes està format per dues paraules Naïve i Bayes, que es poden descriure com:

    Naïf: S'anomena Naïve perquè suposa que l'aparició d'una determinada característica és independent de l'aparició d'altres característiques. Com si la fruita s'identifiqui en base al color, la forma i el gust, llavors la fruita vermella, esfèrica i dolça es reconeix com una poma. Per tant, cada característica contribueix individualment a identificar que és una poma sense dependre l'una de l'altra.Bayes: Es diu Bayes perquè depèn del principi del teorema de Bayes .

Teorema de Bayes:

  • El teorema de Bayes també es coneix com Regla de Bayes o llei de Bayes , que s'utilitza per determinar la probabilitat d'una hipòtesi amb coneixements previs. Depèn de la probabilitat condicional.
  • La fórmula del teorema de Bayes es dóna com:
Algoritme classificador de Bayes naïf

On,

P(A|B) és la probabilitat posterior : Probabilitat de la hipòtesi A sobre l'esdeveniment observat B.

P(B|A) és la probabilitat de versemblança : Probabilitat de l'evidència donat que la probabilitat d'una hipòtesi és certa.

P(A) és la probabilitat prèvia : Probabilitat de la hipòtesi abans d'observar l'evidència.

P(B) és la probabilitat marginal : Probabilitat d'evidència.

Funcionament del classificador de Naïve Bayes:

El funcionament del classificador de Naïve Bayes es pot entendre amb l'ajuda de l'exemple següent:

sistema operatiu de xarxa

Suposem que tenim un conjunt de dades de les condicions climàtiques i la variable objectiu corresponent ' Jugar '. Per tant, utilitzant aquest conjunt de dades hem de decidir si hem de jugar o no un dia determinat segons les condicions meteorològiques. Per tant, per resoldre aquest problema, hem de seguir els passos següents:

  1. Converteix el conjunt de dades donat en taules de freqüències.
  2. Genereu una taula de probabilitats trobant les probabilitats de les característiques donades.
  3. Ara, utilitzeu el teorema de Bayes per calcular la probabilitat posterior.

Problema : Si el temps és assolellat, el jugador hauria de jugar o no?

Solució : Per resoldre-ho, primer considereu el conjunt de dades següent:

Perspectiva Jugar
0 Plujós
1 Assolellat
2 Ennuvolat
3 Ennuvolat
4 Assolellat No
5 Plujós
6 Assolellat
7 Ennuvolat
8 Plujós No
9 Assolellat No
10 Assolellat
11 Plujós No
12 Ennuvolat
13 Ennuvolat

Taula de freqüències per a les condicions meteorològiques:

El temps No
Ennuvolat 5 0
Plujós 2 2
Assolellat 3 2
Total 10 5

Condició meteorològica de la taula de probabilitats:

El temps No
Ennuvolat 0 5 5/14= 0.35
Plujós 2 2 4/14=0.29
Assolellat 2 3 5/14=0.35
Tots 4/14=0.29 10/14=0.71

Aplicant el teorema de Bayes:

P(Sí|Asolellat)= P(Asolellat|Sí)*P(Sí)/P (Asolellat)

P(Asolellat|Sí)= 3/10= 0,3

P(Asolellat)= 0,35

P(Sí)=0,71

log4j

Així P(Sí|Asolellat) = 0,3*0,71/0,35= 0.60

P(No|Asolellat)= P(Asolellat|No)*P(No)/P(Asolellat)

P(Asolellat|NO)= 2/4=0,5

P(No)= 0.29

P(Asolellat)= 0,35

Així P(No|Asolellat)= 0,5*0,29/0,35 = 0.41

Així, com podem veure del càlcul anterior que P(Sí|Asolellat)>P(No|Asolellat)

Per tant, en un dia assolellat, el jugador pot jugar el joc.

Avantatges del classificador Naïve Bayes:

  • Naïve Bayes és un dels algorismes de ML ràpids i fàcils per predir una classe de conjunts de dades.
  • Es pot utilitzar per a classificacions binàries i multiclasse.
  • Funciona bé en prediccions multiclasse en comparació amb els altres algorismes.
  • És l'opció més popular per a problemes de classificació de textos .

Desavantatges del classificador de Bayes naïf:

  • Naive Bayes assumeix que totes les característiques són independents o no estan relacionades, de manera que no pot aprendre la relació entre característiques.

Aplicacions del classificador Naïve Bayes:

  • S'utilitza per Puntuació de crèdit .
  • S'utilitza en Classificació de dades mèdiques .
  • Es pot utilitzar en prediccions en temps real perquè Naïve Bayes Classifier és un aprenent amb ganes.
  • S'utilitza en la classificació de text com ara Filtre de correu brossa i Anàlisi de sentiments .

Tipus de model de Bayes naïf:

Hi ha tres tipus de model de Bayes ingenu, que es donen a continuació:

    Gaussià: El model gaussià suposa que les característiques segueixen una distribució normal. Això vol dir que si els predictors prenen valors continus en lloc de discrets, aleshores el model assumeix que aquests valors es mostren a partir de la distribució gaussiana.Multinomial: El classificador Multinomial Naïve Bayes s'utilitza quan les dades estan distribuïdes multinomialment. S'utilitza principalment per a problemes de classificació de documents, vol dir que un document concret pertany a quina categoria, com ara Esports, Política, educació, etc.
    El classificador utilitza la freqüència de les paraules per als predictors.Bernoulli: El classificador de Bernoulli funciona de manera semblant al classificador multinomial, però les variables predictores són les variables booleanes independents. Per exemple, si una paraula concreta està present o no en un document. Aquest model també és famós per les tasques de classificació de documents.

Implementació de Python de l'algorisme Naïve Bayes:

Ara implementarem un algorisme de Bayes naïf usant Python. Així, per a això, utilitzarem el ' dades_usuari ' conjunt de dades , que hem utilitzat en el nostre altre model de classificació. Per tant, podem comparar fàcilment el model Naive Bayes amb els altres models.

Passos a implementar:

  • Pas de preprocessament de dades
  • Encaixar Naive Bayes al conjunt d'entrenament
  • Predicció del resultat de la prova
  • Prova la precisió del resultat (creació de la matriu de confusió)
  • Visualització del resultat del conjunt de proves.

1) Pas de preprocessament de dades:

En aquest pas, preprocessarem/prepararem les dades perquè puguem utilitzar-les de manera eficient al nostre codi. És similar al que vam fer en el preprocessament de dades. El codi per a això es mostra a continuació:

 Importing the libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd # Importing the dataset dataset = pd.read_csv('user_data.csv') x = dataset.iloc[:, [2, 3]].values y = dataset.iloc[:, 4].values # Splitting the dataset into the Training set and Test set from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.25, random_state = 0) # Feature Scaling from sklearn.preprocessing import StandardScaler sc = StandardScaler() x_train = sc.fit_transform(x_train) x_test = sc.transform(x_test) 

Al codi anterior, hem carregat el conjunt de dades al nostre programa utilitzant ' conjunt de dades = pd.read_csv('user_data.csv') . El conjunt de dades carregat es divideix en formació i conjunt de proves, i després hem escalat la variable de funció.

La sortida del conjunt de dades es dóna com:

Algoritme classificador de Bayes naïf 1

2) Encaixar Naive Bayes al conjunt d'entrenament:

Després del pas de preprocessament, ara ajustarem el model Naive Bayes al conjunt d'entrenament. A continuació es mostra el codi per a això:

punter de desreferència c
 # Fitting Naive Bayes to the Training set from sklearn.naive_bayes import GaussianNB classifier = GaussianNB() classifier.fit(x_train, y_train) 

En el codi anterior, hem utilitzat el Classificador GaussianNB per ajustar-lo al conjunt de dades d'entrenament. També podem utilitzar altres classificadors segons el nostre requisit.

Sortida:

 Out[6]: GaussianNB(priors=None, var_smoothing=1e-09) 

3) Predicció del resultat del conjunt de proves:

Ara predirem el resultat del conjunt de proves. Per a això, crearem una nova variable predictora i_pred , i utilitzarà la funció predict per fer les prediccions.

 # Predicting the Test set results y_pred = classifier.predict(x_test) 

Sortida:

Algoritme classificador de Bayes naïf 2

La sortida anterior mostra el resultat del vector de predicció i_pred i el vector real y_test. Podem veure que algunes prediccions són diferents dels valors reals, que són les prediccions incorrectes.

4) Creació de la matriu de confusió:

Ara comprovarem la precisió del classificador Naive Bayes mitjançant la matriu de confusió. A continuació es mostra el codi per a això:

 # Making the Confusion Matrix from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_test, y_pred) 

Sortida:

Algorisme classificador de Bayes naïf 3

Com podem veure a la sortida anterior de la matriu de confusió, hi ha 7+3=10 prediccions incorrectes i 65+25=90 prediccions correctes.

5) Visualització del resultat del conjunt d'entrenament:

A continuació, visualitzarem el resultat del conjunt d'entrenament amb Nave Bayes Classifier. A continuació es mostra el codi per a això:

 # Visualising the Training set results from matplotlib.colors import ListedColormap x_set, y_set = x_train, y_train X1, X2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step = 0.01), nm.arange(start = x_set[:, 1].min() - 1, stop = x_set[:, 1].max() + 1, step = 0.01)) mtp.contourf(X1, X2, classifier.predict(nm.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape), alpha = 0.75, cmap = ListedColormap(('purple', 'green'))) mtp.xlim(X1.min(), X1.max()) mtp.ylim(X2.min(), X2.max()) for i, j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j, 0], x_set[y_set == j, 1], c = ListedColormap(('purple', 'green'))(i), label = j) mtp.title('Naive Bayes (Training set)') mtp.xlabel('Age') mtp.ylabel('Estimated Salary') mtp.legend() mtp.show() 

Sortida:

Algoritme classificador de Bayes naïf 4

A la sortida anterior podem veure que el classificador Nave Bayes ha segregat els punts de dades amb el límit fi. És la corba gaussiana tal com hem utilitzat Gaussian NB classificador al nostre codi.

6) Visualització del resultat del conjunt de proves:

 # Visualising the Test set results from matplotlib.colors import ListedColormap x_set, y_set = x_test, y_test X1, X2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step = 0.01), nm.arange(start = x_set[:, 1].min() - 1, stop = x_set[:, 1].max() + 1, step = 0.01)) mtp.contourf(X1, X2, classifier.predict(nm.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape), alpha = 0.75, cmap = ListedColormap(('purple', 'green'))) mtp.xlim(X1.min(), X1.max()) mtp.ylim(X2.min(), X2.max()) for i, j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j, 0], x_set[y_set == j, 1], c = ListedColormap(('purple', 'green'))(i), label = j) mtp.title('Naive Bayes (test set)') mtp.xlabel('Age') mtp.ylabel('Estimated Salary') mtp.legend() mtp.show() 

Sortida:

palíndrom en java
Algoritme classificador de Bayes naïf 5

La sortida anterior és la sortida final de les dades del conjunt de prova. Com podem veure, el classificador ha creat una corba gaussiana per dividir les variables 'comprades' i 'no comprades'. Hi ha algunes prediccions incorrectes que hem calculat a la matriu de confusió. Però tot i així és un bon classificador.