Naive Bayes is een probabilistisch algoritme dat meestal wordt gebruikt voor classificatieproblemen. Naïeve Bayes is eenvoudig, intuïtief, en toch presteert verrassend goed in veel gevallen. Bijvoorbeeld, spamfilters E-Mail app gebruikt zijn gebouwd op naïeve Bayes. In dit artikel, Ik zal uitleggen de redenen achter naïeve Bayes en het bouwen van een spamfilter in 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., Dit kan worden herschreven als de volgende vergelijking:
Dit is het basisidee van naïeve Bayes, de rest van het algoritme is meer gericht op het berekenen van de voorwaardelijke kans hierboven.
Stelling van Bayes
tot nu toe heeft Mr.Bayes geen bijdrage aan het algoritme. Nu is zijn tijd om te schitteren., Volgens de Bayes Theorema:
Dit is een vrij eenvoudige transformatie, maar het overbrugt de kloof tussen wat we willen en wat we kunnen doen. We kunnen P(Y|X) niet direct krijgen, maar we kunnen P(X|Y) en P(Y) uit de trainingsgegevens halen., Here’s an example:
In this case, X =(Outlook, Temperature, Humidity, Windy), and Y=Play., P(X|Y) en P(Y) kan berekend worden met:
Naive Bayes Aanname en Waarom
Theoretisch, het is niet moeilijk te vinden P(X|Y). Echter, het is veel moeilijker in werkelijkheid als het aantal functies groeit.,
Having this amount of parameters in the model is impractical., Om dit probleem op te lossen, wordt een naïeve veronderstelling gemaakt. We doen alsof alle functies onafhankelijk zijn. Wat betekent dit?,div>
This is a big deal., We veranderden het aantal parameters van exponentieel naar lineair. Dit betekent dat naïeve Bayes hoogdimensionale gegevens goed verwerkt.
categorische en continue kenmerken
categorische gegevens<|p>
voor categorische kenmerken is de schatting van P(Xi / Y) eenvoudig.,
Echter, een probleem is dat als bepaalde functie waarden nooit laten zien (misschien door gebrek aan gegevens), de waarschijnlijkheid nul, waardoor de hele posterior kans nul., Een eenvoudige manier om dit probleem te verhelpen is de zogenaamde Laplace Schatter: toevoegen denkbeeldige monsters (meestal één) aan elke categorie
Continue Data
Voor continue functies, in wezen zijn er twee keuzes: discretization en continue Naive Bayes.
discretisatie werkt door de gegevens op te splitsen in categorische waarden., De eenvoudigste discretisatie is uniforme binning, die bakken met een vast bereik creëert. Er zijn natuurlijk slimmere en meer gecompliceerde manieren zoals recursieve minimale entropie partitionering of SOM-gebaseerde partitionering.
de tweede optie is het gebruik van bekende distributies.,
natuurlijk zijn Er ook andere distributies:
Hoewel deze methoden variëren in vorm, de kern van het idee erachter is hetzelfde: in de veronderstelling dat de functie voldoet aan een bepaalde distributie, het schatten van de parameters van de distributie, en vervolgens de kansdichtheidsfunctie.,
sterkte en zwakte
- hoewel de naïeve aanname zelden waar is, presteert het algoritme in veel gevallen verrassend goed
- verwerkt hoogdimensionale gegevens goed. Gemakkelijk te parallelliseren en verwerkt big data goed
- presteert beter dan meer gecompliceerde modellen wanneer de dataset klein is
zwakte
- de geschatte waarschijnlijkheid is vaak onnauwkeurig vanwege de naïeve aanname., Niet ideaal voor regressiegebruik of waarschijnlijkheidsschatting
- wanneer er veel gegevens zijn, hebben andere, meer gecompliceerde modellen de neiging om naïeve Bayes te overtreffen
samenvatting
naïeve Bayes maakt gebruik van de meest fundamentele waarschijnlijkheidskennis en maakt een naïeve aanname dat alle functies onafhankelijk zijn. Ondanks de eenvoud (sommigen kunnen zeggen oversimplificatie), naïeve Bayes geeft een fatsoenlijke prestaties in vele toepassingen.
nu begrijp je hoe naïef Bayes werkt, is het tijd om het te proberen in echte projecten!