logo

Naïeve Bayes-classificatoren

Een naïeve Bayes-classificator, een familie van algoritmen gebaseerd op de stelling van Bayes. Ondanks de naïeve veronderstelling van kenmerkonafhankelijkheid, worden deze classificatoren op grote schaal gebruikt vanwege hun eenvoud en efficiëntie bij machinaal leren. Het artikel gaat dieper in op theorie, implementatie en toepassingen, en werpt licht op hun praktische bruikbaarheid, ondanks al te eenvoudige aannames.

Wat zijn naïeve Bayes-classificatoren?

Naïeve Bayes-classificatoren zijn een verzameling classificatie-algoritmen gebaseerd op de stelling van Bayes. Het is niet één enkel algoritme, maar een familie van algoritmen waarvan ze allemaal een gemeenschappelijk principe delen, dat wil zeggen dat elk paar kenmerken dat wordt geclassificeerd onafhankelijk van elkaar is. Laten we om te beginnen een dataset bekijken.



De Naïve Bayes-classificator, een van de meest eenvoudige en effectieve classificatie-algoritmen, helpt bij de snelle ontwikkeling van machine learning-modellen met snelle voorspellingsmogelijkheden.

Het naïeve Bayes-algoritme wordt gebruikt voor classificatieproblemen. Het wordt veel gebruikt bij tekstclassificatie. Bij tekstclassificatietaken bevatten gegevens een hoge dimensie (aangezien elk woord één kenmerk in de gegevens vertegenwoordigt). Het wordt gebruikt bij het filteren van spam, het detecteren van sentimenten, het classificeren van beoordelingen enz. Het voordeel van het gebruik van naïeve Bayes is de snelheid. Het is snel en het maken van voorspellingen is eenvoudig dankzij de grote hoeveelheid gegevens.

Dit model voorspelt de waarschijnlijkheid dat een exemplaar tot een klasse behoort met een gegeven set kenmerkwaarden. Het is een probabilistische classificatie. Dit komt omdat het ervan uitgaat dat één kenmerk in het model onafhankelijk is van het bestaan ​​van een ander kenmerk. Met andere woorden, elk kenmerk draagt ​​bij aan de voorspellingen zonder enige relatie tussen elkaar. In de echte wereld voldoet deze voorwaarde zelden. Het gebruikt de stelling van Bayes in het algoritme voor training en voorspelling



Waarom heet het Naïeve Bayes?

Het naïeve deel van de naam geeft de vereenvoudigende aanname aan van de Naïeve Bayes-classificator. De classificator gaat ervan uit dat de kenmerken die worden gebruikt om een ​​waarneming te beschrijven voorwaardelijk onafhankelijk zijn, gegeven het klassenlabel. Het Bayes-gedeelte van de naam verwijst naar dominee Thomas Bayes, een 18e-eeuwse statisticus en theoloog die de stelling van Bayes formuleerde.

Beschouw een fictieve dataset die de weersomstandigheden beschrijft voor het spelen van een partijtje golf. Gegeven de weersomstandigheden classificeert elke tuple de omstandigheden als geschikt (Ja) of ongeschikt (Nee) voor het spelen van golf. Hier is een tabelweergave van onze dataset.

VooruitzichtenTemperatuurVochtigheidWinderigGolf spelen
0RegenachtigHeetHoogValsNee
1RegenachtigHeetHoogWAARNee
2BewolktHeetHoogValsJa
3ZonnigMildHoogValsJa
4ZonnigKoelNormaalValsJa
5ZonnigKoelNormaalWAARNee
6BewolktKoelNormaalWAARJa
7RegenachtigMildHoogValsNee
8RegenachtigKoelNormaalValsJa
9ZonnigMildNormaalValsJa
10RegenachtigMildNormaalWAARJa
elfBewolktMildHoogWAARJa
12BewolktHeetNormaalValsJa
13ZonnigMildHoogWAARNee

De dataset is verdeeld in twee delen, namelijk: kenmerkmatrix en de reactievector .



  • Functiematrix bevat alle vectoren (rijen) van de gegevensset waarin elke vector bestaat uit de waarde van afhankelijke kenmerken . In de bovenstaande dataset zijn de kenmerken ‘Outlook’, ‘Temperatuur’, ‘Vochtigheid’ en ‘Windy’.
  • De responsvector bevat de waarde van klasse variabele (voorspelling of uitvoer) voor elke rij kenmerkmatrix. In de bovenstaande dataset is de naam van de klassevariabele ‘Golf spelen’.

Aanname van naïeve Bayes

De fundamentele aanname van Naive Bayes is dat elk kenmerk een:

  • Eigenschap onafhankelijkheid: De kenmerken van de gegevens zijn voorwaardelijk onafhankelijk van elkaar, gegeven het klassenlabel.
  • Continue kenmerken zijn normaal verdeeld: Als een kenmerk continu is, wordt aangenomen dat het binnen elke klasse normaal verdeeld is.
  • Discrete functies hebben multinomiale distributies: Als een kenmerk discreet is, wordt aangenomen dat het binnen elke klasse een multinomiale verdeling heeft.
  • Functies zijn net zo belangrijk: Er wordt aangenomen dat alle kenmerken in gelijke mate bijdragen aan de voorspelling van het klassenlabel.
  • Geen ontbrekende gegevens: De gegevens mogen geen ontbrekende waarden bevatten.

Met betrekking tot onze dataset kan dit concept worden begrepen als:

  • We gaan ervan uit dat geen enkel paar kenmerken afhankelijk is. Als de temperatuur ‘heet’ is, heeft dit bijvoorbeeld niets te maken met de luchtvochtigheid, en als het vooruitzicht ‘regenachtig’ is, heeft dit geen effect op de wind. Daarom wordt aangenomen dat de kenmerken dat wel zijn onafhankelijk .
  • Ten tweede krijgt elk kenmerk hetzelfde gewicht (of belang). Als u bijvoorbeeld alleen de temperatuur en vochtigheid kent, kunt u de uitkomst niet nauwkeurig voorspellen. Geen van de kenmerken is irrelevant en wordt verondersteld een bijdrage te leveren even naar de uitkomst.

De aannames van Naive Bayes zijn over het algemeen niet correct in situaties in de echte wereld. In feite is de onafhankelijkheidsaanname nooit correct, maar werkt deze in de praktijk vaak goed. Voordat we overgaan tot de formule voor Naive Bayes, is het belangrijk om iets te weten over de stelling van Bayes.

De stelling van Bayes

De stelling van Bayes berekent de waarschijnlijkheid dat een gebeurtenis plaatsvindt, gegeven de waarschijnlijkheid van een andere gebeurtenis die al heeft plaatsgevonden. De stelling van Bayes wordt wiskundig weergegeven als de volgende vergelijking:

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

waarbij A en B gebeurtenissen zijn en P(B) ≠ 0

  • Kortom, we proberen de waarschijnlijkheid van gebeurtenis A te vinden, gegeven dat gebeurtenis B waar is. Gebeurtenis B wordt ook wel genoemd bewijs .
  • P(A) is de priori van A (de eerdere waarschijnlijkheid, dat wil zeggen de waarschijnlijkheid van een gebeurtenis voordat er bewijs wordt gezien). Het bewijs is een attribuutwaarde van een onbekende instantie (hier is het gebeurtenis B).
  • P(B) is marginale waarschijnlijkheid: waarschijnlijkheid van bewijs.
  • P(A|B) is de a posteriori waarschijnlijkheid van B, d.w.z. de waarschijnlijkheid van een gebeurtenis nadat bewijs is gezien.
  • P(B|A) is waarschijnlijkheidswaarschijnlijkheid, d.w.z. de waarschijnlijkheid dat een hypothese op basis van het bewijsmateriaal uitkomt.

Wat onze dataset betreft, kunnen we de stelling van Bayes op de volgende manier toepassen:

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

waarbij y een klassevariabele is en X een afhankelijke kenmerkvector is (van grootte N ) waar:

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

Voor alle duidelijkheid: een voorbeeld van een kenmerkvector en de bijbehorende klassevariabele kan zijn: (zie de eerste rij van de dataset)

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

Dus eigenlijk,P(y|X) betekent hier de waarschijnlijkheid dat u niet golft, aangezien de weersomstandigheden regenachtige vooruitzichten zijn, de temperatuur hoog is, een hoge luchtvochtigheid en geen wind.

Met betrekking tot onze dataset kan dit concept worden begrepen als:

  • We gaan ervan uit dat geen enkel paar kenmerken afhankelijk is. De temperatuur die ‘heet’ is, heeft bijvoorbeeld niets te maken met de luchtvochtigheid, en de vooruitzichten die ‘regenachtig’ zijn, hebben geen effect op de wind. Daarom wordt aangenomen dat de kenmerken dat wel zijn onafhankelijk .
  • Ten tweede krijgt elk kenmerk hetzelfde gewicht (of belang). Als u bijvoorbeeld alleen de temperatuur en vochtigheid kent, kunt u de uitkomst niet nauwkeurig voorspellen. Geen van de kenmerken is irrelevant en wordt verondersteld een bijdrage te leveren even naar de uitkomst.

Nu is het tijd om een ​​naïeve veronderstelling te plaatsen op de stelling van Bayes, namelijk: onafhankelijkheid onder de kenmerken. Dus nu zijn we uit elkaar gegaan bewijs in de onafhankelijke delen.

Als nu twee gebeurtenissen A en B onafhankelijk zijn, dan geldt:

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

Daarom komen we tot het resultaat:

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

wat kan worden uitgedrukt als:

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

Nu de noemer constant blijft voor een bepaalde invoer, kunnen we die term verwijderen:

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

Nu moeten we een classificatiemodel maken. Hiervoor vinden we de waarschijnlijkheid van een gegeven set invoer voor alle mogelijke waarden van de klassevariabele En en pak de uitvoer met maximale waarschijnlijkheid op. Dit kan wiskundig worden uitgedrukt als:

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

Dus uiteindelijk rest ons nog de taak van het rekenen P(y) EnP(x_i | y) .

Houd er rekening mee datP(y) wordt ook wel klassewaarschijnlijkheid en genoemdP(x_i | y) wordt voorwaardelijke waarschijnlijkheid genoemd.

De verschillende naïeve Bayes-classificatoren verschillen voornamelijk door de aannames die ze doen met betrekking tot de verdeling vanP(x_i | y).

Laten we proberen de bovenstaande formule handmatig toe te passen op onze weerdataset. Hiervoor moeten we een aantal voorberekeningen uitvoeren op onze dataset.

We moeten vinden P(x_i | y_j) voor elkx_i in X eny_j in y. Al deze berekeningen zijn weergegeven in de onderstaande tabellen:


Dus in de bovenstaande figuur hebben we berekendP(x_i | y_j) voor elkx_i in X eny_j in y handmatig in de tabellen 1-4. Bijvoorbeeld de waarschijnlijkheid om golf te spelen, gegeven dat de temperatuur koel is, d.w.z. P(temp. = koel | golf spelen = Ja) = 3/9.

We moeten ook klassekansen vindenP(y) die is berekend in tabel 5. Bijvoorbeeld P(golfen = Ja) = 9/14.

Dus nu zijn we klaar met onze voorberekeningen en is de classificator klaar!

Laten we het testen op een nieuwe reeks functies (laten we het vandaag noemen):

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

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

en de kans om niet te golfen wordt gegeven door:

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

Omdat P(vandaag) gebruikelijk is in beide waarschijnlijkheden, kunnen we P(vandaag) negeren en proportionele waarschijnlijkheden vinden als:

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

En

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

Nu sinds

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

Deze getallen kunnen worden omgezet in een waarschijnlijkheid door de som gelijk te maken aan 1 (normalisatie):

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

En

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

Sinds

P(Yes | today)>P(Nee | vandaag)

De voorspelling dat er golf gespeeld zou worden is dus ‘Ja’.

De methode die we hierboven hebben besproken, is van toepassing op discrete gegevens. In het geval van continue gegevens moeten we enkele aannames doen met betrekking tot de verdeling van de waarden van elk kenmerk. De verschillende naïeve Bayes-classificatoren verschillen voornamelijk door de aannames die ze doen met betrekking tot de verdeling vanP(x_i | y).

Soorten naïeve Bayes-modellen

Er zijn drie soorten Naive Bayes-modellen:

Gaussiaanse naïeve Bayes-classificator

In Gaussian Naive Bayes wordt aangenomen dat continue waarden die bij elk kenmerk horen, worden verdeeld volgens een Gaussiaanse verdeling. Een Gaussische verdeling wordt ook wel genoemd Normale verdeling Wanneer het wordt uitgezet, geeft het een klokvormige curve die symmetrisch is rond het gemiddelde van de kenmerkwaarden, zoals hieronder weergegeven: normaal

De bijgewerkte tabel met eerdere kansen voor de Outlook-functie is als volgt:

Er wordt aangenomen dat de waarschijnlijkheid van de kenmerken Gaussiaans is, daarom wordt de voorwaardelijke waarschijnlijkheid gegeven door:

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

Nu kijken we naar een implementatie van de Gaussiaanse Naive Bayes-classificator met behulp van scikit-learn.


Ja

Nee

P(Ja)

P(Nee)

Zonnig

3

2

3/9

2/5

Regenachtig

4

0

4/9

0/5

Bewolkt

2

3

2/9

Logica van de 1e orde

3/5

Totaal

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