logo

Naivieji Bayes klasifikatoriai

Naivieji Bayes klasifikatoriai, algoritmų šeima, pagrįsta Bayes teorema. Nepaisant naivaus funkcijų nepriklausomumo prielaidos, šie klasifikatoriai yra plačiai naudojami dėl jų paprastumo ir efektyvumo mašinų mokymuisi. Straipsnyje gilinamasi į teoriją, įgyvendinimą ir taikymą, paaiškinant jų praktinį naudingumą, nepaisant pernelyg supaprastintų prielaidų.

Kas yra Naive Bayes klasifikatoriai?

Naivieji Bayes klasifikatoriai yra klasifikavimo algoritmų rinkinys, pagrįstas Bayes teorema. Tai ne vienas algoritmas, o algoritmų šeima, kur visi jie turi bendrą principą, t. y. kiekviena klasifikuojamų požymių pora yra nepriklausoma viena nuo kitos. Norėdami pradėti, panagrinėkime duomenų rinkinį.



Vienas iš paprasčiausių ir veiksmingiausių klasifikavimo algoritmų, Naive Bayes klasifikatorius padeda sparčiai kurti mašininio mokymosi modelius su greito numatymo galimybėmis.

Klasifikavimo problemoms spręsti naudojamas naivus Bayes algoritmas. Jis dažnai naudojamas klasifikuojant tekstą. Teksto klasifikavimo užduotyse duomenys turi didelį matmenį (nes kiekvienas žodis reiškia vieną duomenų ypatybę). Jis naudojamas šlamšto filtravimui, nuotaikų aptikimui, reitingų klasifikavimui ir tt Naivių Bayes pranašumas yra jo greitis. Tai greita ir lengva nuspėti naudojant didelius duomenų matmenis.

Šis modelis numato tikimybę, kad egzempliorius priklausys klasei, turinčiai nurodytą savybių reikšmių rinkinį. Tai tikimybinis klasifikatorius. Taip yra todėl, kad daroma prielaida, kad viena modelio ypatybė nepriklauso nuo kitos savybės. Kitaip tariant, kiekviena savybė prisideda prie prognozių, nesusijusių tarpusavyje. Realiame pasaulyje ši sąlyga patenkinama retai. Jis naudoja Bayes teoremą mokymo ir prognozavimo algoritme



Kodėl jis vadinamas Naive Bayes?

Naivioji pavadinimo dalis nurodo supaprastinančią prielaidą, padarytą Naive Bayes klasifikatoriuje. Klasifikatorius daro prielaidą, kad stebėjimui apibūdinti naudojami požymiai yra sąlyginai nepriklausomi, atsižvelgiant į klasės etiketę. Bayes pavadinimo dalis reiškia gerbtą Thomasą Bayesą, XVIII amžiaus statistiką ir teologą, suformulavusį Bayeso teoremą.

Apsvarstykite išgalvotą duomenų rinkinį, kuriame aprašomos oro sąlygos žaidžiant golfą. Atsižvelgiant į oro sąlygas, kiekviena eilutė klasifikuoja sąlygas kaip tinkamas (Taip) arba netinkamas (Ne) žaisti golfą. Čia yra mūsų duomenų rinkinio lentelė.

OutlookTemperatūraDrėgmėVėjuotasŽaisti golfą
0LietingasKarštaAukštasNetiesaNr
1LietingasKarštaAukštasTiesaNr
2DebesuotaKarštaAukštasNetiesaTaip
3SaulėtaŠvelnusAukštasNetiesaTaip
4SaulėtaSaunusNormalusNetiesaTaip
5SaulėtaSaunusNormalusTiesaNr
6DebesuotaSaunusNormalusTiesaTaip
7LietingasŠvelnusAukštasNetiesaNr
8LietingasSaunusNormalusNetiesaTaip
9SaulėtaŠvelnusNormalusNetiesaTaip
10LietingasŠvelnusNormalusTiesaTaip
vienuolikaDebesuotaŠvelnusAukštasTiesaTaip
12DebesuotaKarštaNormalusNetiesaTaip
13SaulėtaŠvelnusAukštasTiesaNr

Duomenų rinkinys yra padalintas į dvi dalis, būtent savybių matrica ir atsako vektorius .



  • Funkcijų matricoje yra visi duomenų rinkinio vektoriai (eilutės), kurių kiekvienas vektorius susideda iš priklausomos savybės . Aukščiau pateiktame duomenų rinkinyje funkcijos yra „Perspektyvos“, „Temperatūra“, „Drėgmė“ ir „Vėjuotas“.
  • Atsako vektoriuje yra reikšmė klasės kintamasis (numatymas arba išvestis) kiekvienai funkcijų matricos eilutei. Aukščiau pateiktame duomenų rinkinyje klasės kintamojo pavadinimas yra „Žaisti golfą“.

Naiviojo Bayeso prielaida

Pagrindinė Naive Bayes prielaida yra ta, kad kiekviena savybė sudaro:

  • Funkcijos nepriklausomumas: Duomenų savybės yra sąlyginai nepriklausomos viena nuo kitos, atsižvelgiant į klasės etiketę.
  • Nuolatinės funkcijos paprastai paskirstomos: Jei ypatybė yra ištisinė, laikoma, kad ji yra normaliai paskirstyta kiekvienoje klasėje.
  • Atskiros funkcijos turi daugianarį skirstinį: Jei ypatybė yra diskreti, tada daroma prielaida, kad kiekvienoje klasėje jis turi daugianarį pasiskirstymą.
  • Savybės yra vienodai svarbios: Manoma, kad visos funkcijos vienodai prisideda prie klasės etiketės numatymo.
  • Netrūksta duomenų: Duomenyse neturi būti trūkstamų reikšmių.

Kalbant apie mūsų duomenų rinkinį, ši sąvoka gali būti suprantama taip:

  • Manome, kad nė viena požymių pora nėra priklausoma. Pavyzdžiui, temperatūra „karšta“ neturi nieko bendra su drėgme arba „lietaus“ prognozė neturi jokios įtakos vėjams. Taigi manoma, kad savybės yra nepriklausomas .
  • Antra, kiekvienai funkcijai suteikiamas toks pat svoris (arba svarba). Pavyzdžiui, žinant tik temperatūrą ir drėgmę, negalima tiksliai numatyti rezultato. Nė viena iš atributų nėra nesvarbi ir manoma, kad ji prisideda vienodai prie rezultato.

Naive Bayes prielaidos paprastai nėra teisingos realiose situacijose. Tiesą sakant, nepriklausomumo prielaida niekada nėra teisinga, bet dažnai gerai veikia praktikoje.Dabar, prieš pereinant prie Naive Bayes formulės, svarbu žinoti apie Bayes teoremą.

Bayes’o teorema

Bayeso teorema nustato įvykio tikimybę, atsižvelgiant į kito jau įvykusio įvykio tikimybę. Bajeso teorema matematiškai išreikšta tokia lygtimi:

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

kur A ir B yra įvykiai, o P(B) ≠ 0

  • Iš esmės mes bandome rasti įvykio A tikimybę, nes įvykis B yra teisingas. Įvykis B taip pat vadinamas kaip įrodymai .
  • P(A) yra priori A (ankstinė tikimybė, t. y. įvykio tikimybė prieš pamatant įrodymus). Įrodymas yra nežinomo atvejo atributo reikšmė (čia tai įvykis B).
  • P(B) yra ribinė tikimybė: įrodymų tikimybė.
  • P(A|B) yra B posteriori tikimybė, t. y. įvykio tikimybė pamačius įrodymus.
  • P(B|A) yra tikimybės tikimybė, ty tikimybė, kad hipotezė išsipildys remiantis įrodymais.

Dabar, kalbant apie mūsų duomenų rinkinį, Bayes teoremą galime pritaikyti tokiu būdu:

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

kur y yra klasės kintamasis, o X yra priklausomas ypatybių vektorius (dydžio n ) kur:

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

Kad būtų aišku, funkcijos vektoriaus ir atitinkamo klasės kintamojo pavyzdys gali būti: (žr. 1-ąją duomenų rinkinio eilutę)

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

Taigi iš esmės,P(y|X) čia reiškia, kad golfo nežaidimo tikimybė, atsižvelgiant į tai, kad oro sąlygos yra lietingos, temperatūra karšta, didelė drėgmė ir nėra vėjo.

Kalbant apie mūsų duomenų rinkinį, ši sąvoka gali būti suprantama taip:

  • Manome, kad nė viena požymių pora nėra priklausoma. Pavyzdžiui, temperatūra „karšta“ neturi nieko bendra su drėgme arba „lietaus“ prognozė neturi jokios įtakos vėjams. Taigi manoma, kad savybės yra nepriklausomas .
  • Antra, kiekvienai funkcijai suteikiamas toks pat svoris (arba svarba). Pavyzdžiui, žinant tik temperatūrą ir drėgmę, negalima tiksliai numatyti rezultato. Nė viena iš atributų nėra nesvarbi ir manoma, kad ji prisideda vienodai prie rezultato.

Dabar atėjo laikas pateikti naivią Bayeso teoremos prielaidą, kuri yra nepriklausomybę tarp savybių. Taigi dabar mes išsiskyrėme įrodymai į nepriklausomas dalis.

Dabar, jei bet kurie du įvykiai A ir B yra nepriklausomi, tada

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

Taigi mes pasiekiame rezultatą:

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

kuris gali būti išreikštas taip:

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

Dabar, kai tam tikros įvesties vardiklis išlieka pastovus, galime pašalinti šį terminą:

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

Dabar turime sukurti klasifikatoriaus modelį. Tam randame tam tikros įvesties rinkinio tikimybę visoms galimoms klasės kintamojo reikšmėms ir ir paimkite išvestį su didžiausia tikimybe. Tai galima išreikšti matematiškai taip:

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

Taigi, galiausiai, mums belieka užduotis apskaičiuoti P(y) irP(x_i | y) .

Prašau Pasižymėk taiP(y) dar vadinamas klasės tikimybe irP(x_i | y) vadinama sąlygine tikimybe.

Įvairūs naivūs Bayes klasifikatoriai daugiausia skiriasi pagal prielaidas, kurias jie daro dėl paskirstymoP(x_i | y).

Pabandykime rankiniu būdu pritaikyti aukščiau pateiktą formulę savo orų duomenų rinkinyje. Norėdami tai padaryti, turime atlikti tam tikrus duomenų rinkinio išankstinius skaičiavimus.

Mums reikia rasti P(x_i | y_j) kiekvienamx_i X iry_j m. Visi šie skaičiavimai parodyti toliau pateiktose lentelėse:


Taigi, aukščiau esančiame paveikslėlyje mes apskaičiavomeP(x_i | y_j) kiekvienamx_i X iry_j y rankiniu būdu 1-4 lentelėse. Pavyzdžiui, tikimybė žaisti golfą, jei temperatūra yra vėsi, t. y. P(temp. = vėsu | žaisti golfą = Taip) = 3/9.

Be to, turime rasti klasės tikimybesP(y) kuris buvo apskaičiuotas lentelėje 5. Pavyzdžiui, P(žaisti golfą = Taip) = 9/14.

Taigi dabar mes baigėme išankstinius skaičiavimus ir klasifikatorius paruoštas!

Išbandykime jį naudodami naują funkcijų rinkinį (pavadinkime tai šiandien):

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

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

o tikimybė nežaisti golfo apskaičiuojama taip:

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

Kadangi P(šiandien) yra bendras abiejose tikimybėse, galime nepaisyti P(šiandien) ir rasti proporcingas tikimybes kaip:

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

ir

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

Dabar, nuo

konvertuoti iš char į int java
P(Yes | today) + P(No | today) = 1

Šiuos skaičius galima paversti tikimybe, padarius sumą lygią 1 (normalizacija):

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

ir

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

Nuo

P(Yes | today)>P(Ne | šiandien)

Taigi, prognozė, kad golfas bus žaidžiamas, yra „Taip“.

Metodas, kurį aptarėme aukščiau, taikomas atskiriems duomenims. Esant nenutrūkstamiems duomenims, turime padaryti tam tikras prielaidas dėl kiekvienos savybės reikšmių pasiskirstymo. Įvairūs naivūs Bayes klasifikatoriai daugiausia skiriasi pagal prielaidas, kurias jie daro dėl paskirstymoP(x_i | y).

Naive Bayes modelio tipai

Yra trys Naive Bayes modelio tipai:

Gauso Naive Bayes klasifikatorius

Gauso naiviuose įlankuose nuolatinės reikšmės, susietos su kiekviena savybe, yra paskirstytos pagal Gauso skirstinį. Gauso skirstinys taip pat vadinamas Normalus skirstinys Nubraižyta, ji suteikia varpo formos kreivę, kuri yra simetriška ypatybių reikšmių vidurkiui, kaip parodyta toliau: normalus

Atnaujinta išankstinių perspektyvų funkcijos tikimybių lentelė yra tokia:

Manoma, kad požymių tikimybė yra Gauso, taigi sąlyginė tikimybė apskaičiuojama taip:

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

Dabar apžvelgiame Gaussian Naive Bayes klasifikatoriaus įgyvendinimą naudojant scikit-learn.


Taip

Nr

P (taip)

P(ne)

Saulėta

3

2

3/9

2/5

Lietingas

4

0

4/9

0/5

Debesuota

2

3

2/9

3/5

Iš viso

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