logo

Naiivit Bayes-luokittelut

Naiivit Bayes-luokittelut, Bayesin lauseeseen perustuva algoritmiperhe. Huolimatta naiivista ominaisuuksien riippumattomuuden oletuksesta, näitä luokittimia käytetään laajalti niiden yksinkertaisuuden ja tehokkuuden vuoksi koneoppimisessa. Artikkelissa perehdytään teoriaan, toteutukseen ja sovelluksiin ja valotetaan niiden käytännön hyödyllisyyttä liian yksinkertaistetuista oletuksista huolimatta.

Mikä on Naive Bayes -luokittelu?

Naiivit Bayes-luokittelut ovat kokoelma Bayesin lauseeseen perustuvia luokitusalgoritmeja. Se ei ole yksittäinen algoritmi, vaan algoritmiperhe, jossa niillä kaikilla on yhteinen periaate, eli jokainen luokiteltava ominaisuuspari on riippumaton toisistaan. Aluksi tarkastellaan tietojoukkoa.



Yksi yksinkertaisimmista ja tehokkaimmista luokittelualgoritmeista, Naive Bayes -luokitin auttaa nopeassa kehityksessä koneoppimismalleja, joissa on nopeat ennustusominaisuudet.

Luokitteluongelmiin käytetään naiivia Bayes-algoritmia. Sitä käytetään paljon tekstin luokittelussa. Tekstin luokittelutehtävissä datalla on korkea ulottuvuus (koska jokainen sana edustaa yhtä ominaisuutta tiedossa). Sitä käytetään roskapostin suodatuksessa, tunteiden havaitsemisessa, luokittelussa jne. Naiivin Bayesin etuna on sen nopeus. Se on nopeaa ja ennustaminen on helppoa suuren dataulottuvuuden ansiosta.

Tämä malli ennustaa todennäköisyyden, että esiintymä kuuluu luokkaan, jolla on tietty ominaisuusarvo. Se on todennäköisyysluokitus. Tämä johtuu siitä, että se olettaa, että yksi mallin ominaisuus on riippumaton toisen ominaisuuden olemassaolosta. Toisin sanoen jokainen ominaisuus myötävaikuttaa ennusteisiin ilman mitään yhteyttä toisiinsa. Todellisessa maailmassa tämä ehto tyydyttää harvoin. Se käyttää Bayesin lausetta harjoitus- ja ennustamisalgoritmissa



Miksi sitä kutsutaan Naive Bayesiksi?

Nimen Naive-osa ilmaisee Naive Bayes -luokittajan tekemän yksinkertaistavan oletuksen. Luokitin olettaa, että havainnon kuvaamiseen käytetyt piirteet ovat ehdollisesti riippumattomia luokkatunnisteen perusteella. Nimen Bayes-osa viittaa pastori Thomas Bayesiin, 1700-luvun tilastotieteilijään ja teologiin, joka muotoili Bayesin lauseen.

Harkitse kuvitteellista tietojoukkoa, joka kuvaa golfin pelaamisen sääolosuhteet. Sääolosuhteet huomioon ottaen jokainen tuple luokittelee olosuhteet golfin pelaamiseen soveltuviksi (Kyllä) tai sopimattomiksi (Ei). Tässä on taulukkoesitys tietojoukostamme.

NäkymätLämpötilaKosteusTuulinenPelata golfia
0SateinenKuumaKorkeaVääräEi
1SateinenKuumaKorkeaTottaEi
2PilvinenKuumaKorkeaVääräJoo
3AurinkoinenLieväKorkeaVääräJoo
4AurinkoinenViileäNormaaliVääräJoo
5AurinkoinenViileäNormaaliTottaEi
6PilvinenViileäNormaaliTottaJoo
7SateinenLieväKorkeaVääräEi
8SateinenViileäNormaaliVääräJoo
9AurinkoinenLieväNormaaliVääräJoo
10SateinenLieväNormaaliTottaJoo
yksitoistaPilvinenLieväKorkeaTottaJoo
12PilvinenKuumaNormaaliVääräJoo
13AurinkoinenLieväKorkeaTottaEi

Aineisto on jaettu kahteen osaan, nimittäin ominaisuusmatriisi ja vastevektori .



  • Ominaisuusmatriisi sisältää kaikki tietojoukon vektorit (rivit), joissa jokainen vektori koostuu arvosta riippuvaisia ​​ominaisuuksia . Yllä olevassa tietojoukossa ominaisuuksia ovat 'Outlook', 'Lämpötila', 'Kosteus' ja 'Tuulinen'.
  • Vastevektori sisältää arvon luokan muuttuja (ennustus tai tulos) jokaiselle ominaisuusmatriisin riville. Yllä olevassa tietojoukossa luokkamuuttujan nimi on 'Pelaa golfia'.

