logo

Naivné Bayesove klasifikátory

Naivné Bayesove klasifikátory, rodina algoritmov založených na Bayesovej vete. Napriek naivnému predpokladu nezávislosti funkcií sú tieto klasifikátory široko používané pre svoju jednoduchosť a efektívnosť v strojovom učení. Článok sa ponára do teórie, implementácie a aplikácií a osvetľuje ich praktické využitie napriek príliš zjednodušeným predpokladom.

Čo sú klasifikátory Naive Bayes?

Naivné Bayesove klasifikátory sú kolekciou klasifikačných algoritmov založených na Bayesovej vete. Nejde o jediný algoritmus, ale o skupinu algoritmov, kde všetky zdieľajú spoločný princíp, t. j. každá dvojica klasifikovaných funkcií je na sebe nezávislá. Na začiatok zvážime súbor údajov.



Klasifikátor Naïve Bayes, jeden z najjednoduchších a najúčinnejších klasifikačných algoritmov, pomáha pri rýchlom vývoji modelov strojového učenia s možnosťou rýchlej predikcie.

Pre klasifikačné problémy sa používa naivný Bayesov algoritmus. Často sa používa pri klasifikácii textu. V úlohách klasifikácie textu obsahujú údaje vysoký rozmer (keďže každé slovo predstavuje jeden znak v údajoch). Používa sa pri filtrovaní spamu, detekcii sentimentu, klasifikácii hodnotenia atď. Výhodou použitia naivného Bayes je jeho rýchlosť. Je rýchly a predikcia je jednoduchá s veľkým rozmerom dát.

Tento model predpovedá pravdepodobnosť, že inštancia patrí do triedy s danou sadou hodnôt vlastností. Je to pravdepodobnostný klasifikátor. Je to preto, lebo predpokladá, že jeden prvok v modeli je nezávislý od existencie iného prvku. Inými slovami, každá funkcia prispieva k predpovediam bez vzájomného vzťahu. V reálnom svete táto podmienka vyhovuje len zriedka. Využíva Bayesovu vetu v algoritme na trénovanie a predikciu



Prečo sa to volá Naive Bayes?

Naivná časť názvu naznačuje zjednodušujúci predpoklad klasifikátora Naïve Bayes. Klasifikátor predpokladá, že vlastnosti použité na opis pozorovania sú podmienene nezávislé vzhľadom na označenie triedy. Bayesova časť názvu odkazuje na reverenda Thomasa Bayesa, štatistika a teológa z 18. storočia, ktorý sformuloval Bayesovu vetu.

Zvážte fiktívny súbor údajov, ktorý popisuje poveternostné podmienky pri hraní golfu. Vzhľadom na poveternostné podmienky každá n-tica klasifikuje podmienky ako vhodné (Áno) alebo nevhodné (Nie) na hranie golfu. Tu je tabuľková reprezentácia nášho súboru údajov.

OutlookTeplotaVlhkosťVeternoHrať golf
0DaždivéHorúceVysokáNepravdivéNie
1DaždivéHorúceVysokáPravdaNie
2ZatiahnutéHorúceVysokáNepravdivéÁno
3SlnečnoMierneVysokáNepravdivéÁno
4SlnečnoV pohodeNormálneNepravdivéÁno
5SlnečnoV pohodeNormálnePravdaNie
6ZatiahnutéV pohodeNormálnePravdaÁno
7DaždivéMierneVysokáNepravdivéNie
8DaždivéV pohodeNormálneNepravdivéÁno
9SlnečnoMierneNormálneNepravdivéÁno
10DaždivéMierneNormálnePravdaÁno
jedenásťZatiahnutéMierneVysokáPravdaÁno
12ZatiahnutéHorúceNormálneNepravdivéÁno
13SlnečnoMierneVysokáPravdaNie

Súbor údajov je rozdelený na dve časti, a to matica vlastností a vektor odozvy .



  • Matica prvkov obsahuje všetky vektory (riadky) množiny údajov, v ktorých každý vektor pozostáva z hodnoty závislé funkcie . Vo vyššie uvedenom súbore údajov sú funkcie „Výhľad“, „Teplota“, „Vlhkosť“ a „Vietor“.
  • Vektor odozvy obsahuje hodnotu premenná triedy (predikcia alebo výstup) pre každý riadok matice prvkov. Vo vyššie uvedenom súbore údajov je názov premennej triedy „Hrať golf“.

Nanebovzatie naivného Bayesa

Základným predpokladom Naive Bayes je, že každá funkcia vytvára:

struny v c
  • Nezávislosť funkcií: Vlastnosti údajov sú podmienečne nezávislé od seba, vzhľadom na označenie triedy.
  • Nepretržité funkcie sú normálne rozdelené: Ak je znak súvislý, potom sa predpokladá, že je normálne distribuovaný v rámci každej triedy.
  • Diskrétne prvky majú multinomické rozdelenie: Ak je znak diskrétny, potom sa predpokladá, že má multinomické rozdelenie v rámci každej triedy.
  • Vlastnosti sú rovnako dôležité: Predpokladá sa, že všetky vlastnosti prispievajú rovnakou mierou k predikcii označenia triedy.
  • Žiadne chýbajúce údaje: Údaje by nemali obsahovať žiadne chýbajúce hodnoty.

Vo vzťahu k nášmu súboru údajov možno tento pojem chápať ako:

  • Predpokladáme, že žiadna dvojica funkcií nie je závislá. Napríklad teplota „horúca“ nemá nič spoločné s vlhkosťou alebo výhľad „daždivý“ nemá žiadny vplyv na vietor. Preto sa predpokladá, že vlastnosti sú nezávislý .
  • Po druhé, každej funkcii sa pripisuje rovnaká váha (alebo dôležitosť). Napríklad samotná znalosť teploty a vlhkosti nemôže presne predpovedať výsledok. Žiadny z atribútov nie je irelevantný a predpokladá sa, že prispieva rovnako k výsledku.

Predpoklady Naive Bayes nie sú vo všeobecnosti správne v situáciách skutočného sveta. V skutočnosti predpoklad nezávislosti nie je nikdy správny, ale v praxi často funguje dobre. Teraz, predtým ako prejdeme k vzorcu pre Naivného Bayesa, je dôležité poznať Bayesovu vetu.

Bayesova veta

Bayesova veta zisťuje pravdepodobnosť výskytu udalosti vzhľadom na pravdepodobnosť inej udalosti, ktorá už nastala. Bayesova veta je vyjadrená matematicky ako nasledujúca rovnica:

P(A|B) = fracP(B{P(B)}

kde A a B sú udalosti a P(B) ≠ 0

  • V podstate sa snažíme nájsť pravdepodobnosť udalosti A, ak je udalosť B pravdivá. Udalosť B sa tiež nazýva dôkazy .
  • P(A) je priori z A (predchádzajúca pravdepodobnosť, t. j. pravdepodobnosť udalosti predtým, ako sa objaví dôkaz). Dôkazom je hodnota atribútu neznámej inštancie (tu je to udalosť B).
  • P(B) je okrajová pravdepodobnosť: pravdepodobnosť dôkazu.
  • P(A|B) je aposteriórna pravdepodobnosť B, t. j. pravdepodobnosť udalosti po tom, čo je videný dôkaz.
  • P(B|A) je pravdepodobnosť pravdepodobnosti, tj pravdepodobnosť, že sa hypotéza splní na základe dôkazov.

Teraz, pokiaľ ide o náš súbor údajov, môžeme použiť Bayesovu vetu nasledujúcim spôsobom:

P(y|X) = fracP(X{P(X)}

kde y je premenná triedy a X je závislý znakový vektor (veľkosti n ) kde:

X = (x_1,x_2,x_3,…..,x_n)

Len na vysvetlenie, príkladom vektora prvkov a zodpovedajúcej premennej triedy môže byť: (pozri 1. riadok množiny údajov)

X = (Rainy, Hot, High, False)>
y = No>

Takže v podstateP(y|X) to znamená pravdepodobnosť, že nebudete hrať golf, ak sú poveternostné podmienky daždivé, teplota je horúca, vysoká vlhkosť a bezvetrie.

Vo vzťahu k nášmu súboru údajov možno tento pojem chápať ako:

  • Predpokladáme, že žiadna dvojica funkcií nie je závislá. Napríklad teplota „horúca“ nemá nič spoločné s vlhkosťou alebo výhľad „daždivý“ nemá žiadny vplyv na vietor. Preto sa predpokladá, že vlastnosti sú nezávislý .
  • Po druhé, každej funkcii sa pripisuje rovnaká váha (alebo dôležitosť). Napríklad samotná znalosť teploty a vlhkosti nemôže presne predpovedať výsledok. Žiadny z atribútov nie je irelevantný a predpokladá sa, že prispieva rovnako k výsledku.

Teraz je čas vložiť do Bayesovej vety naivný predpoklad, ktorý je, nezávislosť medzi funkciami. Tak a teraz sme sa rozdelili dôkazy do samostatných častí.

Ak sú teda akékoľvek dve udalosti A a B nezávislé, potom

P(A,B) = P(A)P(B)>

Dostávame sa teda k výsledku:

P(y|x_1,…,x_n) = frac P(x_1{P(x_1)P(x_2)…P(x_n)}

výhody elektriny

ktoré možno vyjadriť ako:

P(y|x_1,…,x_n) = frac{P(y)prod_{i=1}^{n}P(x_i|y)}{P(x_1)P(x_2)…P(x_n)}

Teraz, keďže menovateľ zostáva pre daný vstup konštantný, môžeme tento výraz odstrániť:

P(y|x_1,…,x_n)propto P(y)prod_{i=1}^{n}P(x_i|y)

Teraz musíme vytvoriť model klasifikátora. Na tento účel nájdeme pravdepodobnosť danej množiny vstupov pre všetky možné hodnoty premennej triedy a a vyzdvihnúť výstup s maximálnou pravdepodobnosťou. Dá sa to vyjadriť matematicky takto:

y = argmax_{y} P(y)prod_{i=1}^{n}P(x_i|y)

Nakoniec nám teda ostáva úloha vypočítať P(y) aP(x_i | y) .

Vezmite prosím na vedomie, žeP(y) sa nazýva aj triedna pravdepodobnosť aP(x_i | y) sa nazýva podmienená pravdepodobnosť.

Rôzne naivné Bayesove klasifikátory sa líšia najmä predpokladmi, ktoré robia o distribúciiP(x_i | y).

Skúsme použiť vyššie uvedený vzorec manuálne na náš súbor údajov o počasí. Na to musíme urobiť nejaké predbežné výpočty na našom súbore údajov.

Musíme nájsť P(x_i | y_j) pre každýx_i v X ay_j v r. Všetky tieto výpočty sú uvedené v nasledujúcich tabuľkách:


Takže na obrázku vyššie sme vypočítaliP(x_i | y_j) pre každýx_i v X ay_j v r ručne v tabuľkách 1-4. Napríklad pravdepodobnosť hrania golfu pri nízkej teplote, t.j. P(teplota = chladno | hrať golf = áno) = 3/9.

java previesť znak na reťazec

Tiež musíme nájsť triedne pravdepodobnostiP(y) ktorý bol vypočítaný v tabuľke 5. Napríklad P(hrať golf = Áno) = 9/14.

Takže teraz sme skončili s našimi predbežnými výpočtami a klasifikátor je pripravený!

Poďme to otestovať na novej sade funkcií (nazvime to dnes):

today = (Sunny, Hot, Normal, False)>

P(Yes | today) = fracYes)P(No Wind{P(today)}

a pravdepodobnosť, že nebudete hrať golf, je daná:

P(No | today) = fracP(Sunny Outlook{P(today)}

Keďže P(dnes) je spoločné pre obe pravdepodobnosti, môžeme P(dnes) ignorovať a nájsť proporcionálne pravdepodobnosti ako:

P(Yes | today) propto frac{3}{9}.frac{2}{9}.frac{6}{9}.frac{6}{9}.frac{9}{14} approx 0.02116

a

P(No | today) propto frac{3}{5}.frac{2}{5}.frac{1}{5}.frac{2}{5}.frac{5}{14} approx 0.0068

Teraz, odvtedy

P(Yes | today) + P(No | today) = 1

Tieto čísla možno previesť na pravdepodobnosť tak, že sa súčet rovná 1 (normalizácia):

P(Yes | today) = frac{0.02116}{0.02116 + 0.0068} approx 0.0237

a

P(No | today) = frac{0.0068}{0.0141 + 0.0068} approx 0.33

Od r

P(Yes | today)>P(Nie | dnes)

Takže predpoveď, že sa bude hrať golf, je „Áno“.

Metóda, o ktorej sme hovorili vyššie, je použiteľná pre diskrétne dáta. V prípade súvislých údajov musíme urobiť nejaké predpoklady týkajúce sa rozloženia hodnôt každého prvku. Rôzne naivné Bayesove klasifikátory sa líšia najmä predpokladmi, ktoré robia o distribúciiP(x_i | y).

Typy naivného Bayesovho modelu

Existujú tri typy modelu Naive Bayes:

objektová rovnosť v jave

Gaussovský naivný Bayesov klasifikátor

V Gaussian Naive Bayes sa predpokladá, že spojité hodnoty spojené s každým znakom sú rozdelené podľa Gaussovho rozdelenia. Nazýva sa aj Gaussovo rozdelenie Normálne rozdelenie Pri vykreslení poskytuje krivku v tvare zvona, ktorá je symetrická podľa priemeru hodnôt vlastností, ako je uvedené nižšie: normálne

Aktualizovaná tabuľka predchádzajúcich pravdepodobností pre funkciu výhľadu je nasledovná:

Pravdepodobnosť znakov sa považuje za Gaussovu, teda podmienená pravdepodobnosť je daná:

P(x_i | y) = frac{1}{sqrt{2pisigma _{y}^{2} }} exp left (-frac{(x_i-mu _{y})^2}{2sigma _{y}^{2}} ight )

Teraz sa pozrieme na implementáciu klasifikátora Gaussian Naive Bayes pomocou scikit-learn.


Áno

Nie

P (áno)

P(Nie)

Slnečno

3

2

3/9

2/5

Daždivé

4

koľko rokov má kylie jenner

0

9. 4

0/5

Zatiahnuté

2

3

2/9

3/5

Celkom

9

5

100%

100%


Python

# 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.>