logo

Algoritem naivnega Bayesovega klasifikatorja

  • Naivni Bayesov algoritem je algoritem nadzorovanega učenja, ki temelji na Bayesov izrek in se uporablja za reševanje težav s klasifikacijo.
  • Uporablja se predvsem v razvrstitev besedila ki vključuje visokodimenzionalni nabor podatkov o usposabljanju.
  • Naivni Bayesov klasifikator je eden od preprostih in najučinkovitejših algoritmov za klasifikacijo, ki pomaga pri gradnji hitrih modelov strojnega učenja, ki lahko dajejo hitre napovedi.
  • Je verjetnostni klasifikator, kar pomeni, da napoveduje na podlagi verjetnosti predmeta.
  • Nekateri priljubljeni primeri Naivnega Bayesovega algoritma so filtriranje neželene pošte, sentimentalna analiza in razvrščanje člankov .

Zakaj se imenuje naivni Bayes?

Algoritem Naive Bayes je sestavljen iz dveh besed Naive in Bayes, ki ju lahko opišemo kot:

    Naiven: Imenuje se naivna, ker predpostavlja, da je pojav določene značilnosti neodvisen od pojava drugih lastnosti. Na primer, če je sadje prepoznano na podlagi barve, oblike in okusa, potem je rdeče, sferično in sladko sadje prepoznano kot jabolko. Zato vsaka lastnost posebej prispeva k prepoznavanju, da gre za jabolko, neodvisno druga od druge.Bayes: Imenuje se Bayes, ker je odvisen od načela Bayesovega izreka.

Bayesov izrek:

  • Bayesov izrek je znan tudi kot Bayesovo pravilo oz Bayesov zakon , ki se uporablja za določanje verjetnosti hipoteze s predznanjem. Odvisno je od pogojne verjetnosti.
  • Formula za Bayesov izrek je podana kot:
Algoritem naivnega Bayesovega klasifikatorja

Kje,

P(A|B) je posteriorna verjetnost : Verjetnost hipoteze A o opazovanem dogodku B.

P(B|A) je verjetnost verjetnosti : Verjetnost dokaza glede na to, da je verjetnost hipoteze resnična.

P(A) je predhodna verjetnost : Verjetnost hipoteze pred opazovanjem dokazov.

P(B) je mejna verjetnost : Verjetnost dokazov.

Delovanje naivnega Bayesovega klasifikatorja:

Delovanje naivnega Bayesovega klasifikatorja je mogoče razumeti s pomočjo spodnjega primera:

Recimo, da imamo nabor podatkov vremenske razmere in ustrezna ciljna spremenljivka ' Igraj '. Z uporabo tega nabora podatkov se moramo torej odločiti, ali naj igramo ali ne na določen dan glede na vremenske razmere. Da bi rešili to težavo, moramo slediti spodnjim korakom:

oštevilčite abecedo
  1. Pretvorite dani nabor podatkov v frekvenčne tabele.
  2. Ustvarite tabelo verjetnosti z iskanjem verjetnosti danih lastnosti.
  3. Zdaj uporabite Bayesov izrek za izračun posteriorne verjetnosti.

Težava : Če je vreme sončno, naj igralec igra ali ne?

rešitev : Če želite to rešiti, najprej razmislite o spodnjem naboru podatkov:

Outlook Igraj
0 deževno ja
1 Sončno ja
2 Oblačno ja
3 Oblačno ja
4 Sončno št
5 deževno ja
6 Sončno ja
7 Oblačno ja
8 deževno št
9 Sončno št
10 Sončno ja
enajst deževno št
12 Oblačno ja
13 Oblačno ja

Tabela pogostnosti za vremenske razmere:

Vreme ja št
Oblačno 5 0
deževno 2 2
Sončno 3 2
Skupaj 10 5

Tabela verjetnosti vremenske razmere:

Vreme št ja
Oblačno 0 5 5/14 = 0,35
deževno 2 2 4/14=0,29
Sončno 2 3 5/14=0,35
Vse 4/14=0,29 10/14=0,71

Uporaba Bayesovega izreka:

P(Da|Sončno)= P(Sončno|Da)*P(Da)/P(Sončno)

P(sončno|da)= 3/10= 0,3

P(sončno)= 0,35

P(da)=0,71

java ubežni znaki

Torej P(Da|Sončno) = 0,3*0,71/0,35= 0,60

P(Ne|Sončno)= P(Sončno|Ne)*P(Ne)/P(Sončno)

P(sončno|NE)= 2/4=0,5

P(št) = 0,29

P(sončno)= 0,35

Torej P(brez|sončnega)= 0,5*0,29/0,35 = 0,41

Torej, kot lahko vidimo iz zgornjega izračuna, da P(Da|Sončno)>P(Ne|Sončno)

Zato lahko igralec igra igro na sončen dan.

Prednosti naivnega Bayesovega klasifikatorja:

  • Naivni Bayes je eden izmed hitrih in enostavnih algoritmov ML za napovedovanje razreda naborov podatkov.
  • Uporablja se lahko za binarne in večrazredne klasifikacije.
  • V primerjavi z drugimi algoritmi se dobro obnese pri večrazrednih napovedih.
  • Je najbolj priljubljena izbira za težave s klasifikacijo besedil .

Slabosti naivnega Bayesovega klasifikatorja:

  • Naivni Bayes predpostavlja, da so vse funkcije neodvisne ali nepovezane, zato se ne more naučiti razmerja med funkcijami.

