logo

Naive Bayes-klassifiseringer

En naiv Bayes-klassifikator, en familie av algoritmer basert på Bayes' teorem. Til tross for den naive antagelsen om funksjonsuavhengighet, er disse klassifikatorene mye brukt for sin enkelhet og effektivitet i maskinlæring. Artikkelen går inn i teori, implementering og anvendelser, og kaster lys over deres praktiske nytte til tross for forenklede antakelser.

Hva er Naive Bayes Classifiers?

Naive Bayes-klassifiserere er en samling av klassifiseringsalgoritmer basert på Bayes' teorem. Det er ikke en enkelt algoritme, men en familie av algoritmer der alle deler et felles prinsipp, det vil si at hvert par funksjoner som klassifiseres er uavhengige av hverandre. Til å begynne med, la oss vurdere et datasett.



En av de mest enkle og effektive klassifiseringsalgoritmene, Naive Bayes-klassifiseringen hjelper til med den raske utviklingen av maskinlæringsmodeller med raske prediksjonsmuligheter.

Naiv Bayes-algoritme brukes for klassifiseringsproblemer. Det er mye brukt i tekstklassifisering. I tekstklassifiseringsoppgaver inneholder data høy dimensjon (ettersom hvert ord representerer en funksjon i dataene). Den brukes i spamfiltrering, sentimentdeteksjon, klassifisering osv. Fordelen med å bruke naive Bayes er hastigheten. Det er raskt og det er enkelt å gjøre prediksjoner med høye datadimensjoner.

Denne modellen forutsier sannsynligheten for at en forekomst tilhører en klasse med et gitt sett med funksjonsverdi. Det er en sannsynlighetsklassifisering. Det er fordi den antar at en funksjon i modellen er uavhengig av eksistensen av en annen funksjon. Med andre ord, hver funksjon bidrar til spådommene uten noen sammenheng mellom hverandre. I den virkelige verden tilfredsstiller denne tilstanden sjelden. Den bruker Bayes teorem i algoritmen for trening og prediksjon



Hvorfor kalles det Naive Bayes?

Den naive delen av navnet indikerer den forenklede antagelsen gjort av den naive Bayes-klassifisereren. Klassifisereren antar at funksjonene som brukes til å beskrive en observasjon er betinget uavhengige, gitt klasseetiketten. Bayes-delen av navnet refererer til pastor Thomas Bayes, en statistiker og teolog fra 1700-tallet som formulerte Bayes teorem.

Tenk på et fiktivt datasett som beskriver værforholdene for å spille golf. Gitt værforholdene, klassifiserer hver tuppel forholdene som egnet (Ja) eller uegnet (Nei) for å spille golf. Her er en tabellrepresentasjon av datasettet vårt.

OutlookTemperaturLuftfuktighetVindfulltSpille golf
0RegnfulltVarmtHøyFalskNei
1RegnfulltVarmtHøyekteNei
2OverskyetVarmtHøyFalskJa
3SolfyltMildHøyFalskJa
4SolfyltKulNormalFalskJa
5SolfyltKulNormalekteNei
6OverskyetKulNormalekteJa
7RegnfulltMildHøyFalskNei
8RegnfulltKulNormalFalskJa
9SolfyltMildNormalFalskJa
10RegnfulltMildNormalekteJa
elleveOverskyetMildHøyekteJa
12OverskyetVarmtNormalFalskJa
1. 3SolfyltMildHøyekteNei

Datasettet er delt inn i to deler, nemlig funksjonsmatrise og responsvektor .



  • Funksjonsmatrise inneholder alle vektorene (radene) av datasettet der hver vektor består av verdien av avhengige funksjoner . I datasettet ovenfor er funksjonene 'Outlook', 'Temperatur', 'Fuktighet' og 'Vindig'.
  • Responsvektor inneholder verdien av klassevariabel (prediksjon eller utgang) for hver rad med funksjonsmatrise. I datasettet ovenfor er klassevariabelnavnet 'Spill golf'.

