Naivní Bayesovy klasifikátory, rodina algoritmů založených na Bayesově teorému. Navzdory naivnímu předpokladu nezávislosti funkcí jsou tyto klasifikátory široce využívány pro svou jednoduchost a efektivitu ve strojovém učení. Článek se ponoří do teorie, implementace a aplikací a osvětlí jejich praktickou využitelnost navzdory příliš zjednodušeným předpokladům.
Co je Naive Bayes Classifiers?
Naivní Bayesovy klasifikátory jsou sbírkou klasifikačních algoritmů založených na Bayesově teorému. Nejedná se o jediný algoritmus, ale o rodinu algoritmů, kde všechny sdílejí společný princip, tj. každá dvojice klasifikovaných znaků je na sobě nezávislá. Pro začátek se podívejme na datovou sadu.
Klasifikátor Naïve Bayes, jeden z nejjednodušších a nejefektivnějších klasifikačních algoritmů, pomáhá při rychlém vývoji modelů strojového učení s možností rychlé predikce.
Naivní Bayesův algoritmus se používá pro klasifikační problémy. Je velmi používán při klasifikaci textu. V úlohách klasifikace textu obsahují data vysokou dimenzi (protože každé slovo představuje jeden prvek v datech). Používá se při filtrování spamu, detekci sentimentu, klasifikaci hodnocení atd. Výhodou použití naivního Bayes je jeho rychlost. Je to rychlé a předpovídání je snadné s velkým objemem dat.
Tento model předpovídá pravděpodobnost, že instance patří do třídy s danou sadou hodnot vlastností. Je to pravděpodobnostní klasifikátor. Je to proto, že předpokládá, že jeden prvek v modelu je nezávislý na existenci jiného prvku. Jinými slovy, každý prvek přispívá k předpovědím bez vzájemného vztahu. V reálném světě tato podmínka vyhovuje jen zřídka. V algoritmu využívá Bayesův teorém pro trénování a predikci
Proč se tomu říká Naivní Bayes?
Naivní část názvu označuje zjednodušující předpoklad klasifikátor Naïve Bayes. Klasifikátor předpokládá, že vlastnosti použité k popisu pozorování jsou podmíněně nezávislé, vzhledem k označení třídy. Bayesova část názvu odkazuje na reverenda Thomase Bayese, statistika a teologa z 18. století, který formuloval Bayesův teorém.
Zvažte fiktivní datový soubor, který popisuje povětrnostní podmínky pro hraní golfu. Vzhledem k povětrnostním podmínkám každá n-tice klasifikuje podmínky jako vhodné (Ano) nebo nevhodné (Ne) pro hraní golfu. Zde je tabulkové znázornění naší datové sady.
| Výhled | Teplota | Vlhkost vzduchu | Větrný | Hrát golf | |
|---|---|---|---|---|---|
| 0 | Deštivý | Horký | Vysoký | Nepravdivé | Ne |
| 1 | Deštivý | Horký | Vysoký | Skutečný | Ne |
| 2 | Zatažený | Horký | Vysoký | Nepravdivé | Ano |
| 3 | Slunný | Mírný | Vysoký | Nepravdivé | Ano |
| 4 | Slunný | Chladný | Normální | Nepravdivé | Ano |
| 5 | Slunný | Chladný | Normální | Skutečný | Ne |
| 6 | Zatažený | Chladný | Normální | Skutečný | Ano |
| 7 | Deštivý | Mírné | Vysoký | Nepravdivé | Ne |
| 8 | Deštivý | Chladný | Normální | Nepravdivé | Ano |
| 9 | Slunný | Mírný | Normální | Nepravdivé | Ano |
| 10 | Deštivý | Mírné | Normální | Skutečný | Ano |
| jedenáct | Zatažený | Mírný | Vysoký | Skutečný | Ano |
| 12 | Zatažený | Horký | Normální | Nepravdivé | Ano |
| 13 | Slunný | Mírný | Vysoký | Skutečný | Ne |
Dataset je rozdělen na dvě části, a to matice rysů a vektor odezvy .
- Matice prvků obsahuje všechny vektory (řádky) datové sady, ve kterých se každý vektor skládá z hodnoty závislé funkce . Ve výše uvedené sadě dat jsou funkcemi „Výhled“, „Teplota“, „Vlhkost“ a „Větrno“.
- Vektor odezvy obsahuje hodnotu třídní proměnná (předpověď nebo výstup) pro každý řádek matice prvků. Ve výše uvedené datové sadě je název proměnné třídy ‚Hrát golf‘.
Nanebevzetí naivních Bayes
Základním předpokladem Naive Bayes je, že každá funkce vytváří:
- Nezávislost funkcí: Vlastnosti dat jsou na sobě podmíněně nezávislé, vzhledem k označení třídy.
- Spojité prvky jsou normálně distribuovány: Pokud je prvek spojitý, předpokládá se, že je normálně distribuován v rámci každé třídy.
- Diskrétní prvky mají multinomická rozdělení: Pokud je prvek diskrétní, předpokládá se, že má v každé třídě multinomické rozdělení.
- Vlastnosti jsou stejně důležité: Předpokládá se, že všechny vlastnosti přispívají stejnou měrou k predikci označení třídy.
- Žádná chybějící data: Data by neměla obsahovat žádné chybějící hodnoty.
Ve vztahu k našemu datovému souboru lze tento koncept chápat jako:
- Předpokládáme, že žádná dvojice funkcí není závislá. Například teplota „horká“ nemá nic společného s vlhkostí nebo výhled „deštivý“ nemá žádný vliv na vítr. Předpokládá se tedy, že vlastnosti jsou nezávislý .
- Za druhé, každému prvku je přisuzována stejná váha (nebo důležitost). Například znalost pouze teploty a vlhkosti nemůže přesně předpovědět výsledek. Žádný z atributů není irelevantní a předpokládá se, že přispívá stejně k výsledku.
Předpoklady provedené Naivní Bayesovou nejsou obecně správné v situacích reálného světa. Ve skutečnosti není předpoklad nezávislosti nikdy správný, ale v praxi často funguje dobře. Nyní, než přejdeme k vzorci pro Naivní Bayes, je důležité vědět o Bayesově teorému.
Bayesova věta
Bayesův teorém zjišťuje pravděpodobnost, že událost nastane, s pravděpodobností jiné události, která již nastala. Bayesův teorém je matematicky vyjádřen jako následující rovnice:
kde A a B jsou události a P(B) ≠ 0
- V podstatě se snažíme najít pravděpodobnost jevu A za předpokladu, že jev B je pravdivý. Událost B se také nazývá důkaz .
- P(A) je priori of A (předchozí pravděpodobnost, tj. pravděpodobnost události před tím, než je vidět důkaz). Důkazem je hodnota atributu neznámé instance (zde je to událost B).
- P(B) je mezní pravděpodobnost: pravděpodobnost důkazu.
- P(A|B) je aposteriorní pravděpodobnost B, tj. pravděpodobnost události poté, co je vidět důkaz.
- P(B|A) je pravděpodobnost pravděpodobnosti, tj. pravděpodobnost, že se hypotéza na základě důkazů splní.
Nyní, s ohledem na naši datovou sadu, můžeme použít Bayesovu větu následujícím způsobem:
kde y je proměnná třídy a X je závislý znakový vektor (o velikosti n ), kde:
Jen pro vyjasnění, příkladem vektoru prvků a odpovídající proměnné třídy může být: (viz 1. řádek datové sady)
X = (Rainy, Hot, High, False)> y = No>
Takže,
Ve vztahu k našemu datovému souboru lze tento koncept chápat jako:
- Předpokládáme, že žádná dvojice funkcí není závislá. Například teplota „horká“ nemá nic společného s vlhkostí nebo výhled „deštivý“ nemá žádný vliv na vítr. Předpokládá se tedy, že vlastnosti jsou nezávislý .
- Za druhé, každému prvku je přisuzována stejná váha (nebo důležitost). Například znalost pouze teploty a vlhkosti nemůže přesně předpovědět výsledek. Žádný z atributů není irelevantní a předpokládá se, že přispívá stejně k výsledku.
Nyní je čas vložit do Bayesovy věty naivní předpoklad, který zní: nezávislost mezi funkcemi. Tak a teď jsme se rozdělili důkaz do samostatných částí.
Nyní, pokud jsou jakékoli dvě události A a B nezávislé, pak
P(A,B) = P(A)P(B)>
Dostáváme se tedy k výsledku:
který lze vyjádřit jako:
Nyní, protože jmenovatel zůstává pro daný vstup konstantní, můžeme tento výraz odstranit:
Nyní musíme vytvořit model klasifikátoru. K tomu najdeme pravděpodobnost dané množiny vstupů pro všechny možné hodnoty proměnné třídy a a vyzvedněte výstup s maximální pravděpodobností. To lze vyjádřit matematicky takto:
Nakonec nám tedy zbývá úkol vypočítat
Vezměte prosím na vědomí, že
Různé naivní Bayesovy klasifikátory se liší především předpoklady, které uvádějí ohledně distribuce
Zkusme použít výše uvedený vzorec ručně na naši datovou sadu o počasí. K tomu potřebujeme provést nějaké předběžné výpočty na naší datové sadě.
Musíme najít
Takže na obrázku výše jsme spočítali
Také musíme najít třídní pravděpodobnosti
Takže teď jsme hotovi s našimi předvýpočty a klasifikátor je připraven!
java třídicí seznam
Pojďme to otestovat na nové sadě funkcí (nazvěme to dnes):
today = (Sunny, Hot, Normal, False)>
a pravděpodobnost, že nebudete hrát golf, je dána:
Protože P(dnes) je společné pro obě pravděpodobnosti, můžeme P(dnes) ignorovat a najít proporcionální pravděpodobnosti jako:
a
Od té doby
Tato čísla lze převést na pravděpodobnost tak, že se součet rovná 1 (normalizace):
a
Od té doby
Takže předpověď, že se bude hrát golf, je „Ano“.
Metoda, kterou jsme probrali výše, je použitelná pro diskrétní data. V případě spojitých dat musíme udělat nějaké předpoklady ohledně rozložení hodnot každého prvku. Různé naivní Bayesovy klasifikátory se liší především předpoklady, které uvádějí ohledně distribuce
Typy naivního Bayesova modelu
Existují tři typy modelu Naive Bayes:
Gaussův naivní Bayesův klasifikátor
V Gaussian Naive Bayes se předpokládá, že spojité hodnoty spojené s každým prvkem jsou distribuovány podle Gaussova rozložení. Také se nazývá Gaussovo rozdělení Normální distribuce Když je vynesena do grafu, dává křivku ve tvaru zvonu, která je symetrická podle střední hodnoty hodnot prvku, jak je uvedeno níže: 
Aktualizovaná tabulka předchozích pravděpodobností pro funkci výhledu je následující:
Předpokládá se, že pravděpodobnost rysů je Gaussova, podmíněná pravděpodobnost je tedy dána vztahem:
Nyní se podíváme na implementaci klasifikátoru Gaussian Naive Bayes pomocí scikit-learn.
| Ano | Ne | P (Ano) | P(Ne) |
|---|---|---|---|---|
Slunný | 3 | 2 | 3/9 | 2/5 |
Deštivý | 4 | 0 | 4/9 | 0/5 |
Zatažený | 2 | 3 | 2/9 | 3/5 |
Celkový | 9 | 5 | 100% | 100% |
Krajta
# load the iris dataset> from> sklearn.datasets>import> load_iris> iris>=> load_iris()> > # store the feature matrix (X) and response vector (y)> X>=> iris.data> y>=> iris.target> > # splitting X and y into training and testing sets> from> sklearn.model_selection>import> train_test_split> X_train, X_test, y_train, y_test>=> train_test_split(X, y, test_size>=>0.4>, random_state>=>1>)> > # training the model on training set> from> sklearn.naive_bayes>import> GaussianNB> gnb>=> GaussianNB()> gnb.fit(X_train, y_train)> > # making predictions on the testing set> y_pred>=> gnb.predict(X_test)> > # comparing actual response values (y_test) with predicted response values (y_pred)> from> sklearn>import> metrics> print>(>'Gaussian Naive Bayes model accuracy(in %):'>, metrics.accuracy_score(y_test, y_pred)>*>100>)> |
Output: Gaussian Naive Bayes model accuracy(in %): 95.0 Multinomial Naive Bayes Feature vectors represent the frequencies with which certain events have been generated by a multinomial distribution. This is the event model typically used for document classification. Bernoulli Naive Bayes In the multivariate Bernoulli event model, features are independent booleans (binary variables) describing inputs. Like the multinomial model, this model is popular for document classification tasks, where binary term occurrence(i.e. a word occurs in a document or not) features are used rather than term frequencies(i.e. frequency of a word in the document). Advantages of Naive Bayes ClassifierEasy to implement and computationally efficient.Effective in cases with a large number of features.Performs well even with limited training data.It performs well in the presence of categorical features. For numerical features data is assumed to come from normal distributionsDisadvantages of Naive Bayes ClassifierAssumes that features are independent, which may not always hold in real-world data.Can be influenced by irrelevant attributes.May assign zero probability to unseen events, leading to poor generalization.Applications of Naive Bayes Classifier Spam Email Filtering : Classifies emails as spam or non-spam based on features. Text Classification : Used in sentiment analysis, document categorization, and topic classification. Medical Diagnosis: Helps in predicting the likelihood of a disease based on symptoms. Credit Scoring: Evaluates creditworthiness of individuals for loan approval. Weather Prediction : Classifies weather conditions based on various factors.As we reach to the end of this article, here are some important points to ponder upon: In spite of their apparently over-simplified assumptions, naive Bayes classifiers have worked quite well in many real-world situations, famously document classification and spam filtering. They require a small amount of training data to estimate the necessary parameters.Naive Bayes learners and classifiers can be extremely fast compared to more sophisticated methods. The decoupling of the class conditional feature distributions means that each distribution can be independently estimated as a one dimensional distribution. This in turn helps to alleviate problems stemming from the curse of dimensionality.ConclusionIn conclusion, Naive Bayes classifiers, despite their simplified assumptions, prove effective in various applications, showcasing notable performance in document classification and spam filtering. Their efficiency, speed, and ability to work with limited data make them valuable in real-world scenarios, compensating for their naive independence assumption. Frequently Asked Questions on Naive Bayes ClassifiersWhat is Naive Bayes real example?Naive Bayes is a simple probabilistic classifier based on Bayes’ theorem. It assumes that the features of a given data point are independent of each other, which is often not the case in reality. However, despite this simplifying assumption, Naive Bayes has been shown to be surprisingly effective in a wide range of applications. Why is it called Naive Bayes?Naive Bayes is called naive because it assumes that the features of a data point are independent of each other. This assumption is often not true in reality, but it does make the algorithm much simpler to compute. What is an example of a Bayes classifier?A Bayes classifier is a type of classifier that uses Bayes’ theorem to compute the probability of a given class for a given data point. Naive Bayes is one of the most common types of Bayes classifiers. What is better than Naive Bayes?There are several classifiers that are better than Naive Bayes in some situations. For example, logistic regression is often more accurate than Naive Bayes, especially when the features of a data point are correlated with each other. Can Naive Bayes probability be greater than 1?No, the probability of an event cannot be greater than 1. The probability of an event is a number between 0 and 1, where 0 indicates that the event is impossible and 1 indicates that the event is certain. >