Naive Bayesin oletus

Naive Bayesin perusoletus on, että jokainen ominaisuus tekee:

postorder traversal binääripuu
  • Ominaisuuden riippumattomuus: Datan ominaisuudet ovat ehdollisesti riippumattomia toisistaan ​​luokkatunnisteen mukaan.
  • Jatkuvat ominaisuudet jaetaan normaalisti: Jos piirre on jatkuva, sen oletetaan olevan normaalijakautumassa kunkin luokan sisällä.
  • Erillisillä ominaisuuksilla on moninomijakaumat: Jos piirre on diskreetti, sillä oletetaan olevan multinomijakauma kussakin luokassa.
  • Ominaisuudet ovat yhtä tärkeitä: Kaikkien ominaisuuksien oletetaan vaikuttavan yhtäläisesti luokkatunnisteen ennustamiseen.
  • Ei puuttuvia tietoja: Tiedoissa ei saa olla puuttuvia arvoja.

Tietojoukkomme suhteen tämä käsite voidaan ymmärtää seuraavasti:

  • Oletetaan, että mikään ominaisuuspari ei ole riippuvainen. Esimerkiksi lämpötilalla 'Kuuma' ei ole mitään tekemistä kosteuden kanssa tai näkymällä 'sade' ei ole vaikutusta tuuliin. Siksi ominaisuuksien oletetaan olevan riippumaton .
  • Toiseksi jokaiselle ominaisuudelle annetaan sama painoarvo (tai tärkeys). Esimerkiksi pelkän lämpötilan ja kosteuden tietäminen ei voi ennustaa tulosta tarkasti. Mikään ominaisuuksista ei ole merkityksetön, ja sen oletetaan vaikuttavan yhtä tulokseen.

Naive Bayesin oletukset eivät yleensä pidä paikkaansa todellisissa tilanteissa. Itse asiassa riippumattomuusoletus ei ole koskaan oikea, mutta toimii usein hyvin käytännössä. Ennen kuin siirryt Naive Bayesin kaavaan, on tärkeää tietää Bayesin lause.

Bayesin lause

Bayesin lause etsii tapahtuman todennäköisyyden, kun otetaan huomioon toisen jo tapahtuneen tapahtuman todennäköisyys. Bayesin lause ilmaistaan ​​matemaattisesti seuraavana yhtälönä:

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

missä A ja B ovat tapahtumia ja P(B) ≠ 0

  • Periaatteessa yritämme löytää tapahtuman A todennäköisyyden, koska tapahtuma B on tosi. Tapahtumaa B kutsutaan myös nimellä todisteita .
  • P(A) on priori A:sta (ennen todennäköisyys, ts. tapahtuman todennäköisyys ennen kuin todisteet nähdään). Todiste on tuntemattoman esiintymän attribuuttiarvo (tässä se on tapahtuma B).
  • P(B) on marginaalinen todennäköisyys: todisteiden todennäköisyys.
  • P(A|B) on B:n posteriori todennäköisyys, eli tapahtuman todennäköisyys todisteiden näkemisen jälkeen.
  • P(B|A) on todennäköisyystodennäköisyys eli todennäköisyys, että hypoteesi toteutuu todisteiden perusteella.

Nyt, mitä tulee tietojoukkoon, voimme soveltaa Bayesin lausetta seuraavalla tavalla:

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

missä y on luokkamuuttuja ja X on riippuvainen piirrevektori (koko n ) missä:

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

Selvyyden vuoksi esimerkki piirrevektorista ja vastaavasta luokkamuuttujasta voi olla: (katso tietojoukon 1. rivi)

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

Periaatteessa,P(y|X) tässä tarkoittaa todennäköisyyttä, että ei pelaa golfia, koska sääolosuhteet ovat sateiset, lämpötila on kuuma, korkea kosteus eikä tuulta.

Tietojoukkomme suhteen tämä käsite voidaan ymmärtää seuraavasti:

  • Oletetaan, että mikään ominaisuuspari ei ole riippuvainen. Esimerkiksi lämpötilalla 'Kuuma' ei ole mitään tekemistä kosteuden kanssa tai näkymällä 'sade' ei ole vaikutusta tuuliin. Siksi ominaisuuksien oletetaan olevan riippumaton .
  • Toiseksi jokaiselle ominaisuudelle annetaan sama painoarvo (tai tärkeys). Esimerkiksi pelkän lämpötilan ja kosteuden tietäminen ei voi ennustaa tulosta tarkasti. Mikään ominaisuuksista ei ole merkityksetön, ja sen oletetaan vaikuttavan yhtä tulokseen.

