Naïef Bayes-algoritme in machinaal leren

⚡ Slimme samenvatting

Naive Bayes is een supervised, probabilistisch classificatiealgoritme gebaseerd op de stelling van Bayes, waarbij ervan wordt uitgegaan dat elk kenmerk onafhankelijk bijdraagt. De theorie erachter is een uitgekiende werkplaats.ping Hieronder worden bijvoorbeeld de drie modelvarianten, hun voordelen, beperkingen en toepassingen in de praktijk besproken.

  • 🔘 Definitie: Een classificator die een record labelt door de a posteriori waarschijnlijkheid van elke kandidaatklasse te vergelijken.
  • ☑️ Naïeve aanname: Elke eigenschap wordt als voorwaardelijk onafhankelijk beschouwd, wat zelden opgaat maar toch een goede voorspelling oplevert.
  • Bayes-formule: P(A|B) is gelijk aan P(B|A) vermenigvuldigd met P(A), gedeeld door P(B).
  • 🧪 Uitgewerkt voorbeeld: De combinatie van dag één, korting en gratis bezorging geeft een kans van 97.33 procent op een aankoop.
  • Drie varianten: Multinominaal voor woordtellingen, Bernoulli voor woordaanwezigheid, Gaussisch voor continue waarden.
  • ⚠️ Beperking: Gecorreleerde kenmerken worden genegeerd, dus beslissingsbomen of SVM's zijn beter geschikt voor afhankelijke gegevens.

Naïef Bayes-algoritme in machinaal leren

Naïef Bayes-classificatoralgoritme

Een classificator is een machine learning-algoritme dat gegevens sorteert in een of meer van een reeks 'klassen'. Een e-mailclassificator is een bekend voorbeeld: deze scant elk binnenkomend bericht en kent er een klasselabel aan toe, zoals Spam of Geen Spam.

De Naive Bayes-classificator in machine learning is een leren onder toezicht Algoritme gebruikt voor classificatietaken.

Het onderstaande diagram schetst die stroom.

Naïeve Bayes-classificator die een klasselabel toewijst aan een invoerrecord.

Naive Bayes wordt gebruikt voor het oplossen van classificatieproblemen. Het voorspelt op basis van de waarschijnlijkheid van een object. Naive Bayes is gebaseerd op de stelling van Bayes en wordt voornamelijk gebruikt voor tekstclassificatie. Naive Bayes is een probabilistisch classificatie-algoritme dat eenvoudig te implementeren en snel te trainen is.

Omdat de Naive Bayes-classificator gebaseerd is op de stelling van Bayes, wordt deze ook wel een waarschijnlijkheidsclassificator genoemd. Hij voorspelt op basis van de waarschijnlijkheid van een item.

Waarom heet het Naive Bayes?

De naam Naive Bayes bestaat uit twee delen: Naive en Bayes. Waarom naïef? Het algoritme negeert de volgorde waarin kenmerken verschijnen, waardoor "You are" en "Are you" er identiek uitzien. Het gaat er ook van uit dat geen enkel kenmerk een ander beïnvloedt. Om de vrucht appel te herkennen, gebruik je de kleur rood, de vorm bolvormig en de smaak zoet, en het algoritme behandelt elk van deze kenmerken als afzonderlijk, onafhankelijk bewijs.

  • De Naive Bayes-classificator gaat ervan uit dat de kenmerken onafhankelijk van elkaar zijn. Omdat dit in de praktijk zelden het geval is, wordt de classificator 'naïef' genoemd.
  • Dit classificatiealgoritme is gebaseerd op de stelling van Bayes en staat daarom bekend als de Naïeve Bayes-classificator.

Naïeve Bayes-stelling

De stelling van Bayes wordt gebruikt om de waarschijnlijkheid van een hypothese te bepalen met behulp van voorwaardelijke waarschijnlijkheden die afhankelijk zijn van voorkennis. Deze stelling is vernoemd naar Thomas Bayes. De Naive Bayes-classificator werkt volgens het principe van voorwaardelijke waarschijnlijkheid, zoals beschreven in de stelling van Bayes.

