Site Overlay

naiva Bayes förklarade

naiva Bayes är en probabilistisk algoritm som vanligtvis används för klassificeringsproblem. Naiva Bayes är enkel, intuitiv, och ändå fungerar förvånansvärt bra i många fall. Till exempel, skräppostfilter e-app använder bygger på naiva Bayes. I den här artikeln ska jag förklara rationalerna bakom naiva Bayes och bygga ett spamfilter i Python.,y, I’ll focus on binary classification problems)

Thomas Bayes, the ‘betting man’, from BBC

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 andra ord, med tanke på en datapunkt X=(x1,x2,…,xn), vilken udda av Y är y. detta kan skrivas om som följande ekvation:

detta är den grundläggande idén om naiva Bayes, resten av algoritmen är verkligen mer fokus på hur man beräknar den villkorliga sannolikheten ovan.

Bayes teorem

hittills har Mr Bayes inget bidrag till algoritmen. Nu är hans tid att lysa., Enligt Bayes teorem:

Bayes teorem

detta är en ganska enkel omvandling, men det överbryggar klyftan mellan vad vi vill göra och vad vi kan göra. Vi kan inte få P(Y|X) direkt, men vi kan få P(X|Y) och P(Y) från träningsdata., Here’s an example:

Weather dataset, from the University of Edinburgh

In this case, X =(Outlook, Temperature, Humidity, Windy), and Y=Play., P(X|Y) och P(Y) kan beräknas:

<|div>

exempel på att hitta P(Y) och P(X/Y)

naiv Bayes antagande och varför <|h2>

teoretiskt är det inte svårt att hitta p(x / y). Det är dock mycket svårare i verkligheten när antalet funktioner växer.,

7 parameters are needed for a 2-feature binary dataset

Estimate Join Distribution requires more data

Having this amount of parameters in the model is impractical., För att lösa detta problem görs ett naivt antagande. Vi låtsas att alla funktioner är oberoende. Vad betyder det här?,div>

Naive Bayes Classifier

Naive Bayes need fewer parameters (4 in this case)

This is a big deal., Vi ändrade antalet parametrar från exponentiell till linjär. Detta innebär att naiva Bayes hanterar högdimensionella data väl.

kategoriska och kontinuerliga funktioner

kategoriska Data <|p>

för kategoriska funktioner är uppskattningen av P(Xi / Y) lätt.,

beräkna sannolikheten för kategoriska egenskaper

ett problem är dock att om vissa funktionsvärden aldrig visar (kanske brist på data) kommer sannolikheten att vara noll, vilket gör hela den bakre sannolikhetsnollen noll., Ett enkelt sätt att åtgärda detta problem kallas Laplace Estimator: lägg imaginära prover (vanligtvis en) till varje kategori

Laplace Estimator

kontinuerliga data

för kontinuerliga funktioner finns det i huvudsak två alternativ: diskretisering och kontinuerliga naiva Bayes.

diskretisering fungerar genom att bryta data i kategoriska värden., Den enklaste diskretiseringen är likformig binning, vilket skapar lådor med fast intervall. Det finns naturligtvis smartare och mer komplicerade sätt som rekursiv minimal entropi partitionering eller SOM-baserad partitionering.

Diskretizing kontinuerlig funktion för naiva Bayes

det andra alternativet använder kända distributioner.,

det finns naturligtvis andra distributioner:

naiva Bayes, från scikit-learn

även om dessa metoder varierar i form, är kärnidén bakom densamma: förutsatt att funktionen uppfyller en viss fördelning, uppskattar parametrarna för distributionen och sedan får den sannolikhetsdensitetsfunktion.,

styrka och svaghet

  1. även om det naiva antagandet sällan är sant, fungerar algoritmen överraskande bra i många fall
  2. hanterar högdimensionella data väl. Lätt att parallellisera och hanterar stora data väl
  3. presterar bättre än mer komplicerade modeller när datauppsättningen är liten

svaghet

  1. den uppskattade sannolikheten är ofta felaktig på grund av det naiva antagandet., Inte idealisk för regressionsanvändning eller sannolikhetsuppskattning
  2. när data är rikliga tenderar andra mer komplicerade modeller att överträffa naiva Bayes

sammanfattning

naiva Bayes använder den mest grundläggande sannolikhetskunskapen och gör ett naivt antagande om att alla funktioner är oberoende. Trots enkelheten (vissa kan säga förenkling) ger naiva Bayes en anständig prestanda i många applikationer.

nu förstår du hur naiva Bayes fungerar, det är dags att prova det i verkliga projekt!

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *