logo

Naivní Bayesův klasifikační algoritmus

  • Algoritmus Naïve Bayes je algoritmus učení pod dohledem, který je založen na Bayesova věta a používá se pro řešení klasifikačních problémů.
  • Používá se především v klasifikace textu který zahrnuje vysokorozměrnou trénovací datovou sadu.
  • Naïve Bayes Classifier je jedním z jednoduchých a nejúčinnějších klasifikačních algoritmů, který pomáhá při vytváření rychlých modelů strojového učení, které dokážou rychle předpovídat.
  • Je to pravděpodobnostní klasifikátor, což znamená, že předpovídá na základě pravděpodobnosti objektu.
  • Některé populární příklady naivního Bayesova algoritmu jsou filtrace spamu, sentimentální analýza a klasifikace článků .

Proč se tomu říká Naivní Bayes?

Algoritmus Naïve Bayes se skládá ze dvou slov Naïve a Bayes, které lze popsat jako:

    Naivní: Nazývá se naivní, protože předpokládá, že výskyt určitého rysu je nezávislý na výskytu jiných rysů. Jako když je ovoce identifikováno na základě barvy, tvaru a chuti, pak červené, kulovité a sladké ovoce je rozpoznáno jako jablko. Každý prvek tedy samostatně přispívá k identifikaci toho, že jde o jablko, aniž by na sobě závisel.Bayes: Říká se mu Bayes, protože závisí na principu Bayesovy věty.

Bayesova věta:

  • Bayesova věta je také známá jako Bayesovo pravidlo nebo Bayesův zákon , který se používá k určení pravděpodobnosti hypotézy s předchozími znalostmi. Záleží na podmíněné pravděpodobnosti.
  • Vzorec pro Bayesovu větu je dán takto:
Naivní Bayesův klasifikační algoritmus

Kde,

P(A|B) je zadní pravděpodobnost : Pravděpodobnost hypotézy A o pozorovaném jevu B.

když jinak když jinak java

P(B|A) je pravděpodobnost pravděpodobnosti : Pravděpodobnost důkazu za předpokladu, že pravděpodobnost hypotézy je pravdivá.

P(A) je předchozí pravděpodobnost : Pravděpodobnost hypotézy před pozorováním důkazů.

P(B) je mezní pravděpodobnost : Pravděpodobnost důkazu.

Fungování klasifikátoru Naïve Bayes:

Fungování klasifikátoru Naïve Bayes lze pochopit pomocí níže uvedeného příkladu:

Předpokládejme, že máme datovou sadu povětrnostní podmínky a odpovídající cílová proměnná ' Hrát si '. Takže pomocí této datové sady se musíme rozhodnout, zda v konkrétní den hrát nebo ne podle povětrnostních podmínek. Abychom tento problém vyřešili, musíme provést následující kroky:

  1. Převeďte danou datovou sadu do frekvenčních tabulek.
  2. Vygenerujte pravděpodobnostní tabulku nalezením pravděpodobností daných vlastností.
  3. Nyní použijte Bayesovu větu k výpočtu zadní pravděpodobnosti.

Problém : Pokud je slunečné počasí, měl by hráč hrát nebo ne?

Řešení : Chcete-li to vyřešit, nejprve zvažte následující datovou sadu:

Výhled Hrát si
0 Deštivý Ano
1 Slunný Ano
2 Zatažený Ano
3 Zatažený Ano
4 Slunný Ne
5 Deštivý Ano
6 Slunný Ano
7 Zatažený Ano
8 Deštivý Ne
9 Slunný Ne
10 Slunný Ano
jedenáct Deštivý Ne
12 Zatažený Ano
13 Zatažený Ano

Tabulka četností pro povětrnostní podmínky:

Počasí Ano Ne
Zatažený 5 0
Deštivý 2 2
Slunný 3 2
Celkový 10 5

Pravděpodobné povětrnostní podmínky tabulky:

Počasí Ne Ano
Zatažený 0 5 5/14 = 0,35
Deštivý 2 2 4/14 = 0,29
Slunný 2 3 5/14 = 0,35
Všechno 4/14 = 0,29 10/14 = 0,71

Použití Bayesova teorému:

P(ano|slunečno)= P(slunečno|ano)*P(ano)/P(slunečno)

P(slunečno|ano)= 3/10= 0,3

P(slunečno)= 0,35

P(Ano)=0,71

Takže P(Ano|Slunečno) = 0,3*0,71/0,35= 0,60

import skeneru java

P(ne|slunečno)= P(slunečno|ne)*P(ne)/P(slunečno)

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

P(Ne)= 0,29

P(slunečno)= 0,35

Takže P(Ne|slunečno)= 0,5*0,29/0,35 = 0,41

Jak tedy vidíme z výše uvedeného výpočtu, že P(Ano|Slunečně)>P(Ne|Slunečno)

Za slunečného dne tedy může hráč hru hrát.

Výhody klasifikátoru Naïve Bayes:

  • Naïve Bayes je jedním z rychlých a snadných algoritmů ML pro predikci třídy datových sad.
  • Lze jej použít pro binární i vícetřídní klasifikace.
  • Ve srovnání s jinými algoritmy funguje dobře v předpovědích více tříd.
  • Je to nejoblíbenější volba pro problémy s klasifikací textu .