Om de stelling van Bayes te begrijpen, kijken we naar een eenvoudig voorbeeld van een naïeve Bayes-classificator: het gooien van twee munten. Door twee munten te gooien, kunnen we de volgende steekproefruimten verkrijgen: {HH, HT, TH, TT}. De kansen op deze gebeurtenissen zijn dan:

  • Twee hoofden krijgen = 1/4
  • Minstens één staart = 3/4
  • De tweede munt is kop, aangezien de eerste munt staart = 1/2 is
  • Twee kop krijgen gegeven de eerste munt is een kop = 1/2

De stelling van Bayes berekent de waarschijnlijkheid dat een gebeurtenis plaatsvindt op basis van de waarschijnlijkheid van een andere gebeurtenis die al heeft plaatsgevonden. De formule voor de stelling van Bayes is als volgt:

P(A|B) = (P(B|A) * P(A)) / P(B)

P(A|B) is de kans op gebeurtenis A wanneer gebeurtenis B al heeft plaatsgevonden. De kans P(B) mag niet nul zijn.

  • Je moet de waarschijnlijkheid van gebeurtenis A vinden, die wordt gegeven als gebeurtenis B (bewijs) waar is.
  • P(A) is de a priori kans op A, oftewel de kans op de gebeurtenis voordat er enig bewijs is waargenomen. Hier is gebeurtenis B de waarde van een onbekende instantie.
  • P(A|B) is de a posteriori kans op gebeurtenis A, oftewel de kans op A na bestudering van het bewijs B.

Werkend voorbeeld van een Naive Bayes-classificator

De snelste manier om te zien hoe de formule werkt, is door hem handmatig uit te voeren.

Laten we een winkel als voorbeeld nemen.ping Om de werking van de Bayesiaanse naïeve classificator te begrijpen. Deze dataset bevat een kleine voorbeelddataset van 30 rijen.

dataset

Proefwinkelping Dataset van 30 rijen met de kolommen Dag, Korting, Gratis levering en Aankoop.

Het probleem is om te voorspellen of iemand een product zal kopen op een specifieke combinatie van Dag, Korting en Gratis bezorging met behulp van het Naïeve Bayes-theorema.

Frequentietabel die het aantal 'kopen' en 'niet kopen' uitkomsten voor elke attribuutwaarde weergeeft

Stap 1) We zullen voor elk attribuut frequentietabellen maken met behulp van de invoertypen die in de dataset worden vermeld, zoals dagen, korting en gratis bezorging.

Frequentietabellen voor de kenmerken Dag, Korting en Gratis Bezorging

Laten we de gebeurtenis 'Kopen' aanduiden met 'A', en de onafhankelijke variabelen, namelijk 'Korting', 'Gratis levering' en 'Dag', met 'B'. We zullen deze gebeurtenissen en variabelen gebruiken om de stelling van Bayes toe te passen.

Stap 2) Laten we nu de Waarschijnlijkheidstabellen één voor één berekenen.

Waarschijnlijkheidstabel voor het attribuut Dag ten opzichte van Kopen en Niet Kopen

Voorbeeld 1:

Op basis van deze waarschijnlijkheidstabel berekenen we de voorwaardelijke kansen, zoals hieronder.

P(A) = P(No Buy) = 6/30 = 0.2
P(B) = P(Weekday) = 11/30 = 0.37
P(B/A) = P(Weekday / No Buy) = 2/6 = 0.33

En vind P(A/B) met behulp van de stelling van Bayes,

P(A/B)
= P(No Buy / Weekday)
= P(Weekday / No Buy) * P(No Buy) / P(Weekday)
= (2/6 * 6/30) / (11/30)
= 0.1818

Op dezelfde manier, als A Kopen is, dan

= P(Buy / Weekday)
= P(Weekday / Buy) * P(Buy) / P(Weekday)
= (9/24 * 24/30) / (11/30)
= 0.8181

Let op: Omdat de P(Koop | Weekdag) groter is dan P(Geen Koop | Weekdag), kunnen we concluderen dat een klant het product hoogstwaarschijnlijk op een weekdag zal kopen.

Stap 3) Op dezelfde manier kunnen we de waarschijnlijkheid van het optreden van een gebeurtenis berekenen op basis van alle drie de variabelen. Nu zullen we de waarschijnlijkheidstabellen voor alle drie de variabelen berekenen met behulp van de bovenstaande frequentietabellen.

Waarschijnlijkheidstabellen voor dag, korting en gratis bezorging die in de gecombineerde berekening zijn gebruikt.

Voorbeeld 2:

Met behulp van deze drie Waarschijnlijkheidstabellen gaan we nu berekenen of het waarschijnlijk is dat een klant een aankoop zal doen op basis van een specifieke combinatie van 'Dag', 'Korting' en 'Gratis bezorging'.

Laten we hier een combinatie van deze factoren nemen:

  • Dag = Vakantie
  • Korting = Ja
  • Gratis levering = Ja

Wanneer, A = Kopen

Bereken de voorwaardelijke aankoopkans op de volgende combinatie van dag, korting en gratis bezorging.

Waar B is:

  • Dag = Vakantie
  • Korting = Ja
  • Gratis levering = Ja

En A = Kopen

daarom

= P(A/B)
= P(Buy / Discount=Yes, Day=Holiday, Free Delivery=Yes)
= ( P(Discount=(Yes/Buy)) * P(Free Delivery=(Yes/Buy)) * P(Day=(Holiday/Buy)) * P(Buy) )
/ ( P(Discount=Yes) * P(Free Delivery=Yes) * P(Day=Holiday) )
= (19/24 * 21/24 * 8/24 * 24/30) / (20/30 * 23/30 * 11/30)
= 0.986

Wanneer, A = Geen aankoop

Bereken op dezelfde manier de voorwaardelijke waarschijnlijkheid van aankoop op de volgende combinatie van dag, korting en gratis bezorging.

Waar B is:

  • Dag = Vakantie
  • Korting = Ja
  • Gratis levering = Ja

En A = Geen aankoop

daarom

= P(A/B)
= P(No Buy / Discount=Yes, Day=Holiday, Free Delivery=Yes)
= ( P(Discount=(Yes/No Buy)) * P(Free Delivery=(Yes/No Buy)) * P(Day=(Holiday/No Buy)) * P(No Buy) )
/ ( P(Discount=Yes) * P(Free Delivery=Yes) * P(Day=Holiday) )
= (1/6 * 2/6 * 3/6 * 6/30) / (20/30 * 23/30 * 11/30)
= 0.027

Stap 4) Vandaar,

Waarschijnlijkheid van aankoop = 0.986

Kans op geen aankoop = 0.027

Ten slotte hebben we voorwaardelijke kansen om op deze dag te kopen. Laten we nu deze waarschijnlijkheden generaliseren om de waarschijnlijkheid van de gebeurtenissen te verkrijgen.

  • Som van kansen = 0.986 + 0.027 = 1.013
  • Aankoopkans = 0.986 / 1.013 = 97.33%
  • Kans op geen aankoop = 0.027 / 1.013 = 2.67%

De twee scores tellen op tot 1.013 in plaats van 1, omdat de aanname van onafhankelijkheid elke schatting bij benadering maakt. Door te delen door het totaal worden ze daarom omgerekend naar percentages.

Merk op dat 97.33% groter is dan 2.67%. We kunnen concluderen dat de gemiddelde klant op vakantie met korting en gratis bezorging koopt.

Soorten Naïeve Bayes-modellen

Er zijn veel soorten naïeve Bayes-classificatoren. Hier hebben we Multinomiale, Bernoulli en Gaussiaanse Naïeve Bayes-classificatoren besproken.

Variant Functietype Typisch gebruik
Multinomiaal Woordentellingen Onderwerp- en documentclassificatie
Bernoulli Binaire aan- of afwezigheidsvlaggen Korte berichten en spamfiltering
Gauss Continue numerieke waarden Sensorwaarden en metingen

1. Multinomiale naïeve baaien

Dit type Naive Bayes-model wordt gebruikt voor problemen met documentclassificatie. Het werkt met functies die de frequentie van woorden in een document weergeven. De classificator houdt rekening met het voorkomen en het aantal woorden om de waarschijnlijkheid te bepalen dat een document tot een specifieke categorie behoort, zoals sport, politiek of technologie.

2. Bernoulli Naïeve Bayes

Dit is vergelijkbaar met de multinomiale Naive Bayes. De Bernoulli Naive Bayes-classificator wordt gebruikt voor documentclassificatietaken. Er worden echter booleaanse voorspellers gebruikt. Het geeft aan of een woord aanwezig is of niet en neemt alleen de waarden Ja of Nee aan. De classificator berekent de kansen op basis van het feit of een woord in de tekst voorkomt of niet.

3. Gaussiaanse naïeve baaien

Deze classificator wordt gebruikt in het geval van een continue waarde, maar niet van een discrete waarde. Deze classificator berekent kansen met behulp van de parameters van de Gauss verdeling, dat wil zeggen gemiddelde en variantie.

Gaussische klokcurve gebruikt om continue kenmerken te modelleren in Naive Bayes.

De formule voor voorwaardelijke waarschijnlijkheid verandert in,

Gaussiaanse Naive Bayes-formule voor voorwaardelijke waarschijnlijkheid met behulp van gemiddelde en variantie

De scikit-leren De bibliotheek voegt twee extra varianten toe: Complement Naive Bayes voor onevenwichtige tekst en Categorical Naive Bayes voor discrete categorieën.

Voordelen en beperkingen van Naive Bayes Classifier

Er zijn verschillende voor- en nadelen van het Naive Bayes-algoritme in machine learning.

Voordelen van de naïeve Bayes-classificator

  • Eenvoud en efficiëntie: Naive Bayes is eenvoudig en gemakkelijk te trainen en te implementeren. Het is efficiënt vanwege de lage rekenkosten. Het kan grote datasets efficiënt verwerken.
  • Snelle training en voorspelling: Naive Bayes vereist minder trainingsdata vanwege de onafhankelijkheid tussen de kenmerken. Het model kan snel voorspellingen doen zodra het getraind is.
  • schaalbaarheid: Naive Bayes kan overweg met hoogdimensionale datasets met een groot aantal functies. Het presteert goed, zelfs als het aantal functies groter is dan het aantal trainingsvoorbeelden. Het schaalt mee met het aantal datapunten en voorspellers. Het verwerkt zowel continue als discrete gegevens.
  • Robuustheid voor irrelevante kenmerken: Het is niet gevoelig voor irrelevante kenmerken.
  • Werkt goed met kleine trainingssets: Naïeve Bayes kan zelfs met beperkte trainingsdata redelijke resultaten opleveren. Het kan situaties aan waarbij het aantal trainingsvoorbeelden klein is.

Beperking van de naïeve Bayes-classificator

Naïeve Bayes in machine learning gaat ervan uit dat alle kenmerken onafhankelijk van elkaar zijn. Het kan dus geen relaties leren tussen verschillende kenmerken in de gegevens. Het behandelt elk kenmerk alsof het geen relatie heeft met de andere.

Nog een waarschuwing: de gerapporteerde klassewaarschijnlijkheden zijn slecht gekalibreerd, waardoor het betrouwbaarheidspercentage dat aan een voorspelling is gekoppeld geen betrouwbare waarschijnlijkheid is.

Om dit probleem te overwinnen, kunt u gebruiken Beslissingsbomen, Random Forests, Support Vector Machines (SVM), Neurale netwerken enzovoort. Deze algoritmen hebben het vermogen om complexe relaties en afhankelijkheden tussen kenmerken in de data te leren. Daardoor kunnen ze nauwkeurigere resultaten voorspellen.

Toepassingen van Naive Bayes Classifier

Omdat dit algoritme snel en efficiënt is, kun je het gebruiken om realtime voorspellingen te doen.

Spamdetectie

E-maildiensten (Zoals GmailDit algoritme wordt gebruikt om te bepalen of een e-mail spam is. Het is uitstekend geschikt voor spamfiltering.

Sentiment analyse

Het kan tekst classificeren als positief, negatief of neutraal op basis van kenmerken zoals woordkeuze, zinsstructuur en context. Het vindt toepassingen in het monitoren van sociale media, klantrecensies en marktonderzoek.

Documentclassificatie

Het kan documenten classificeren in categorieën zoals sport, politiek, technologie of financiën op basis van de frequentie of aanwezigheid van specifieke woorden of kenmerken in het document.

Aanbevolen systemen

Het kan gebruikersvoorkeuren, historische gegevens en itemfuncties analyseren om gebruikersinteresses of voorkeuren voor het aanbevelen van producten, films of artikelen te voorspellen.

Dit classificatiealgoritme wordt ook gebruikt in gezichtsherkenning, weersvoorspellingen, medische diagnoses en winkels.ping, Nieuwsclassificatie etc. Je kunt Naive Bayes implementeren in Python, waarbij de module sklearn.naive_bayes alle hierboven beschreven varianten biedt.

Veelgestelde vragen

Importeer de variant die u nodig heeft vanuit sklearn.naive_bayesSplits de data met train_test_split, roep vervolgens fit() aan op de trainingsrijen en predict() op de testrijen. GaussianNB is geschikt voor continue kenmerken, terwijl MultinomialNB en BernoulliNB teksttellingen en binaire woordvlaggen verwerken.

Als een categorie nooit samen met een klasse in de training voorkomt, wordt de voorwaardelijke kans nul en wordt het hele product tenietgedaan. Laplace-smoothing telt bij elke telling één op, zodat niets tot nul reduceert. Scikit-learn geeft dit weer als de parameter alpha.

Geen van beide wint overtuigend. Naive Bayes traint sneller, heeft minder data nodig en kan overweg met tekst met een hoge dimensionaliteit. Logistische regressie modelleert gecorreleerde kenmerken en produceert beter gekalibreerde waarschijnlijkheden. Bij kleine tekstdatasets is Naive Bayes vaak de beste; met meer data haalt logistische regressie het in.

Houd een testset apart en vergelijk de voorspellingen met de werkelijke labels met behulp van een verwarring matrixVervolgens worden de precisie, recall en F1-score berekend. Alleen de nauwkeurigheid geeft een misleidend beeld bij onevenwichtige data, zoals spam, waarbij één klasse de steekproef domineert.

Zet de tekst om naar kleine letters, verwijder leestekens, stopwoorden en stam de tokens optioneel. Zet vervolgens elk document om in een telling of TF-IDF-vector. Bernoulli-varianten vereisen binaire aanwezigheidsvlaggen in plaats van tellingen. Pas identieke stappen toe tijdens de training en de voorspelling.

Naive Bayes is het eenvoudigste Bayesiaanse netwerk: één klasseknooppunt waaraan elk kenmerk direct is gekoppeld en geen verbindingen tussen de kenmerken. Een algemeen Bayesiaans netwerk laat je die afhankelijkheidsverbindingen tekenen, waardoor het correlaties modelleert die Naive Bayes bewust negeert.

Geautomatiseerde machine learning-tools zoeken naar gladmakingswaarden, kenmerkrepresentaties en variantkeuze, en rangschikken vervolgens kandidaten op basis van een kruisgevalideerde score. Dat elimineert het meeste handmatige vallen en opstaan ​​— u bepaalt nog steeds welke metriek belangrijk is en of de winnaar zich op een verstandige manier gedraagt.

GitHub-copiloot Het script genereert snel de standaardcode — imports, train-test split, fit- en predict-aanroepen — op basis van een korte opmerking. Controleer altijd de gekozen variant en de evaluatiecode, want een plausibel script kan nog steeds het verkeerde model trainen.

Vat dit bericht samen met: