- Algoritmus Naive Bayes je algoritmus učenia pod dohľadom, ktorý je založený na Bayesova veta a používa sa na riešenie klasifikačných problémov.
- Používa sa hlavne v triedenie textu ktorý zahŕňa vysokorozmerný tréningový dátový súbor.
- Naïve Bayes Classifier je jedným z jednoduchých a najefektívnejších klasifikačných algoritmov, ktorý pomáha pri vytváraní modelov rýchleho strojového učenia, ktoré dokážu robiť rýchle predpovede.
- Niektoré populárne príklady naivného Bayesovho algoritmu sú filtrovanie spamu, sentimentálna analýza a klasifikácia článkov .
Prečo sa to volá Naive Bayes?
Algoritmus Naïve Bayes sa skladá z dvoch slov Naïve a Bayes, ktoré možno opísať ako:
Bayesova veta:
- Bayesova veta je známa aj ako Bayesovo pravidlo alebo Bayesov zákon , ktorý sa používa na určenie pravdepodobnosti hypotézy s predchádzajúcimi znalosťami. Závisí to od podmienenej pravdepodobnosti.
- Vzorec pre Bayesovu vetu je daný takto:
Kde,
jvm
P(A|B) je zadná pravdepodobnosť : Pravdepodobnosť hypotézy A o pozorovanom jave B.
P(B|A) je pravdepodobnosť pravdepodobnosti : Pravdepodobnosť dôkazu za predpokladu, že pravdepodobnosť hypotézy je pravdivá.
P(A) je predchádzajúca pravdepodobnosť : Pravdepodobnosť hypotézy pred pozorovaním dôkazov.
P(B) je marginálna pravdepodobnosť : Pravdepodobnosť dôkazu.
Fungovanie klasifikátora Naive Bayes:
Fungovanie klasifikátora Naïve Bayes je možné pochopiť pomocou nižšie uvedeného príkladu:
Predpokladajme, že máme súbor údajov poveternostné podmienky a zodpovedajúca cieľová premenná ' hrať '. Takže pomocou tohto súboru údajov sa musíme rozhodnúť, či v konkrétny deň hrať alebo nie podľa poveternostných podmienok. Aby sme tento problém vyriešili, musíme postupovať podľa nasledujúcich krokov:
- Preveďte daný súbor údajov do frekvenčných tabuliek.
- Vygenerujte tabuľku pravdepodobnosti nájdením pravdepodobnosti daných funkcií.
- Teraz použite Bayesovu vetu na výpočet zadnej pravdepodobnosti.
Problém : Ak je slnečné počasie, mal by hráč hrať alebo nie?
Riešenie : Ak to chcete vyriešiť, najprv zvážte nasledujúci súbor údajov:
Outlook | hrať | |
---|---|---|
0 | Daždivé | Áno |
1 | Slnečno | Áno |
2 | Zatiahnuté | Áno |
3 | Zatiahnuté | Áno |
4 | Slnečno | Nie |
5 | Daždivé | Áno |
6 | Slnečno | Áno |
7 | Zatiahnuté | Áno |
8 | Daždivé | Nie |
9 | Slnečno | Nie |
10 | Slnečno | Áno |
jedenásť | Daždivé | Nie |
12 | Zatiahnuté | Áno |
13 | Zatiahnuté | Áno |
Tabuľka frekvencií pre poveternostné podmienky:
Počasie | Áno | Nie |
Zatiahnuté | 5 | 0 |
Daždivé | 2 | 2 |
Slnečno | 3 | 2 |
Celkom | 10 | 5 |
Pravdepodobný poveternostný stav tabuľky:
Madhubala
Počasie | Nie | Áno | |
Zatiahnuté | 0 | 5 | 5/14 = 0,35 |
Daždivé | 2 | 2 | 4/14 = 0,29 |
Slnečno | 2 | 3 | 5/14 = 0,35 |
Všetky | 4/14 = 0,29 | 10/14 = 0,71 |
Použitie Bayesovej vety:
P(Áno|Slnečno)= P(Slnečno|Áno)*P(Áno)/P(Slnečno)
P(slnečno|áno)= 3/10= 0,3
P(slnečno)= 0,35
P(áno)=0,71
Takže P(Áno|Slnečno) = 0,3*0,71/0,35= 0,60
P(nie|slnečno)= P(slnečno|nie)*P(nie)/P(slnečno)
P(slnečno|NIE)= 2/4=0,5
P(Nie)= 0,29
P(slnečno)= 0,35
Takže P(Nie|Slnečno)= 0,5*0,29/0,35 = 0,41
javascript najbližšie
Ako teda vidíme z vyššie uvedeného výpočtu, že P(Áno|Slnečno)>P(Nie|Slnečno)
Preto počas slnečného dňa môže hráč hrať hru.
Výhody klasifikátora Naive Bayes:
- Naïve Bayes je jedným z rýchlych a jednoduchých algoritmov ML na predpovedanie triedy množín údajov.
- Môže byť použitý pre binárne aj viactriedne klasifikácie.
- Funguje dobre v predpovediach viacerých tried v porovnaní s inými algoritmami.
- Je to najobľúbenejšia voľba pre problémy s klasifikáciou textu .
Nevýhody klasifikátora Naive Bayes:
- Naive Bayes predpokladá, že všetky funkcie sú nezávislé alebo nesúvisiace, takže sa nemôže naučiť vzťah medzi funkciami.
Aplikácie klasifikátora Naive Bayes:
- Používa sa na Credit Scoring .
- Používa sa v klasifikácia medicínskych údajov .
- Dá sa použiť v predpovede v reálnom čase pretože Naïve Bayes Classifier je dychtivý študent.
- Používa sa pri klasifikácii textu ako napr Filtrovanie spamu a Analýza sentimentu .
Typy naivného Bayesovho modelu:
Existujú tri typy modelu Naive Bayes, ktoré sú uvedené nižšie:
Klasifikátor používa pre prediktory frekvenciu slov.
Implementácia algoritmu Naive Bayes v Pythone:
Teraz budeme implementovať Naive Bayes Algorithm pomocou Pythonu. Takže na to použijeme ' použivateľské dáta ' súbor údajov , ktorý sme použili v našom ďalšom klasifikačnom modeli. Preto môžeme model Naive Bayes ľahko porovnať s ostatnými modelmi.
Kroky na implementáciu:
- Krok predbežného spracovania údajov
- Prispôsobenie Naive Bayes k súprave Training
- Predpovedanie výsledku testu
- Otestujte presnosť výsledku (Vytvorenie matice zmätku)
- Vizualizácia výsledku testovacej súpravy.
1) Krok predbežného spracovania údajov:
V tomto kroku dáta predspracujeme/pripravíme tak, aby sme ich mohli efektívne využiť v našom kóde. Je to podobné ako v prípade predbežného spracovania údajov. Kód na to je uvedený nižšie:
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)
Vo vyššie uvedenom kóde sme načítali súbor údajov do nášho programu pomocou ' množina údajov = pd.read_csv('user_data.csv') . Načítaná množina údajov je rozdelená na trénovaciu a testovaciu množinu a potom sme škálovali premennú funkcie.
Výstup pre množinu údajov je uvedený ako:
2) Pripojenie Naive Bayes k tréningovej súprave:
Po kroku predspracovania teraz prispôsobíme model Naive Bayes do množiny Training. Nižšie je uvedený kód:
zmeniť názov adresára linux
# Fitting Naive Bayes to the Training set from sklearn.naive_bayes import GaussianNB classifier = GaussianNB() classifier.fit(x_train, y_train)
Vo vyššie uvedenom kóde sme použili Gaussovský NB klasifikátor aby sa zmestil do tréningového súboru údajov. Môžeme použiť aj iné klasifikátory podľa našich požiadaviek.
Výkon:
porovnať reťazec v jave
Out[6]: GaussianNB(priors=None, var_smoothing=1e-09)
3) Predpoveď výsledku testovacej sady:
Teraz predpovedáme výsledok testovacej sady. Na tento účel vytvoríme novú premennú prediktora y_pred a na vytváranie predpovedí použije funkciu predpovedania.
# Predicting the Test set results y_pred = classifier.predict(x_test)
Výkon:
Vyššie uvedený výstup ukazuje výsledok pre vektor predikcie y_pred a skutočný vektor y_test. Vidíme, že niektoré predikcie sa líšia od skutočných hodnôt, čo sú nesprávne predpovede.
4) Vytvorenie matice zmätku:
Teraz skontrolujeme presnosť klasifikátora Naive Bayes pomocou matice Confusion. Nižšie je uvedený kód:
# Making the Confusion Matrix from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_test, y_pred)
Výkon:
Ako môžeme vidieť vo vyššie uvedenom výstupe zmätkovej matice, existuje 7+3= 10 nesprávnych predpovedí a 65+25=90 správnych predpovedí.
5) Vizualizácia výsledku tréningovej zostavy:
Ďalej vizualizujeme výsledok tréningovej sady pomocou klasifikátora Na�ve Bayes Classifier. Nižšie je uvedený kód:
# 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()
Výkon:
Vo vyššie uvedenom výstupe vidíme, že klasifikátor Na�ve Bayes oddelil dátové body jemnou hranicou. Je to Gaussova krivka, ako sme použili GaussianNB klasifikátor v našom kóde.
6) Vizualizácia výsledku testovacej sady:
# 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()
Výkon:
Vyššie uvedený výstup je konečným výstupom pre dáta testovacej sady. Ako vidíme, klasifikátor vytvoril Gaussovu krivku na rozdelenie premenných „zakúpené“ a „nekúpené“. Existuje niekoľko nesprávnych predpovedí, ktoré sme vypočítali v matici Confusion. Ale stále je to celkom dobrý klasifikátor.