Naiv Bayes-algoritm i maskininlärning

⚡ Smart sammanfattning

Naive Bayes är en övervakad, probabilistisk klassificeringsalgoritm byggd på Bayes sats, som antar att varje funktion bidrar oberoende av varandra. Dess teori, en bearbetad verkstadping Till exempel behandlas de tre modellvarianterna, fördelarna, begränsningarna och tillämpningarna i den verkliga världen nedan.

  • 🔘 Definition: En klassificerare som märker en post genom att jämföra den posteriora sannolikheten för varje kandidatklass.
  • ☑️ Naivt antagande: Varje funktion behandlas som villkorligt oberoende, vilket sällan håller men ändå förutsäger väl.
  • Bayes formel: P(A|B) är lika med P(B|A) multiplicerat med P(A), dividerat med P(B).
  • 🧪 Utarbetat exempel: Dag, rabatt och fri leverans tillsammans ger en sannolikhet på 97.33 procent för köp.
  • 🛠️ Tre varianter: Multinomial för ordantal, Bernoulli för ordnärvaro, Gaussisk för kontinuerliga värden.
  • ⚠️ Begränsning: Korrelerade funktioner ignoreras, så beslutsträd eller SVM:er passar beroende data bättre.

Naiv Bayes-algoritm i maskininlärning

Naiv Bayes Classifier Algorithm

En klassificerare är en maskininlärningsalgoritm som sorterar data i en eller flera av en uppsättning "klasser". En e-postklassificerare är ett välkänt exempel: den skannar varje inkommande meddelande och bifogar en klassetikett med Spam eller Inte Spam.

Naiv Bayes-klassificerare inom maskininlärning är en övervakad inlärning algoritm som används för klassificeringsuppgifter.

Diagrammet nedan beskriver det flödet.

Naiv Bayes-klassificerare som tilldelar en klassetikett till en indatapost

Naive Bayes används för att lösa klassificeringsproblem. Den förutsäger på basis av sannolikheten för ett objekt. Naiv Bayes är baserad på Bayes sats och används mest för textklassificering. Naive Bayes är en probabilistisk klassificeringsalgoritm som är enkel att implementera och snabb att träna.

Eftersom den naiva Bayes-klassificeraren är baserad på Bayes teorem är den också känd som en sannolikhetsklassificerare. Den förutsäger baserat på sannolikheten för ett objekt.

Varför kallas det naiva Bayes?

Namnet Naive Bayes har två delar: Naive och Bayes. Varför naive? Algoritmen ignorerar den ordning i vilka egenskaperna visas, så "Du är" och "Är du" ser identiska ut. Den antar också att inga egenskaper påverkar någon annan. För att känna igen frukten äpple använder du färgen röd, formen sfärisk och smaken söt, och algoritmen behandlar var och en av dessa ledtrådar som separata, oberoende bevis.

  • En naiv Bayes-klassificerare antar att egenskaperna är oberoende av varandra. Eftersom detta sällan är möjligt i verkliga data kallas klassificeraren naiv.
  • Denna klassificeringsalgoritm är baserad på Bayes teorem, så den är känd som den naiva Bayes-klassificeraren.

Naiv Bayes sats

Bayes sats används för att hitta sannolikheten för en hypotes med villkorliga sannolikheter beroende på förkunskaper. Denna sats är uppkallad efter Thomas Bayes. Naiv Bayes-klassificerare fungerar enligt principen om villkorlig sannolikhet, såsom den ges av Bayes sats.

För att förstå Bayes sats, låt oss titta på ett enkelt exempel med en naiv Bayes-klassificerare där man kastar två mynt. Vi kan få dessa samplingsrum genom att kasta två mynt: {HH, HT, TH, TT}. Så sannolikheterna för dessa händelser blir:

  • Att få två huvuden = 1/4
  • Minst en svans = 3/4
  • Det andra myntet är huvud givet att det första myntet är svans = 1/2
  • Att få två huvuden med det första myntet är ett huvud = 1/2

Bayes sats beräknar sannolikheten för att en händelse ska inträffa baserat på sannolikheten för en annan händelse som redan har inträffat. Formeln för Bayes sats ges som:

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

P(A|B) är sannolikheten för händelse A när händelse B redan har inträffat. Sannolikheten P(B) får inte vara noll.

  • Du måste hitta sannolikheten för händelse A, som ges när händelse B (bevis) är sann.
  • P(A) är den prior sannolikheten för A, det vill säga sannolikheten för händelsen innan några bevis observeras. Här är händelse B värdet av en okänd instans.
  • P(A|B) är den posteriora sannolikheten för händelse A, det vill säga sannolikheten för A efter att ha tittat på beviset B.

Arbetsexempel på naiv Bayes-klassificerare

Det snabbaste sättet att se formeln fungera är att köra den för hand.

Låt oss ta ett exempel på en butikping för att förstå hur Bayes naiva klassificerare fungerar. I den här datamängden finns en liten exempeldatamängd på 30 rader för detta exempel.

dataset

Provbutikping Dataset med 30 rader med kolumnerna Dag, Rabatt, Fri leverans och Köp

Problemet är att förutsäga om en person kommer att köpa en produkt på en specifik kombination av Dag, Rabatt och Fri leverans med hjälp av Naive Bayes Theorem.

Frekvenstabell som räknar utfall av köp och inget köp för varje attributvärde

Steg 1) Vi kommer att skapa frekvenstabeller för varje attribut med hjälp av indatatyperna som nämns i datamängden, såsom dagar, rabatt och fri leverans.

Frekvenstabeller för attributen Dag, Rabatt och Fri frakt

Låt händelsen 'Köp' betecknas som 'A' och oberoende variabler, nämligen 'Rabatt', 'Fri leverans' och 'Dag', betecknas som 'B'. Vi kommer att använda dessa händelser och variabler för att tillämpa Bayes teorem.

Steg 2) Låt oss nu beräkna sannolikhetstabellerna en efter en.

Sannolikhetstabell för dagsattributet mot köp och inget köp

Exempel 1:

Baserat på denna sannolikhetstabell kommer vi att beräkna de villkorade sannolikheterna enligt nedan.

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

Och hitta P(A/B) med Bayes sats,

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

På samma sätt, om A är Köp, då

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

Obs: Eftersom P(Köp | Weekday) är mer än P(Inget köp | Weekday), kan vi dra slutsatsen att en kund med största sannolikhet kommer att köpa produkten på en veckodag.

Steg 3) På samma sätt kan vi beräkna sannolikheten för att en händelse inträffar utifrån alla tre variablerna. Nu kommer vi att beräkna sannolikhetstabeller för alla tre variablerna med hjälp av ovanstående frekvenstabeller.

Sannolikhetstabeller för Dag, Rabatt och Fri leverans som används i den kombinerade beräkningen

Exempel 2:

Nu, med hjälp av dessa tre sannolikhetstabeller, kommer vi att beräkna om en kund sannolikt kommer att göra ett köp baserat på en specifik kombination av "Dag", "Rabatt" och "Gratis leverans".

Låt oss här ta en kombination av dessa faktorer:

  • Dag = helgdag
  • Rabatt = Ja
  • Fri frakt = Ja

När, A = Köp

Beräkna den villkorade sannolikheten för köp på följande kombination av dag, rabatt och fri leverans.

Där B är:

  • Dag = helgdag
  • Rabatt = Ja
  • Fri frakt = Ja

Och A = Köp

Därför,

= 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

När, A = Inget köp

Beräkna på samma sätt den villkorade sannolikheten för köp på följande kombination av dag, rabatt och fri leverans.

Där B är:

  • Dag = helgdag
  • Rabatt = Ja
  • Fri frakt = Ja

Och A = Inget köp

Därför,

= 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

Steg 4) Därav,

Sannolikhet för köp = 0.986

Sannolikhet för inget köp = 0.027

Slutligen har vi villkorade sannolikheter att köpa denna dag. Låt oss nu generalisera dessa sannolikheter för att erhålla sannolikheten för händelserna.

  • Summan av sannolikheter = 0.986 + 0.027 = 1.013
  • Sannolikhet för köp = 0.986 / 1.013 = 97.33 %
  • Sannolikhet för inget köp = 0.027 / 1.013 = 2.67 %

De två poängen summeras till 1.013 snarare än 1 eftersom antagandet om oberoende gör varje uppskattning approximativ, så att dividera med totalen skalar om dem till procentsatser.

Observera att eftersom 97.33 % är större än 2.67 %. Vi kan dra slutsatsen att den genomsnittliga kunden kommer att köpa på en semester med rabatt och fri leverans.

Typer av naiv Bayes-modell

Det finns många typer av naiva Bayes-klassificerare. Här har vi diskuterat Multinomial, Bernoulli och Gaussian Naive Bayes klassificerare.

Variant Funktionstyp Typisk användning
Multinomial Ordräkning Ämnes- och dokumentklassificering
Bernoulli Binära flaggor för närvarande eller frånvarande Korta sms och skräppostfiltrering
Gauss Kontinuerliga numeriska värden Sensoravläsningar och mätningar

1. Multinomial Naiva Bayes

Denna typ av Naiv Bayes-modell används för problem med dokumentklassificering. Det fungerar med funktioner som representerar frekvensen av ord i ett dokument. Klassificeraren tar hänsyn till förekomsten och antalet ord för att bestämma sannolikheten för att ett dokument tillhör en specifik kategori, såsom sport, politik eller teknik.

2. Bernoulli Naive Bayes

Detta liknar multinomial Naive Bayes. Bernoulli Naive Bayes klassificerare används för dokumentklassificeringsuppgifter. Däremot använder den booleska prediktorer. Den representerar om ett ord finns eller inte och tar bara värden Ja eller Nej. Klassificeraren beräknar sannolikheterna baserat på om ett ord förekommer i texten eller inte.

3. Gaussisk Naiv Bayes

Denna klassificerare används vid kontinuerligt värde men inte diskret värde. Denna klassificerare beräknar sannolikheter med hjälp av parametrarna för Gauss fördelning, dvs medelvärde och varians.

Gaussisk klockkurva som används för att modellera kontinuerliga funktioner i Naive Bayes

Formeln för betingad sannolikhet ändras till,

Gaussisk Naiv Bayes villkorliga sannolikhetsformel med medelvärde och varians

Ocuco-landskapet scikit lära Biblioteket lägger till ytterligare två varianter: Komplement-naiva Bayes för obalanserad text och kategoriska naiva Bayes för diskreta kategorier.

Fördelar och begränsningar med Naive Bayes Classifier

Det finns olika fördelar och nackdelar med Naive Bayes-algoritmen inom maskininlärning.

Fördelar med Naive Bayes Classifier

  • Enkelhet och effektivitet: Naive Bayes är enkel och lätt att träna och implementera. Det är effektivt på grund av låga beräkningskostnader. Den kan hantera stora datamängder effektivt.
  • Snabb träning och förutsägelse: Naive Bayes kräver inte lika mycket träningsdata på grund av oberoendet mellan funktioner. Den kan förutsäga snabbt när modellen väl är tränad.
  • skalbarhet: Naive Bayes kan hantera högdimensionella datauppsättningar med ett stort antal funktioner. Den fungerar bra även när antalet funktioner är större än antalet träningsexempel. Den skalas med antalet datapunkter och prediktorer. Den hanterar både kontinuerliga och diskreta data.
  • Robusthet till irrelevanta egenskaper: Den är inte känslig för irrelevanta egenskaper.
  • Fungerar bra med små träningsset: Naive Bayes kan ge rimliga resultat även med begränsad träningsdata. Den kan hantera situationer där antalet träningsinstanser är litet.

Begränsning av Naive Bayes Classifier

Naiva Bayes in maskininlärning antar att alla funktioner är oberoende av varandra. Så det kan inte lära sig relationer mellan olika funktioner i datan. Den behandlar varje funktion som om den inte har något samband med de andra.

En andra varning: de klassannolikheter den rapporterar är dåligt kalibrerade, så konfidenstalet som är kopplat till en förutsägelse är inte en tillförlitlig sannolikhet.

För att övervinna detta problem kan du använda Beslutsträd, Slumpmässiga skogar, Stödvektormaskiner (SVM), Neurala nätverk etc. Dessa algoritmer har förmågan att lära sig komplexa samband och beroenden mellan funktioner i data. Så de kan förutsäga mer exakta resultat.

Tillämpningar av Naive Bayes Classifier

Eftersom den här algoritmen är snabb och effektiv kan du använda den för att göra förutsägelser i realtid.

Spam upptäckt

E-posttjänster (som Gmail) använd den här algoritmen för att avgöra om ett e-postmeddelande är skräppost. Den här algoritmen är utmärkt för skräppostfiltrering.

Sentimentanalys

Den kan klassificera text som positiv, negativ eller neutral baserat på funktioner som ordval, meningsstruktur och sammanhang. Den hittar tillämpningar i sociala medier övervakning, kundrecensioner och marknadsundersökningar.

Dokumentklassificering

Det kan klassificera dokument i kategorier som sport, politik, teknik eller finans baserat på frekvensen eller närvaron av specifika ord eller funktioner i dokumentet.

Rekommendationssystem

Den kan analysera användarpreferenser, historiska data och objektfunktioner för att förutsäga användarnas intressen eller preferenser för att rekommendera produkter, filmer eller artiklar.

Denna klassificeringsalgoritm används även för ansiktsigenkänning, väderprognoser, medicinsk diagnos och butikerping, Nyhetsklassificering etc. Du kan implementera Naive Bayes i Python, där modulen sklearn.naive_bayes tillhandahåller alla varianter som beskrivs ovan.

Vanliga frågor

Importera den variant du behöver från sklearn.naive_bayes, dela upp data med train_test_split, anropa sedan fit() på träningsraderna och predict() på testraderna. GaussianNB passar kontinuerliga funktioner, medan MultinomialNB och BernoulliNB hanterar textantal och binära ordflaggor.

Om en kategori aldrig dyker upp med en klass i träning blir dess villkorliga sannolikhet noll och utplånar hela produkten. Laplace-utjämning lägger till ett till varje räkning så att ingenting kollapsar till noll. Scikit-learn exponerar detta som alfaparametern.

Ingen av dem vinner direkt. Naive Bayes tränar snabbare, behöver mindre data och hanterar högdimensionell text. Logistisk regression modellerar korrelerade funktioner och producerar bättre kalibrerade sannolikheter. På små textdataset leder ofta Naive Bayes; med mer data tar logistisk regression den om.

Håll fram en testuppsättning och jämför förutsägelser med de sanna etiketterna med hjälp av en förvirringsmatris, härled sedan precision, återkallelse och F1. Noggrannhet ensamt vilseledande vid obalanserade data såsom spam, där en klass dominerar urvalet.

Använd gemener i texten, ta bort interpunktion, stoppord och eventuellt avmarkera tokens, och omvandla sedan varje dokument till en count- eller TF-IDF-vektor. Bernoulli-varianter vill ha binära närvaroflaggor istället för counts. Tillämpa identiska steg vid tränings- och prediktionstillfället.

Naive Bayes är det enklaste Bayesianska nätverket: en klassnod där varje funktion hänger direkt på den och inga länkar mellan funktionerna. Ett generellt Bayesianskt nätverk låter dig rita dessa beroendekanter, så det modellerar korrelationer som Naive Bayes avsiktligt ignorerar.

Automatiserade maskininlärningsverktyg söker efter utjämningsvärden, funktionsrepresentationer och variantval, och rangordnar sedan kandidater efter korsvaliderad poäng. Det eliminerar det mesta av manuell trial and error – du bestämmer fortfarande vilket mått som är viktigt och om vinnaren beter sig förnuftigt.

GitHub Copilot utarbetar standardschemat snabbt — importerar, tränar testdelning, anpassar och förutsäger anrop — från en kort kommentar. Kontrollera alltid vilken variant den väljer och utvärderingskoden, eftersom ett rimligt skript fortfarande kan träna fel modell.

Sammanfatta detta inlägg med: