låt oss börja med att definiera vad som menas med klassificering, klassificering är processen att försöka tilldela något till en av de tillgängliga grupperna. Du kan ha 2 grupper (binär klassificering) eller mer än 2 grupper (klassificering i flera klasser).
klassificeringsalgoritmer inkluderar: (logistisk Regression, K-närmaste granne, stödvektormaskin och naiva Bayes…etc)
För en datavetenskapare är det verkligen viktigt att se till hur bra din klassificeringsmodell är. Det finns några kända möjliga sätt att utvärdera din modell. De kan listas enligt följande:
Förvirringsmatris — det kan enkelt beräknas med hjälp av Scikit-Learn-bibliotekets implementering. Du måste bara mata den en vektor som innehåller förutsägelserna för din beroende variabel y ^ och en vektor av de faktiska värdena för din beroende variabel y
scikit-lär dig förvirringsmatrismodul nu när du har beräknat din förvirringsmatris som kommer att vara en 2*2-matris för något binärt klassificeringsproblem, skulle den resulterande matrisen vara så här
confusion matrix
A confusion matrix consists of 4 values which are very valuable to know for every data scientist:
False Positive (FP) — instanser som felaktigt klassificeras som positiva klassinstanser (0,1) = 5
False negative (FN) — instanser som felaktigt klassificeras som negativa Klassinstanser (1,0) = 10
True Positive (TP) — instanser som korrekt klassificeras som positiva Klassinstanser (1,1) = 50
True Negative (TN) — instanser som korrekt klassificeras som negativa klassinstanser (0,0) = 35
totala instanser av datauppsättningen (utbildning + testinstanser) = 5+10+50+35 = 100
Nu kan vi beräkna 2 viktiga procentsatser:
1 – noggrannhet = korrekt / totalt = (50+35)/ 100 = 85%
2 – felfrekvens = felaktig / totalt = (5+10)/ 100 = 15%
Nu ska jag fira efter att ha byggt en sådan klassificerare har den en så bra noggrannhet, …eller ska jag ?!
Låt oss se, följ mig i följande scenario ”Du är en datavetare som arbetar i en bank och har byggt en klassificeringsmodell för att klassificera bedrägerier och transaktioner utan bedrägeri, du vill utvärdera din modell så att du bestämde dig för att beräkna förvirringsmatrisen och det var resultatet:”
förvirringsmatris — upptäckt av bedrägeri
genom att analysera förvirringsmatrisen kan vi säga att vi har en ganska bra klassificerare med noggrannhetsgrad = 9,800/10,000 = 98%
men datavetenskaparen har en ganska konstig uppfattning att han vill försöka; Tanken är att stoppa klassificeraren från att klassificera någon av transaktionerna som bedrägeri (positiv klass ’1’) sedan beräknade han den nya förvirringsmatrisen och det var som följande:
klassificeringsnoggrannhetsgraden = 9,850/ 10,000 = 98,5% vilket innebär att det finns en 0,5% ökning av noggrannheten även om klassificeringsenheten inte fungerar korrekt!
och det kallas Noggrannhetsfälla så vi säger definitivt att mätnoggrannhetshastigheten inte räcker för att svara på frågan ’hur bra är din klassificerare?!’
lösningen är att prova en annan mätmetod som är
2. Kumulativ Noggrannhetsprofil (CAP) kurva-det är en mer robust metod för att hjälpa vår maskinmodell. För att förstå intuitionen bakom det måste du följa mig i följande scenarier:
Scenario # 1-Föreställ dig att du som datavetare arbetar i ett företag som vill marknadsföra sin nya produkt så att de skickar ett mail med sitt erbjudande till alla kunder och vanligtvis 10% av kundens svar och faktiskt köper produkten så att de dock att det kommer att vara fallet för den här tiden och det scenariot kallas slumpmässigt Scenario.
scenario#2 — du arbetar fortfarande i samma företag men den här gången bestämde du dig för att göra det på ett mer systematiskt sätt:
inspektera dina historiska data och ta en grupp kunder som faktiskt köpte erbjudandet och försök att extrahera informationen
mät dessa faktorer och försök att upptäcka vilka av dem som påverkar antalet köpta produkter eller med andra ord passa data till en logistisk regressionsmodell.
gör en förutsägelse om vilka kunder som är mer benägna att köpa produkten.
rikta sedan in de personer som du förutspådde är mer benägna att köpa produkten.
sedan genom att mäta svaret från den riktade gruppen som representeras i den kurvan ’CAP Curve’.
Vi kan definitivt märka förbättringen; när du kontaktade 20 000 riktade kunder fick du cirka 5 000 positiva svar var i scenario#1 genom att kontakta samma antal kunder fick du bara 2 000 positiva svar.
så tanken här är att jämföra din modell med det slumpmässiga scenariot och du kan ta det till nästa nivå genom att bygga en annan modell kanske en support vector machine (SVM) / kernel SVM-modell för att jämföra den med din nuvarande logistiska regressionsmodell.
men hur analyserar du den resulterande grafen ?
ju bättre din modell, desto större blir området mellan dess LOCKKURVA och den slumpmässiga scenariot rak linje.
hypotetiskt kan vi rita den så kallade perfekta modellen som representerar en modell som är typ av omöjlig att bygga om du inte har någon form av kristallkula . Det visar att när du skickar erbjudandet till 10 000 möjliga kunder fick du ett perfekt positivt svar där alla kontaktade personer köpte produkten.
att plotta en sådan hypotetisk modell hjälper oss som referens för att utvärdera dina modeller CAP kurvor.
det finns 2 metoder för att analysera föregående graf:
först —
beräkna området under Perfect Model Curve (aP)
beräkna området under Perfect Model Curve (aR)
beräkna Noggrannhetsgraden(AR) = aR/ aP; som (AR)~1 (desto bättre är din modell) och som (AR)~0 (desto sämre är din modell)
andra —
rita en linje från 50% – punkten (50 000) i den totala kontaktade axeln upp till modellkapslingskurvan
sedan från den skärningspunkten, projicera den till den köpta axeln
detta x% – värde representerar hur bra din modell är:
Om X < 60% /(6000) då har du en skräpmodell
Om 60% < X < 70% /(7000) då har du en dålig modell
om 70% < X < 80% /(8000) då har du en bra modell
Om 80% < X < 90%/ (9000) då har du en mycket bra modell
om 90% < X < 100% / (10,000) då är din modell för bra för att vara sant! vad jag menar är att detta vanligtvis händer på grund av överfitting vilket definitivt inte är bra eftersom din modell kommer att vara bra för att klassificera endast de data som den är utbildad på men mycket dålig med nya osynliga instanser.