Nevýhody klasifikátoru Naïve Bayes:

  • Naive Bayes předpokládá, že všechny funkce jsou nezávislé nebo nesouvisející, takže se nemůže naučit vztah mezi funkcemi.

Aplikace klasifikátoru Naïve Bayes:

  • Používá se pro Credit Scoring .
  • Používá se v klasifikace lékařských údajů .
  • Lze jej použít v předpovědi v reálném čase protože Naïve Bayes Classifier je dychtivý student.
  • Používá se při klasifikaci textu jako např Filtrování spamu a Analýza sentimentu .

Typy modelu Naïve Bayes:

Existují tři typy modelu Naive Bayes, které jsou uvedeny níže:

    Gaussův: Gaussův model předpokládá, že funkce sledují normální rozdělení. To znamená, že pokud prediktory nabývají spojitých hodnot namísto diskrétních, pak model předpokládá, že tyto hodnoty jsou vzorkovány z Gaussova rozdělení.Multinomický: Klasifikátor Multinomial Naïve Bayes se používá, když jsou data distribuována v multinomiích. Primárně se používá pro problémy s klasifikací dokumentů, to znamená, že konkrétní dokument patří do které kategorie, jako je sport, politika, vzdělávání atd.
    Klasifikátor používá frekvenci slov pro prediktory.Bernoulli: Bernoulliho klasifikátor funguje podobně jako multinomický klasifikátor, ale prediktorové proměnné jsou nezávislé booleovské proměnné. Například, zda je určité slovo v dokumentu přítomno nebo ne. Tento model je také známý pro úkoly klasifikace dokumentů.

Implementace algoritmu Naïve Bayes v Pythonu:

Nyní budeme implementovat Naive Bayes Algorithm pomocí Pythonu. K tomu tedy použijeme ' uživatelská data ' datový soubor , který jsme použili v našem jiném klasifikačním modelu. Proto můžeme model Naive Bayes snadno porovnat s ostatními modely.

Kroky k implementaci:

  • Krok předběžného zpracování dat
  • Přizpůsobení Naive Bayes k tréninkové sadě
  • Předpovídání výsledku testu
  • Otestujte přesnost výsledku (Vytvoření matice zmatků)
  • Vizualizace výsledku testovací sady.

1) Krok předběžného zpracování dat:

V tomto kroku data předzpracujeme/připravíme tak, abychom je mohli efektivně využít v našem kódu. Je to podobné jako u předzpracování dat . Kód pro to je uveden níže:

 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) 

Ve výše uvedeném kódu jsme načetli datovou sadu do našeho programu pomocí ' datová sada = pd.read_csv('user_data.csv') . Načtená datová sada je rozdělena na trénovací a testovací sadu a poté jsme škálovali proměnnou funkce.

Výstup pro datovou sadu je dán takto:

Naivní Bayesův klasifikační algoritmus 1

2) Přizpůsobení Naive Bayes k tréninkové sadě:

Po kroku předběžného zpracování nyní nasadíme model Naive Bayes do sady Training. Níže je pro něj uveden kód:

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

Ve výše uvedeném kódu jsme použili Gaussův NB klasifikátor aby se vešly do trénovací datové sady. Můžeme také použít jiné klasifikátory podle našich požadavků.

práce na počítači

Výstup:

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

3) Predikce výsledku testovací sady:

Nyní předpovíme výsledek testovací sady. Za tímto účelem vytvoříme novou proměnnou prediktoru y_před a k předpovědi použije funkci predikce.

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

Výstup:

Naivní Bayesův klasifikační algoritmus 2

Výše uvedený výstup ukazuje výsledek pro predikční vektor y_před a skutečný vektor y_test. Vidíme, že některé predikce se liší od skutečných hodnot, což jsou nesprávné predikce.

4) Vytvoření Confusion Matrix:

Nyní zkontrolujeme přesnost klasifikátoru Naive Bayes pomocí matice Confusion. Níže je pro něj uveden kód:

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

Výstup:

Naivní Bayesův klasifikační algoritmus 3

Jak můžeme vidět na výše uvedeném výstupu matoucí matice, existuje 7+3= 10 nesprávných předpovědí a 65+25=90 správných předpovědí.

5) Vizualizace výsledku tréninkové sady:

Dále vizualizujeme výsledek tréninkové sady pomocí klasifikátoru Na�ve Bayes Classifier. Níže je pro něj 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ýstup:

Naivní Bayesův klasifikační algoritmus 4

Ve výše uvedeném výstupu můžeme vidět, že klasifikátor Na�ve Bayes oddělil datové body pomocí jemné hranice. Je to Gaussova křivka, jak jsme ji použili GaussianNB klasifikátor v našem kódu.

6) Vizualizace výsledku testovací 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ýstup:

Naivní Bayesův klasifikační algoritmus 5

Výše uvedený výstup je konečným výstupem pro data testovací sady. Jak vidíme, klasifikátor vytvořil Gaussovu křivku pro rozdělení proměnných „zakoupené“ a „nekoupené“. Existuje několik chybných předpovědí, které jsme vypočítali v Matici zmatení. Ale přesto je to docela dobrý klasifikátor.