Nyt on aika esittää naiivi oletus Bayesin lauseeseen, joka on itsenäisyys ominaisuuksien joukossa. Joten nyt erosimme todisteita itsenäisiin osiin.

Jos kaksi tapahtumaa A ja B ovat riippumattomia,

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

Pääsemme siis tulokseen:

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

joka voidaan ilmaista seuraavasti:

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)}

Nyt kun nimittäjä pysyy vakiona tietylle syötteelle, voimme poistaa tämän termin:

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

Nyt meidän on luotava luokittelumalli. Tätä varten löydämme tietyn syötejoukon todennäköisyyden luokkamuuttujan kaikille mahdollisille arvoille ja ja poimi tulos suurimmalla todennäköisyydellä. Tämä voidaan ilmaista matemaattisesti seuraavasti:

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

Joten lopuksi jäämme laskentatehtävänä P(y) jaP(x_i | y) .

ero leijonan ja tiikerin välillä

Huomatkaa ettäP(y) kutsutaan myös luokan todennäköisyydeksi jaP(x_i | y) kutsutaan ehdolliseksi todennäköisyydeksi.

Erilaiset naiivit Bayes-luokittajat eroavat toisistaan ​​pääasiassa niiden jakautumista koskevien oletusten perusteellaP(x_i | y).

Yritetään soveltaa yllä olevaa kaavaa manuaalisesti säätietojoukossamme. Tätä varten meidän on suoritettava joitain esilaskelmia tietojoukostamme.

Meidän on löydettävä P(x_i | y_j) jokaisellex_i X:ssä jay_j vuonna y. Kaikki nämä laskelmat on esitetty alla olevissa taulukoissa:


Joten yllä olevassa kuvassa olemme laskeneetP(x_i | y_j) jokaisellex_i X:ssä jay_j y:ssä manuaalisesti taulukoissa 1-4. Esimerkiksi golfin pelaamisen todennäköisyys, kun lämpötila on viileä, eli P(lämpötila = viileä | pelaa golfia = Kyllä) = 3/9.

Lisäksi meidän on löydettävä luokkatodennäköisyydetP(y) joka on laskettu taulukosta 5. Esimerkiksi P(pelaa golfia = Kyllä) = 9/14.

Joten nyt olemme tehneet esilaskumme ja luokitin on valmis!

Testataanpa sitä uusilla ominaisuuksilla (kutsutaanpa sitä tänään):

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

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

ja todennäköisyys olla pelaamatta golfia saadaan seuraavasti:

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

Koska P(tänään) on yhteinen molemmissa todennäköisyyksissä, voimme jättää P(tänään) huomioimatta ja löytää suhteelliset todennäköisyydet seuraavasti:

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

ja

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

Nyt siitä lähtien

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

Nämä luvut voidaan muuntaa todennäköisyyksiksi tekemällä summaksi 1 (normalisointi):

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

ja

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

Siitä asti kun

P(Yes | today)>P(Ei | tänään)

Joten ennuste, että golfia pelataan, on 'Kyllä'.

Menetelmää, josta keskustelimme edellä, voidaan soveltaa diskreetille datalle. Jatkuvan datan tapauksessa meidän on tehtävä joitakin oletuksia kunkin ominaisuuden arvojen jakautumisesta. Erilaiset naiivit Bayes-luokittajat eroavat toisistaan ​​pääasiassa niiden jakautumista koskevien oletusten perusteellaP(x_i | y).

Naiivien Bayes-mallin tyypit

Naive Bayes -malleja on kolmenlaisia:

Gaussin Naive Bayesin luokitin

Gaussin naiivilahdeissa kuhunkin ominaisuuteen liittyvien jatkuvien arvojen oletetaan jakautuvan Gaussin jakauman mukaan. Gaussin jakaumaa kutsutaan myös Normaalijakauma Piirrettynä se antaa kellon muotoisen käyrän, joka on symmetrinen piirrearvojen keskiarvon suhteen, kuten alla on esitetty: normaali

Päivitetty Outlook-ominaisuuden aikaisempien todennäköisyyksien taulukko on seuraava:

Ominaisuuksien todennäköisyyden oletetaan olevan Gaussin, joten ehdollinen todennäköisyys saadaan kaavalla:

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

Nyt tarkastelemme Gaussian Naive Bayes -luokittimen toteutusta scikit-learn-komennolla.


Joo

Ei

P (Kyllä)

P(ei)

Aurinkoinen

3

2

3/9

2/5

Sateinen

4

0

4/9

0/5

Pilvinen

2

3

2/9

3/5

Kaikki yhteensä

9

5

kokeile catch block javassa

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