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.
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.
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
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.
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.
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.
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.
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.
Formeln för betingad sannolikhet ändras till,
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.