Forutsetning om naive Bayes

Den grunnleggende naive Bayes-antagelsen er at hver funksjon gir en:

  • Funksjonsuavhengighet: Funksjonene til dataene er betinget uavhengige av hverandre, gitt klasseetiketten.
  • Kontinuerlige funksjoner er normalt distribuert: Hvis en funksjon er kontinuerlig, antas den å være normalfordelt innenfor hver klasse.
  • Diskrete funksjoner har multinomialfordelinger: Hvis en funksjon er diskret, antas den å ha en multinomial fordeling innenfor hver klasse.
  • Egenskaper er like viktige: Alle funksjoner antas å bidra likt til prediksjonen av klasseetiketten.
  • Ingen manglende data: Dataene skal ikke inneholde manglende verdier.

I forhold til vårt datasett kan dette konseptet forstås som:

  • Vi antar at ingen funksjonspar er avhengige. For eksempel har temperaturen 'varm' ingenting å gjøre med luftfuktigheten eller utsiktene til å være 'regnfull' har ingen effekt på vinden. Derfor antas funksjonene å være uavhengig .
  • For det andre er hver funksjon gitt samme vekt (eller viktighet). For eksempel, å vite bare temperatur og fuktighet alene kan ikke forutsi resultatet nøyaktig. Ingen av attributtene er irrelevante og antas å være medvirkende likt til resultatet.

Forutsetningene gjort av Naive Bayes er generelt sett ikke korrekte i virkelige situasjoner. Faktisk er uavhengighetsantagelsen aldri riktig, men fungerer ofte bra i praksis. Nå, før du går over til formelen for Naive Bayes, er det viktig å vite om Bayes' teorem.

Bayes' teorem

Bayes' teorem finner sannsynligheten for at en hendelse skal inntreffe gitt sannsynligheten for en annen hendelse som allerede har skjedd. Bayes teorem er matematisk oppgitt som følgende ligning:

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

hvor A og B er hendelser og P(B) ≠ 0

  • I utgangspunktet prøver vi å finne sannsynligheten for hendelse A, gitt hendelse B er sann. Hendelse B er også betegnet som bevis .
  • P(A) er priori av A (den tidligere sannsynligheten, dvs. sannsynligheten for hendelse før bevis er sett). Beviset er en attributtverdi for en ukjent forekomst (her er det hendelse B).
  • P(B) er Marginal Probability: Probability of Evidence.
  • P(A|B) er a posteriori sannsynlighet for B, dvs. sannsynlighet for hendelse etter at bevis er sett.
  • P(B|A) er sannsynlighetssannsynlighet, dvs. sannsynligheten for at en hypotese vil gå i oppfyllelse basert på bevisene.

Nå, med hensyn til datasettet vårt, kan vi bruke Bayes 'teorem på følgende måte:

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

hvor y er klassevariabel og X er en avhengig egenskapsvektor (av størrelse n ) hvor:

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

Bare for å fjerne, kan et eksempel på en funksjonsvektor og tilsvarende klassevariabel være: (se 1. rad med datasett)

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

Så i utgangspunktet,P(y|X) her betyr sannsynligheten for ikke å spille golf gitt at værforholdene er regnfulle utsikter, temperaturen er varm, høy luftfuktighet og ingen vind.

I forhold til vårt datasett kan dette konseptet forstås som:

  • Vi antar at ingen funksjonspar er avhengige. For eksempel har temperaturen 'varm' ingenting å gjøre med luftfuktigheten eller utsiktene til å være 'regnfull' har ingen effekt på vinden. Derfor antas funksjonene å være uavhengig .
  • For det andre er hver funksjon gitt samme vekt (eller viktighet). For eksempel, å vite bare temperatur og fuktighet alene kan ikke forutsi resultatet nøyaktig. Ingen av attributtene er irrelevante og antas å være medvirkende likt til resultatet.

