logo

Naiv Bayes-klassifiseringsalgoritme

  • Naiv Bayes algoritme er en overvåket læringsalgoritme, som er basert på Bayes teorem og brukes til å løse klassifiseringsproblemer.
  • Den brukes hovedsakelig i tekstklassifisering som inkluderer et høydimensjonalt opplæringsdatasett.
  • Naiv Bayes Classifier er en av de enkle og mest effektive klassifiseringsalgoritmene som hjelper til med å bygge de raske maskinlæringsmodellene som kan gi raske spådommer.
  • Det er en probabilistisk klassifikator, som betyr at den forutsier på grunnlag av sannsynligheten for et objekt.
  • Noen populære eksempler på naiv Bayes-algoritme er spamfiltrering, sentimental analyse og klassifisering av artikler .

Hvorfor heter det Naive Bayes?

Naiv Bayes-algoritmen består av to ord Naiv og Bayes, som kan beskrives som:

    Naiv: Det kalles naivt fordi det antar at forekomsten av et bestemt trekk er uavhengig av forekomsten av andre trekk. For eksempel hvis frukten er identifisert på grunnlag av farge, form og smak, blir rød, sfærisk og søt frukt gjenkjent som et eple. Derfor bidrar hver funksjon individuelt til å identifisere at det er et eple uten å være avhengig av hverandre.Bayes: Det kalles Bayes fordi det avhenger av prinsippet i Bayes' teorem .

Bayes' teorem:

  • Bayes' teorem er også kjent som Bayes regel eller Bayes lov , som brukes til å bestemme sannsynligheten for en hypotese med forkunnskaper. Det avhenger av den betingede sannsynligheten.
  • Formelen for Bayes teorem er gitt som:
Naiv Bayes-klassifiseringsalgoritme

Hvor,

P(A|B) er posterior sannsynlighet : Sannsynlighet for hypotese A om den observerte hendelsen B.

P(B|A) er sannsynlighet for sannsynlighet : Sannsynligheten for beviset gitt at sannsynligheten for en hypotese er sann.

P(A) er tidligere sannsynlighet : Sannsynlighet for hypotese før observasjon av bevisene.

P(B) er Marginal sannsynlighet : Sannsynlighet for bevis.

bytte tilfelle java

Arbeidet med Naive Bayes' Classifier:

Arbeidet med Naive Bayes' Classifier kan forstås ved hjelp av eksemplet nedenfor:

Anta at vi har et datasett med værforhold og tilsvarende målvariabel ' Spille '. Så ved å bruke dette datasettet må vi bestemme om vi skal spille eller ikke på en bestemt dag i henhold til værforholdene. Så for å løse dette problemet, må vi følge trinnene nedenfor:

  1. Konverter det gitte datasettet til frekvenstabeller.
  2. Generer sannsynlighetstabell ved å finne sannsynlighetene for gitte funksjoner.
  3. Bruk nå Bayes teorem for å beregne den bakre sannsynligheten.

Problem : Hvis været er sol, bør spilleren spille eller ikke?

Løsning : For å løse dette, vurdere først datasettet nedenfor:

Outlook Spille
0 Regnfullt Ja
1 Solfylt Ja
2 Overskyet Ja
3 Overskyet Ja
4 Solfylt Nei
5 Regnfullt Ja
6 Solfylt Ja
7 Overskyet Ja
8 Regnfullt Nei
9 Solfylt Nei
10 Solfylt Ja
elleve Regnfullt Nei
12 Overskyet Ja
1. 3 Overskyet Ja

Frekvenstabell for værforholdene:

Vær Ja Nei
Overskyet 5 0
Regnfullt 2 2
Solfylt 3 2
Total 10 5

Værforhold for sannsynlighetstabell:

Vær Nei Ja
Overskyet 0 5 5/14 = 0,35
Regnfullt 2 2 4/14=0,29
Solfylt 2 3 5/14=0,35
Alle 4/14=0,29 10/14=0,71

Ved å bruke Bayes' teorem:

P(Ja|Sol)= P(Solrik|Ja)*P(Ja)/P(Sol)

P(Sunny|Ja)= 3/10= 0,3

P(Sol)= 0,35

P(Ja)=0,71

Så P(Ja|Sol) = 0,3*0,71/0,35= 0,60

P(Nei|Sol)= P(Solrik|Nei)*P(Nei)/P(Solrik)

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

P(Nei)= 0,29

P(Sol)= 0,35

Så P(Nei|Sol)= 0,5*0,29/0,35 = 0,41

Så som vi kan se fra beregningen ovenfor P(Ja|Sol)>P(Nei|Sol)

Derfor kan spilleren spille spillet på en solrik dag.

Fordeler med Naiv Bayes Classifier:

  • Naive Bayes er en av de raske og enkle ML-algoritmene for å forutsi en klasse med datasett.
  • Den kan brukes til både binære klassifiseringer og multiklasseklassifiseringer.
  • Den fungerer godt i multi-klasse spådommer sammenlignet med de andre algoritmene.
  • Det er det mest populære valget for problemer med tekstklassifisering .

Ulemper med Naiv Bayes Classifier:

  • Naive Bayes antar at alle funksjoner er uavhengige eller ikke-relaterte, så den kan ikke lære forholdet mellom funksjoner.

