Naive Bayes er en probabilistisk algoritme som vanligvis brukes i klassifisering problemer. Naive Bayes er enkelt, intuitivt, og ennå utfører overraskende godt i mange tilfeller. For eksempel, spam-filtre E-post-appen bruker er bygget på Naive Bayes. I denne artikkelen, vil jeg forklare rasjonale bak Naive Bayes og bygge et spam-filter i Python.,y, I’ll focus on binary classification problems)
Before we get started, please memorize the notations used in this article:
Basic Idea
To make classifications, we need to use X to predict Y., Med andre ord, gitt en data punktet X=(x1,x2,…,xn), hva oddsen for Y blir y. Dette kan være omskrevet som følgende ligning:
Dette er den grunnleggende ideen Naive Bayes, resten av algoritmen er egentlig mer fokus på hvordan å beregne betinget sannsynlighet over.
Bayes Teorem
Så langt Mr. Bayes har ingen bidrag til algoritmen. Nå er hans tid til å skinne., I henhold til Bayes Teorem:
Dette er en ganske enkel transformasjon, men det bygger bro mellom det vi ønsker å gjøre og hva vi kan gjøre. Vi kan ikke få P(Y|X) direkte, men vi kan få P(X|Y) og P(Y) fra treningen data., Here’s an example:
In this case, X =(Outlook, Temperature, Humidity, Windy), and Y=Play., P(X|Y) og P(Y) kan beregnes:
Naive Bayes Antagelse, og Hvorfor
Teoretisk, det er ikke vanskelig å finne P(X|Y). Men, det er mye vanskeligere i virkeligheten som antall funksjoner vokser.,
Having this amount of parameters in the model is impractical., For å løse dette problemet, en naiv forutsetningen er gjort. Vi later alle funksjoner er uavhengige. Hva betyr dette?,div>
This is a big deal., Vi har endret antallet parametre fra eksponentiell å lineær. Dette betyr at Naive Bayes håndterer høy-dimensjonale data godt.
Kategoriske Og Kontinuerlige Funksjoner
Kategoriske Data
For kategoriske funksjoner, estimering av P(Xi|Y) er enkel.,
Imidlertid ett problem er at hvis noen har verdier vis aldri (kanskje mangel på data), deres sannsynlighet vil være null, noe som gjør hele posterior sannsynligheten er null., En enkel måte å fikse dette problemet kalles Laplace-Estimator: legg imaginære prøver (vanligvis) for hver kategori
Kontinuerlig Data
For kontinuerlige funksjoner, det er i hovedsak to valg: discretization og kontinuerlig Naive Bayes.
Discretization virker ved å bryte dataene i kategoriske verdier., Den enkleste discretization er ensartet gruppering, som skaper hyllene med faste utvalg. Det er, selvfølgelig, smartere og mer kompliserte måter, for eksempel Rekursiv minimal entropi partisjonere eller SOM er basert partisjonering.
Det andre alternativet er å utnytte kjente distribusjoner.,
Det er selvfølgelig andre distribusjoner:
Selv om disse metodene varierer i form, hovedideen bak er den samme: forutsatt at funksjonen tilfredsstiller en viss distribusjon, estimering av parametrene i fordelingen, og deretter komme ut sannsynlighetstetthetsfunksjonen.,
Styrke og Svakhet
- Selv om den naive forutsetningen er sjelden sann, algoritmen utfører overraskende bra i mange tilfeller
- Håndterer høye dimensjonale data godt. Lett å parallelize og håndterer store datamengder godt
- Presterer bedre enn mer kompliserte modeller når datasettet er liten
Svakhet
- Den estimerte sannsynligheten er ofte unøyaktig på grunn av den naive forutsetning., Ikke ideelt for regresjon bruk eller sannsynlighet for estimering
- Når data er rikelig, andre mer kompliserte modeller har en tendens til å utkonkurrere Naive Bayes
Oppsummering
Naive Bayes benytter de mest grunnleggende sannsynlighet kunnskap og gjør en naiv forutsetning for at alle funksjoner er uavhengige. Til tross for enkelhet (noen vil kanskje si at overforenkling), Naive Bayes gir en anstendig ytelse i mange applikasjoner.
Nå kan du forstå hvor Naive Bayes fungerer, er det på tide å prøve det i det virkelige prosjekter!