En naiv Bayes-klassifikator, en familie af algoritmer baseret på Bayes' sætning. På trods af den naive antagelse om funktionsuafhængighed er disse klassifikatorer udbredt på grund af deres enkelhed og effektivitet i maskinlæring. Artiklen dykker ned i teori, implementering og anvendelser og kaster lys over deres praktiske anvendelighed på trods af forsimplede antagelser.
Hvad er Naive Bayes Classifiers?
Naive Bayes klassifikatorer er en samling af klassifikationsalgoritmer baseret på Bayes' sætning. Det er ikke en enkelt algoritme, men en familie af algoritmer, hvor de alle deler et fælles princip, dvs. at hvert par funktioner, der klassificeres, er uafhængige af hinanden. Til at starte med, lad os overveje et datasæt.
En af de mest enkle og effektive klassifikationsalgoritmer, Naive Bayes-klassificeringen hjælper med den hurtige udvikling af maskinlæringsmodeller med hurtige forudsigelsesmuligheder.
Naiv Bayes-algoritme bruges til klassificeringsproblemer. Det er meget brugt i tekstklassificering. I tekstklassificeringsopgaver indeholder data høj dimension (da hvert ord repræsenterer en funktion i dataene). Det bruges til spamfiltrering, sentimentdetektion, klassificering af klassificering osv. Fordelen ved at bruge naive Bayes er dens hastighed. Det er hurtigt, og det er nemt at forudsige med høje datadimensioner.
Denne model forudsiger sandsynligheden for, at en instans tilhører en klasse med et givet sæt af funktionsværdier. Det er en probabilistisk klassificering. Det er fordi det antager, at et træk i modellen er uafhængigt af eksistensen af et andet træk. Med andre ord bidrager hver funktion til forudsigelserne uden nogen relation mellem hinanden. I den virkelige verden opfylder denne betingelse sjældent. Den bruger Bayes sætning i algoritmen til træning og forudsigelse
Hvorfor kaldes det Naive Bayes?
Den naive del af navnet angiver den forenklede antagelse fra den naive Bayes-klassifikator. Klassifikatoren antager, at de funktioner, der bruges til at beskrive en observation, er betinget uafhængige, givet klassebetegnelsen. Bayes-delen af navnet refererer til pastor Thomas Bayes, en statistiker og teolog fra det 18. århundrede, der formulerede Bayes' teorem.
Overvej et fiktivt datasæt, der beskriver vejrforholdene for at spille golf. I betragtning af vejrforholdene, klassificerer hver tuple betingelserne som egnet (Ja) eller uegnet (Nej) til at spille golf. Her er en tabelrepræsentation af vores datasæt.
Outlook | Temperatur | Fugtighed | Blæsende | Spille golf | |
---|---|---|---|---|---|
0 | Regnfuld | Hed | Høj | Falsk | Ingen |
1 | Regnfuld | Hed | Høj | Rigtigt | Ingen |
2 | Overskyet | Hed | Høj | Falsk | Ja |
3 | Solrig | Mild | Høj | Falsk | Ja |
4 | Solrig | Fedt nok | Normal | Falsk | Ja |
5 | Solrig | Fedt nok | Normal | Rigtigt | Ingen |
6 | Overskyet | Fedt nok | Normal | Rigtigt | Ja |
7 | Regnfuld | Mild | Høj | Falsk | Ingen |
8 | Regnfuld | Fedt nok | Normal | Falsk | Ja |
9 | Solrig | Mild | Normal | Falsk | Ja |
10 | Regnfuld | Mild | Normal | Rigtigt | Ja |
elleve | Overskyet | Mild | Høj | Rigtigt | Ja |
12 | Overskyet | Hed | Normal | Falsk | Ja |
13 | Solrig | Mild | Høj | Rigtigt | Ingen |
Datasættet er opdelt i to dele, nemlig funktionsmatrix og respons vektor .
- Feature matrix indeholder alle vektorer(rækker) af datasæt, hvor hver vektor består af værdien af afhængige funktioner . I ovenstående datasæt er funktionerne 'Outlook', 'Temperature', 'Fugtighed' og 'Windy'.
- Responsvektor indeholder værdien af klasse variabel (forudsigelse eller output) for hver række af funktionsmatrix. I ovenstående datasæt er klassevariablens navn 'Spil golf'.
Antagelse af naive Bayes
Den grundlæggende naive Bayes antagelse er, at hver funktion gør en:
- Funktionsuafhængighed: Funktionerne i dataene er betinget uafhængige af hinanden, givet klasseetiketten.
- Kontinuerlige funktioner er normalt fordelt: Hvis en funktion er kontinuerlig, antages den at være normalfordelt inden for hver klasse.
- Diskrete funktioner har multinomialfordelinger: Hvis en funktion er diskret, antages den at have en multinomial fordeling inden for hver klasse.
- Egenskaber er lige så vigtige: Alle funktioner antages at bidrage lige meget til forudsigelsen af klasseetiketten.
- Ingen manglende data: Dataene må ikke indeholde manglende værdier.
I forhold til vores datasæt kan dette koncept forstås som:
- Vi antager, at intet par funktioner er afhængige. For eksempel har temperaturen 'Varm' intet at gøre med luftfugtigheden, eller udsigten til at være 'Regnfuld' har ingen indflydelse på vinden. Derfor antages funktionerne at være uafhængig .
- For det andet tillægges hver funktion den samme vægt (eller betydning). For eksempel kan kun kendskab til temperatur og fugtighed alene ikke forudsige resultatet nøjagtigt. Ingen af attributterne er irrelevante og antages at være medvirkende ligeligt til resultatet.
Antagelserne fra Naive Bayes er generelt ikke korrekte i virkelige situationer. Faktisk er uafhængighedsantagelsen aldrig korrekt, men fungerer ofte godt i praksis. Nu, før du går over til formlen for Naive Bayes, er det vigtigt at kende til Bayes' teorem.
Bayes' sætning
Bayes' sætning finder sandsynligheden for, at en begivenhed indtræffer givet sandsynligheden for en anden begivenhed, der allerede er indtruffet. Bayes' sætning er angivet matematisk som følgende ligning:
hvor A og B er hændelser og P(B) ≠ 0
- Grundlæggende forsøger vi at finde sandsynligheden for hændelse A, givet hændelsen B er sand. Begivenhed B betegnes også som beviser .
- P(A) er priori af A (den forudgående sandsynlighed, dvs. sandsynlighed for begivenhed, før beviser ses). Beviset er en attributværdi for en ukendt instans (her er det hændelse B).
- P(B) er Marginal Probability: Probability of Evidence.
- P(A|B) er a posteriori sandsynlighed for B, dvs. sandsynlighed for hændelse efter bevis er set.
- P(B|A) er sandsynlighed for sandsynlighed, dvs. sandsynligheden for, at en hypotese bliver sandt baseret på beviserne.
Nu, med hensyn til vores datasæt, kan vi anvende Bayes' sætning på følgende måde:
hvor y er klassevariabel, og X er en afhængig egenskabsvektor (af størrelse n ) hvor:
Bare for at rydde, kan et eksempel på en funktionsvektor og tilsvarende klassevariabel være: (se 1. række af datasæt)
X = (Rainy, Hot, High, False)>
y = No>
Så dybest set,
I forhold til vores datasæt kan dette koncept forstås som:
- Vi antager, at intet par funktioner er afhængige. For eksempel har temperaturen 'Varm' intet at gøre med luftfugtigheden, eller udsigten til at være 'Regnfuld' har ingen indflydelse på vinden. Derfor antages funktionerne at være uafhængig .
- For det andet tillægges hver funktion den samme vægt (eller betydning). For eksempel kan kun kendskab til temperatur og fugtighed alene ikke forudsige resultatet nøjagtigt. Ingen af attributterne er irrelevante og antages at være medvirkende ligeligt til resultatet.
Nu er det tid til at lægge en naiv antagelse til Bayes' sætning, som er, uafhængighed blandt funktionerne. Så nu deler vi os beviser ind i de selvstændige dele.
Hvis to begivenheder A og B er uafhængige, så
P(A,B) = P(A)P(B)>
Derfor når vi frem til resultatet:
som kan udtrykkes som:
char og int java
Nu, da nævneren forbliver konstant for et givet input, kan vi fjerne dette udtryk:
Nu skal vi lave en klassificeringsmodel. Til dette finder vi sandsynligheden for et givet sæt af input for alle mulige værdier af klassevariablen og og afhente output med maksimal sandsynlighed. Dette kan udtrykkes matematisk som:
Så endelig står vi tilbage med opgaven med at beregne
Bemærk, at
De forskellige naive Bayes-klassifikatorer adskiller sig hovedsageligt ved de antagelser, de gør med hensyn til fordelingen af
Lad os prøve at anvende ovenstående formel manuelt på vores vejrdatasæt. Til dette skal vi lave nogle forudberegninger på vores datasæt.
Vi skal finde
Så i figuren ovenfor har vi beregnet
Vi skal også finde klassesandsynligheder
Så nu er vi færdige med vores præ-beregninger, og klassificeringen er klar!
Lad os teste det på et nyt sæt funktioner (lad os kalde det i dag):
today = (Sunny, Hot, Normal, False)>
og sandsynligheden for ikke at spille golf er givet af:
Da P(i dag) er almindelig i begge sandsynligheder, kan vi ignorere P(i dag) og finde proportionale sandsynligheder som:
og
Nu, siden
Disse tal kan konverteres til en sandsynlighed ved at gøre summen lig med 1 (normalisering):
og
Siden
Så forudsigelsen om, at golf ville blive spillet, er 'Ja'.
Metoden, som vi diskuterede ovenfor, er anvendelig til diskrete data. I tilfælde af kontinuerlige data er vi nødt til at gøre nogle antagelser vedrørende fordelingen af værdier for hver funktion. De forskellige naive Bayes-klassifikatorer adskiller sig hovedsageligt ved de antagelser, de gør med hensyn til fordelingen af
Typer af naiv Bayes-model
Der er tre typer af naive Bayes-modeller:
Gaussisk naiv Bayes-klassifikator
I Gaussian Naive Bayes antages kontinuerte værdier forbundet med hver funktion at være fordelt i henhold til en Gaussisk fordeling. En Gauss-fordeling kaldes også Normal fordeling Når det er plottet, giver det en klokkeformet kurve, som er symmetrisk omkring middelværdien af funktionsværdierne som vist nedenfor:
Opdateret tabel over tidligere sandsynligheder for outlook-funktionen er som følger:
Sandsynligheden for funktionerne antages at være Gaussisk, derfor er betinget sandsynlighed givet ved:
Nu ser vi på en implementering af Gaussian Naive Bayes classifier ved hjælp af scikit-learn.
| Ja | Ingen | P(Ja) | P(Nej) |
---|---|---|---|---|
Solrig | 3 | 2 | 3/9 | 2/5 |
Regnfuld | 4 | 0 | 4/9 | 0/5 |
Overskyet | 2 | 3 | 2/9 | 3/5 |
Total | 9 | 5 | 100 % | 100 % hvordan man afslører skjulte apps |
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.>