Anvendelser av Naive Bayes Classifier:

  • Den brukes til Kredittscore .
  • Den brukes i klassifisering av medisinske data .
  • Den kan brukes i sanntids spådommer fordi Naive Bayes Classifier er en ivrig elev.
  • Det brukes i Tekstklassifisering som f.eks Spamfiltrering og Sentimentanalyse .

Typer av naive Bayes-modeller:

Det er tre typer naive Bayes-modeller, som er gitt nedenfor:

    Gaussisk: Gaussmodellen antar at trekk følger en normalfordeling. Dette betyr at hvis prediktorer tar kontinuerlige verdier i stedet for diskrete, så antar modellen at disse verdiene er samplet fra den gaussiske distribusjonen.Multinomial: Multinomial Naive Bayes-klassifikatoren brukes når dataene er multinomial distribuert. Det brukes først og fremst for dokumentklassifiseringsproblemer, det betyr at et bestemt dokument tilhører hvilken kategori som sport, politikk, utdanning, etc.
    Klassifisereren bruker frekvensen av ord for prediktorene.Bernoulli: Bernoulli-klassifikatoren fungerer på samme måte som Multinomial-klassifikatoren, men prediktorvariablene er de uavhengige boolske variablene. For eksempel om et bestemt ord er til stede eller ikke i et dokument. Denne modellen er også kjent for dokumentklassifiseringsoppgaver.

Python-implementering av den naive Bayes-algoritmen:

Nå skal vi implementere en naiv Bayes-algoritme ved hjelp av Python. Så for dette vil vi bruke ' brukerdata ' datasett , som vi har brukt i vår andre klassifiseringsmodell. Derfor kan vi enkelt sammenligne Naive Bayes-modellen med de andre modellene.

Trinn for å implementere:

  • Dataforbehandlingstrinn
  • Tilpasse Naive Bayes til treningssettet
  • Forutsi testresultatet
  • Test nøyaktigheten av resultatet (oppretting av forvirringsmatrise)
  • Visualisere testsettets resultat.

1) Dataforbehandlingstrinn:

I dette trinnet vil vi forhåndsbehandle/klargjøre dataene slik at vi kan bruke dem effektivt i koden vår. Det er likt som vi gjorde i dataforbehandling . Koden for dette er gitt nedenfor:

 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) 

I koden ovenfor har vi lastet datasettet inn i programmet vårt ved å bruke ' datasett = pd.read_csv('user_data.csv') . Det innlastede datasettet er delt inn i trening og testsett, og så har vi skalert funksjonsvariabelen.

Utdata for datasettet er gitt som:

Naiv Bayes-klassifiseringsalgoritme 1

2) Tilpasning av Naive Bayes til treningssettet:

Etter forbehandlingstrinnet vil vi nå tilpasse Naive Bayes-modellen til treningssettet. Nedenfor er koden for det:

 # Fitting Naive Bayes to the Training set from sklearn.naive_bayes import GaussianNB classifier = GaussianNB() classifier.fit(x_train, y_train) 

I koden ovenfor har vi brukt GaussianNB klassifiserer for å tilpasse den til opplæringsdatasettet. Vi kan også bruke andre klassifiserere i henhold til vårt krav.

Produksjon:

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

3) Forutsigelse av testsettets resultat:

Nå vil vi forutsi testsettets resultat. For dette vil vi lage en ny prediktorvariabel y_pred , og vil bruke prediksjonsfunksjonen til å lage spådommene.

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

Produksjon:

Naiv Bayes Classifier Algorithm 2

Utgangen ovenfor viser resultatet for prediksjonsvektor y_pred og ekte vektor y_test. Vi kan se at noen spådommer er forskjellige fra de virkelige verdiene, som er de uriktige spådommene.

4) Opprette forvirringsmatrise:

Nå skal vi sjekke nøyaktigheten til Naive Bayes-klassifikatoren ved å bruke forvirringsmatrisen. Nedenfor er koden for det:

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

Produksjon:

Naiv Bayes Classifier Algorithm 3

Som vi kan se i forvirringsmatriseutgangen ovenfor, er det 7+3= 10 feil spådommer, og 65+25=90 korrekte spådommer.

5) Visualisere resultatet av treningssettet:

Deretter vil vi visualisere resultatet av treningssettet ved hjelp av Na�ve Bayes Classifier. Nedenfor er koden for det:

 # 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() 

Produksjon:

Naiv Bayes Classifier Algorithm 4

I utgangen ovenfor kan vi se at Na�ve Bayes-klassifikatoren har segregert datapunktene med den fine grensen. Det er gaussisk kurve slik vi har brukt GaussianNB klassifiserer i koden vår.

6) Visualisere testsettets resultat:

 # 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() 

Produksjon:

Naiv Bayes Classifier Algorithm 5

Ovennevnte utgang er endelig utgang for testsettdata. Som vi kan se har klassifikatoren laget en Gauss-kurve for å dele variablene 'kjøpt' og 'ikke kjøpt'. Det er noen feil spådommer som vi har beregnet i forvirringsmatrisen. Men det er fortsatt ganske bra klassifiserer.