Naiv Bayes-algoritm i maskininlärning
Naiv Bayes Classifier Algorithm
Classifier är en maskininlärningsalgoritm som kategoriserar data i en eller flera av en uppsättning "klasser". E-postklassificerare är ett exempel på en klassificerare som skannar e-postmeddelanden för att filtrera dem efter klassetikett: Spam eller Not Spam.
Naiv Bayes Classifier i maskininlärning är en övervakad maskininlärning för klassificeringsuppgifter.
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-satsen, är den känd som en sannolikhetsklassificerare. Den förutsäger baserat på sannolikheten för ett föremål.
Anledning till att kallas Naiv Bayes?
Naiv Bayes klassificerare har två ord: Naiv och Bayes. Varför Navie? Denna algoritm behandlar alla ordmeningar som samma. Till exempel "Du är" och "Är du" är samma för denna algoritm. Det är inte beroende av funktioner eller förekomst av funktioner. Om du vill identifiera frukten Apple behöver du färgen röd, form sfärisk, smak söt att känna igen som ett äpple. Det betyder att dessa funktioner är oberoende av varandra.
- Naiv Bayes klassificerare antar att funktionerna är oberoende av varandra. Eftersom detta sällan är möjligt i verkliga data, så kallas klassificeraren naiv.
- Denna klassificeringsalgoritm är baserad på Bayes teorem så känd som Naive Bayes Classifier.
Naiva Bayes sats
Bayes teorem används för att hitta sannolikheten för en hypotes med villkorade sannolikheter beroende på förkunskaper. Denna sats är uppkallad efter Thomas Bayes. Naiv Bayes klassificerare fungerar på principen om betingad sannolikhet, som ges av Bayes teorem.
För att förstå Bayes sats, låt oss titta på ett enkelt naivt bayes klassificerare exempel på att kasta två mynt. Vi kan få dessa exempelutrymmen genom att kasta två mynt: {HH, HT, TH, TT}. Så sannolikheten för dessa händelser kommer att vara:
- 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 teorem beräknar sannolikheten för att en händelse ska inträffa baserat på sannolikheten för en annan händelse som redan har ägt rum. Formeln för Bayes sats ges som:
P(A|B) = (P(B|A) * P(A)) / P(B)
P(A|B) Sannolikhet för jämn A när jämn B redan har inträffat. Sannolikheten P(B) ska 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 a priori (a priori, dvs. sannolikheten för en observerad händelse före bevis) av A. Här är händelse B värdet av en okänd instans.
- P(A|B) är den bakre sannolikheten för händelse B, dvs sannolikheten för händelsen efter att ha tittat på bevisen.
Arbetsexempel på Naive Bayes klassificerare
Låt oss ta ett exempel på shopping för att förstå hur Bayes Naive Classifier fungerar. I denna datauppsättning finns det ett litet exempel på datauppsättning 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', 'Gratis leverans' och 'Dag', betecknade 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
Notera: 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 %
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 naiva Bayes-modeller
Det finns många typer av naiva Bayes-klassificerare. Här har vi diskuterat Multinomial, Bernoulli och Gaussian Naive Bayes klassificerare.
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,
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 så mycket träningsdata på grund av oberoende mellan funktioner. Det 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: Naiva Bayes kan ge rimliga resultat även med begränsad träningsdata. Den kan hantera situationer där antalet träningstillfällen är litet. Det kräver inte så mycket träningsdata.
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.
För att övervinna detta problem kan du använda Beslutsträd, Random Forests, Support Vector Machines (SVM), Neural Networks etc. Dessa algoritmer har förmågan att lära sig komplexa samband och beroenden mellan funktioner i data. Så dessa 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änder den här algoritmen för att avgöra om ett e-postmeddelande är skräppost. Denna algoritm ä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 också i ansiktsigenkänning, väderprognoser, medicinsk diagnos, shopping, nyhetsklassificering etc. Du kan implementera Naive Bayes i Python. Det finns Naive Bayes klassificerare sklearn, dvs sklearn.naive_bayes. Det är modulen som implementerar denna algoritm.
Slutsats
Naiva Bayes-algoritmer inom maskininlärning är klassificerare som oftast används i skräppostdetektering, nyhetsklassificering, sentimentanalys, väderprognoser, shopping etc. Naiva Bayes-algoritmerna är baserade på Bayes sats. Detta algoritm är enkel och lätt att implementera. Eftersom det är snabbt kan vi använda det i realtidsapplikationer. Dess största nackdel är att den antar oberoende funktioner (eftersom oberoende funktioner sällan är möjliga i verkligheten, så det är känt som naivt). Den behandlar varje funktion som lika. För att övervinna denna nackdel kan du använda andra klassificerare som Decision Tree, Random Forest, Support Vector Machine (SVM) etc.