Nå er det på tide å legge en naiv antagelse til Bayes' teorem, som er, selvstendighet blant funksjonene. Så nå deler vi oss bevis inn i de uavhengige delene.

Nå, hvis noen av to hendelser A og B er uavhengige, så,

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

Derfor kommer vi til resultatet:

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

som kan uttrykkes som:

mylivecriclet

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

Nå, ettersom nevneren forblir konstant for en gitt inngang, kan vi fjerne det begrepet:

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

Nå må vi lage en klassifiseringsmodell. For dette finner vi sannsynligheten for gitte sett med innganger for alle mulige verdier av klassevariabelen og og plukke opp utgangen med maksimal sannsynlighet. Dette kan uttrykkes matematisk som:

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

Så til slutt sitter vi igjen med oppgaven med å beregne P(y) ogP(x_i | y) .

Vær oppmerksom på atP(y) kalles også klassesannsynlighet ogP(x_i | y) kalles betinget sannsynlighet.

De forskjellige naive Bayes-klassifikatorene skiller seg hovedsakelig ut fra antakelsene de gjør angående fordelingen avP(x_i | y).

La oss prøve å bruke formelen ovenfor manuelt på værdatasettet vårt. For dette må vi gjøre noen forhåndsberegninger på datasettet vårt.

Vi må finne P(x_i | y_j) for hverx_i i X ogy_j i y. Alle disse beregningene er vist i tabellene nedenfor:


Så i figuren ovenfor har vi beregnetP(x_i | y_j) for hverx_i i X ogy_j i y manuelt i tabellene 1-4. For eksempel sannsynlighet for å spille golf gitt at temperaturen er kjølig, dvs. P(temp. = kult | spille golf = Ja) = 3/9.

Dessuten må vi finne klassesannsynligheterP(y) som er beregnet i tabell 5. For eksempel P(spill golf = Ja) = 9/14.

Så nå er vi ferdige med forhåndsberegningene våre og klassifisereren er klar!

La oss teste det på et nytt sett med funksjoner (la oss kalle det i dag):

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

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

og sannsynligheten for ikke å spille golf er gitt av:

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

Siden P(i dag) er vanlig i begge sannsynligheter, kan vi ignorere P(i dag) og finne proporsjonale sannsynligheter som:

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

og

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

Nå, siden

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

Disse tallene kan konverteres til en sannsynlighet ved å gjøre summen lik 1 (normalisering):

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

og

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

Siden

P(Yes | today)>P(Nei | i dag)

Så spådommen om at golf vil bli spilt er 'Ja'.

Metoden som vi diskuterte ovenfor, gjelder for diskrete data. I tilfelle av kontinuerlige data, må vi gjøre noen antakelser angående fordelingen av verdier for hver funksjon. De forskjellige naive Bayes-klassifikatorene skiller seg hovedsakelig ut fra antakelsene de gjør angående fordelingen avP(x_i | y).

Typer av naive Bayes-modeller

Det er tre typer naive Bayes-modeller:

Gaussisk naiv Bayes-klassifiser

I Gaussian Naive Bayes antas kontinuerlige verdier knyttet til hver funksjon å være distribuert i henhold til en Gaussisk fordeling. En gaussisk fordeling kalles også Normal distribusjon Når den er plottet, gir den en klokkeformet kurve som er symmetrisk om gjennomsnittet av funksjonsverdiene som vist nedenfor: normal

Oppdatert tabell over tidligere sannsynligheter for utsiktsfunksjonen er som følger:

Sannsynligheten for funksjonene antas å være Gaussisk, derfor er betinget sannsynlighet gitt av:

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

Nå ser vi på en implementering av Gaussian Naive Bayes klassifiserer ved bruk av scikit-learn.


Ja

Nei

P(Ja)

P(Nei)

Solfylt

3

2

3/9

2/5

Regnfullt

4

0

4/9

0/5

Overskyet

2

3

2/9

3/5

Total

9

5

100 %

100 %

hvordan konvertere int til streng


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