Uporaba naivnega Bayesovega klasifikatorja:

  • Uporablja se za Kreditno točkovanje .
  • Uporablja se v razvrstitev medicinskih podatkov .
  • Lahko se uporablja v napovedi v realnem času ker se Naivni Bayesov klasifikator vneto uči.
  • Uporablja se pri klasifikaciji besedil, kot je npr Filtriranje neželene pošte in Analiza razpoloženja .

Vrste naivnega Bayesovega modela:

Obstajajo trije tipi naivnega Bayesovega modela, ki so navedeni spodaj:

    Gaussov: Gaussov model predpostavlja, da značilnosti sledijo normalni porazdelitvi. To pomeni, da če napovedovalci vzamejo zvezne vrednosti namesto diskretnih, potem model predpostavlja, da so te vrednosti vzorčene iz Gaussove porazdelitve.Multinom: Multinomski naivni Bayesov klasifikator se uporablja, ko so podatki multinomsko porazdeljeni. Uporablja se predvsem za težave s klasifikacijo dokumentov, kar pomeni, da določen dokument pripada kateri kategoriji, kot so šport, politika, izobraževanje itd.
    Klasifikator uporablja pogostost besed za napovednike.Bernoulli: Bernoullijev klasifikator deluje podobno kot Multinomski klasifikator, vendar so napovedovalne spremenljivke neodvisne Boolove spremenljivke. Na primer, če je določena beseda v dokumentu prisotna ali ne. Ta model je znan tudi po opravilih klasifikacije dokumentov.

Izvedba naivnega Bayesovega algoritma v Pythonu:

Zdaj bomo implementirali naivni Bayesov algoritem z uporabo Pythona. Za to bomo uporabili ' uporabniški_podatki ' nabor podatkov , ki smo ga uporabili v našem drugem klasifikacijskem modelu. Zato lahko model Naive Bayes zlahka primerjamo z drugimi modeli.

Koraki za izvedbo:

  • Korak predhodne obdelave podatkov
  • Prilagajanje naivnega Bayesa kompletu za usposabljanje
  • Napovedovanje rezultata testa
  • Preskusna točnost rezultata (Matrika ustvarjanja zmede)
  • Vizualizacija rezultatov testnega niza.

1) Korak predhodne obdelave podatkov:

V tem koraku bomo podatke predhodno obdelali/pripravili, da jih bomo lahko učinkovito uporabili v naši kodi. Podobno je kot pri predhodni obdelavi podatkov. Koda za to je navedena spodaj:

 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) 

V zgornji kodi smo naložili nabor podatkov v naš program z uporabo ' nabor podatkov = pd.read_csv('user_data.csv') . Naložen nabor podatkov je razdeljen na nabor za usposabljanje in test, nato pa smo spremenili spremenljivko funkcije.

Izhod za nabor podatkov je podan kot:

Algoritem naivnega Bayesovega klasifikatorja 1

2) Namestitev naivnega Bayesa v komplet za usposabljanje:

Po koraku predhodne obdelave bomo sedaj model Naive Bayes prilagodili kompletu za usposabljanje. Spodaj je koda zanj:

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

V zgornji kodi smo uporabili Gaussov NB klasifikator da ga prilagodite naboru podatkov o usposabljanju. Po naših zahtevah lahko uporabimo tudi druge klasifikatorje.

vrste računalnika

Izhod:

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

3) Napoved rezultata testnega niza:

Zdaj bomo napovedali rezultat testnega niza. Za to bomo ustvarili novo napovedovalno spremenljivko y_pred , in bo za izdelavo napovedi uporabil funkcijo napovedi.

primerjaj z nizi v Javi
 # Predicting the Test set results y_pred = classifier.predict(x_test) 

Izhod:

Algoritem naivnega Bayesovega klasifikatorja 2

Zgornji izhod prikazuje rezultat za vektor napovedi y_pred in realni vektor y_test. Vidimo lahko, da se nekatere napovedi razlikujejo od realnih vrednosti, kar so napačne napovedi.

4) Ustvarjanje matrike zmede:

Zdaj bomo preverili točnost naivnega Bayesovega klasifikatorja z uporabo matrike zmede. Spodaj je koda zanj:

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

Izhod:

Algoritem naivnega Bayesovega klasifikatorja 3

Kot lahko vidimo v zgornjem rezultatu matrike zmede, je 7+3=10 napačnih napovedi in 65+25=90 pravilnih napovedi.

5) Vizualizacija rezultata vadbenega niza:

Nato bomo vizualizirali rezultat vadbenega nabora z Na�ve Bayesovim klasifikatorjem. Spodaj je koda zanj:

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

Izhod:

Algoritem naivnega Bayesovega klasifikatorja 4

V zgornjem rezultatu lahko vidimo, da je Nave Bayesov klasifikator ločil podatkovne točke s fino mejo. To je Gaussova krivulja, kot smo jo uporabili GaussovNB klasifikator v naši kodi.

6) Vizualizacija rezultata testnega niza:

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

Izhod:

Algoritem naivnega Bayesovega klasifikatorja 5

Zgornji izhod je končni izhod za podatke testnega niza. Kot lahko vidimo, je klasifikator ustvaril Gaussovo krivuljo za razdelitev spremenljivk 'kupljeno' in 'nekupljeno'. Obstaja nekaj napačnih napovedi, ki smo jih izračunali v matriki zmede. Ampak še vedno je precej dober klasifikator.