Senast uppdaterad den 2 augusti 2020
Klassificeringsnoggrannhet är det totala antalet korrekta förutsägelser dividerat med det totala antalet förutsägelser som gjorts för en datauppsättning.
som prestandamått är noggrannhet olämplig för obalanserade klassificeringsproblem.,
Huvudskälet är att det överväldigande antalet exempel från majoritetsklassen (eller klasserna) kommer att överväldiga antalet exempel i minoritetsklassen, vilket innebär att även oskickliga modeller kan uppnå noggrannhetspoäng på 90 procent, eller 99 procent, beroende på hur allvarlig klassobalans råkar vara.
ett alternativ till att använda klassificeringsnoggrannhet är att använda mätvärden för precision och återkallelse.
i denna handledning kommer du att upptäcka hur man beräknar och utvecklar en intuition för precision och återkallelse för obalanserad klassificering.,
Efter att ha slutfört denna handledning kommer du att veta:
- Precision kvantifierar antalet positiva klassprognoser som faktiskt tillhör den positiva klassen.
- Recall kvantifierar antalet positiva klassprognoser gjorda av alla positiva exempel i datauppsättningen.
- f-Measure ger ett enda poäng som balanserar både precisions-och återkallelseproblemen i ett nummer.
Starta ditt projekt med min nya bok obalanserad klassificering med Python, inklusive steg-för-steg-handledning och Python källkodsfiler för alla exempel.,
låt oss komma igång.
- uppdatera Jan / 2020: förbättrat språk om målet med precision och återkallelse. Fasta stavfel om vilken precision och återkallelse försöker minimera (tack för kommentarerna!).
- uppdatera Feb / 2020: fast stavfel i variabelt namn för återkallelse och f1.
hur man beräknar Precision, återkallelse och f-åtgärd för obalanserad klassificering
foto av Waldemar Merger, vissa rättigheter förbehållna.,
handledning Översikt
denna handledning är uppdelad i fem delar; de är:
- förvirring matris för obalanserad klassificering
- Precision för obalanserad klassificering
- Recall för obalanserad klassificering
- Precision vs Recall för obalanserad klassificering
- f-mått för obalanserad klassificering
förvirring matris för obalanserad klassificering
innan vi dyker in i precision och återkallelse är det viktigt att granska förvirringsmatrisen.,
för obalanserade klassificeringsproblem kallas majoritetsklassen vanligtvis det negativa resultatet (t.ex. ”ingen förändring” eller ”negativt testresultat”) och minoritetsklassen brukar kallas det positiva resultatet (t. ex. ”förändring” eller ”positivt testresultat”).
förvirringsmatrisen ger mer inblick i inte bara prestandan hos en prediktiv modell utan också vilka klasser som förutsägs korrekt, vilket felaktigt och vilken typ av fel som görs.,
den enklaste förvirringsmatrisen är för ett klassificeringsproblem i två klasser, med negativa (klass 0) och positiva (klass 1) klasser.
i denna typ av förvirringsmatris har varje cell i tabellen ett specifikt och väl förstått namn, sammanfattat enligt följande:
precisions-och återkallningsmätvärdena definieras i termer av cellerna i förvirringsmatrisen, specifikt termer som sanna positiva och falska negativ.
nu när vi har borstat upp på förvirringsmatrisen, låt oss ta en närmare titt på precisionsmätvärdet.,
Precision för obalanserad klassificering
Precision är ett mått som kvantifierar antalet korrekta positiva förutsägelser som gjorts.
Precision beräknar därför noggrannheten för minoritetsklassen.
det beräknas som förhållandet mellan korrekt förutspådda positiva exempel dividerat med det totala antalet positiva exempel som förutspåddes.
Precision utvärderar fraktionen av korrekta klassificerade instanser bland de som klassificeras som positiva …
– sidan 52, lära av obalanserade datamängder, 2018.,
Precision för binär klassificering
i ett obalanserat klassificeringsproblem med två klasser beräknas precision som antalet sanna positiva dividerat med det totala antalet sanna positiva och falska positiva.
- Precision = TruePositives/(TruePositives + FalsePositives)
resultatet är ett värde mellan 0.0 för ingen precision och 1.0 för full eller perfekt precision.
låt oss göra denna beräkning betong med några exempel.,
Tänk på en datauppsättning med ett förhållande mellan 1: 100 minoritet och majoritet, med 100 minoritetsexempel och 10 000 majoritetsklassexempel.
en modell gör förutsägelser och förutspår 120 exempel som tillhör minoritetsklassen, varav 90 är korrekta och 30 är felaktiga.
precisionen för denna modell beräknas som:
- Precision = TruePositives / (TruePositives + FalsePositives)
- Precision = 90 / (90 + 30)
- Precision = 90 / 120
- Precision = 0,75
resultatet är en precision på 0,75, vilket är ett rimligt värde men inte utestående.,
Du kan se att precision helt enkelt är förhållandet mellan korrekta positiva förutsägelser av alla positiva förutsägelser som gjorts eller noggrannheten i minoritetsklassprognoser.
Tänk på samma datauppsättning, där en modell förutspår 50 exempel som tillhör minoritetsklassen, varav 45 är sanna positiva och fem är falska positiva. Vi kan beräkna precisionen för denna modell enligt följande:
- Precision = TruePositives / (TruePositives + FalsePositives)
- Precision = 45 / (45 + 5)
- Precision = 45 / 50
- Precision = 0.,90
i det här fallet, även om modellen förutspådde mycket färre exempel som tillhör minoritetsklassen, är förhållandet mellan korrekta positiva exempel mycket bättre.
detta belyser att även om precision är användbar, berättar den inte hela historien. Det kommenterar inte hur många verkliga positiva klassexempel som förutspåddes tillhöra den negativa klassen, så kallade falska negativ.
vill du komma igång med Obalansklassificering?
Ta min gratis 7-dagars e-postkraschkurs nu (med provkod).,
Klicka för att registrera dig och även få en gratis PDF ebook version av kursen.
ladda ner din gratis mini-kurs
Precision för klassificering i flera klasser
Precision är inte begränsad till binära klassificeringsproblem.
i ett obalanserat klassificeringsproblem med mer än två klasser beräknas precision som summan av sanna positiva resultat i alla klasser dividerat med summan av sanna positiva och falska positiva resultat i alla klasser.,
- Precision = Sum C in C TruePositives_c/Sum C in C (TruePositives_c + FalsePositives_c)
Vi kan till exempel ha ett obalanserat klassificeringsproblem för multiclass där majoritetsklassen är den negativa klassen, men det finns två positiva minoritetsklasser: klass 1 och klass 2. Precision kan kvantifiera förhållandet mellan korrekta förutsägelser över båda positiva klasserna.,
Tänk på en datauppsättning med ett förhållande mellan 1: 1: 100 minoritet och majoritetsklass, det vill säga ett förhållande mellan 1:1 för varje positiv klass och ett förhållande mellan 1:100 för minoritetsklasserna och majoritetsklassen, och vi har 100 exempel i varje minoritetsklass och 10 000 exempel i majoritetsklassen.
en modell gör förutsägelser och förutspår 70 exempel för den första minoritetsklassen, där 50 är korrekta och 20 är felaktiga. Det förutspår 150 för andra klassen med 99 korrekt och 51 felaktigt., Precision kan beräknas för denna modell enligt följande:
Vi kan se att precisionsberäkningsskalorna när vi ökar antalet minoritetsklasser.
beräkna Precision med Scikit-Learn
precisionspoängen kan beräknas med hjälp av precision_score() scikit-learn-funktionen.
till exempel kan vi använda den här funktionen för att beräkna precision för scenarierna i föregående avsnitt.
först, fallet där det finns 100 positiva till 10 000 negativa exempel, och en modell förutspår 90 sanna positiva och 30 falska positiva. Det fullständiga exemplet listas nedan.,
Running the example calculates the precision, matching our manual calculation.
1
|
Precision: 0.,750
|
därefter kan vi använda samma funktion för att beräkna precision för multiclass-problemet med 1:1:100, med 100 exempel i varje minoritetsklass och 10 000 i majoritetsklassen. En modell förutspår 50 sanna positiva och 20 falska positiva för klass 1 och 99 sanna positiva och 51 falska positiva för klass 2.,
När du använder precision_score () – funktionen för multiclass-klassificering är det viktigt att ange minoritetsklasserna via argumentet ”etiketter” och att utföra ange ”genomsnittligt” argument till ”micro” för att säkerställa att beräkningen utförs som vi förväntar oss.
det fullständiga exemplet listas nedan.
om du kör exemplet beräknar du precisionen för multiclass-exemplet som matchar vår manuella beräkning.,
1
|
precision: 0.,677
|
Recall för obalanserad klassificering
Recall är ett mått som kvantifierar antalet korrekta positiva förutsägelser gjorda av alla positiva förutsägelser som kunde ha gjorts.
Till skillnad från precision som bara kommenterar de korrekta positiva förutsägelserna av alla positiva förutsägelser, ger recall en indikation på missade positiva förutsägelser.
På detta sätt ger recall en uppfattning om täckningen av den positiva klassen.,
för obalanserad inlärning används recall vanligtvis för att mäta täckningen av minoritetsklassen.
— sidan 27, obalanserad inlärning: stiftelser, algoritmer och applikationer, 2013.
Recall for Binary Classification
i ett obalanserat klassificeringsproblem med två klasser beräknas recall som antalet sanna positiva dividerat med det totala antalet sanna positiva och falska negativa.
- Recall = TruePositives/(TruePositives + FalseNegatives)
resultatet är ett värde mellan 0.,0 för ingen återkallelse och 1.0 för fullständig eller perfekt återkallelse.
låt oss göra denna beräkning betong med några exempel.
som i föregående avsnitt, överväga en datauppsättning med 1: 100 minoritet till majoritetsförhållande, med 100 minoritetsexempel och 10 000 majoritetsklassexempel.
en modell gör förutsägelser och förutspår 90 av de positiva klassprognoserna korrekt och 10 felaktigt. Vi kan beräkna återkallelsen för denna modell enligt följande:
- Recall = TruePositives / (TruePositives + FalseNegatives)
- Recall = 90 / (90 + 10)
- Recall = 90 / 100
- Recall = 0.,9
denna modell har en bra återkallelse.
Recall for multi-Class Classification
Recall är inte begränsat till binära klassificeringsproblem.
i ett obalanserat klassificeringsproblem med mer än två klasser beräknas återkallelsen som summan av sanna positiva effekter i alla klasser dividerat med summan av sanna positiva och falska negativ i alla klasser.,
- Recall = summa c i C TruePositives_c/Sum C i C (TruePositives_c + FalseNegatives_c)
som i föregående avsnitt, överväga en datauppsättning med en 1:1:100 minoritet till majoritetsklass, det vill säga ett 1:1-förhållande för varje positiv klass och ett 1:100-förhållande för minoritetsklasserna till majoritetsklassen, och vi har 100 exempel i varje minoritetsklass och 10 000 exempel i majoritetsklassen.
en modell förutspår 77 exempel korrekt och 23 felaktigt för klass 1, och 95 korrekt och fem felaktigt för klass 2., Vi kan beräkna recall för denna modell enligt följande:
Beräkna Recall Med Scikit-Lär dig
påminna om betyg kan beräknas med hjälp av recall_score() scikit-learn-funktionen.
till exempel kan vi använda den här funktionen för att beräkna återkallelse för scenarierna ovan.
först kan vi överväga fallet med en 1:100 obalans med 100 respektive 10 000 exempel, och en modell förutspår 90 sanna positiva och 10 falska negativ.
det fullständiga exemplet listas nedan.
kör exemplet kan vi se att poängen matchar den manuella beräkningen ovan.,
1
|
recall: 0.,900
|
Vi kan också använda recall_score() för obalanserade multiclass klassificeringsproblem.
i detta fall har datauppsättningen en 1:1:100 obalans, med 100 i varje minoritetsklass och 10 000 i majoritetsklassen. En modell förutspår 77 sanna positiva och 23 falska negativ för klass 1 och 95 sanna positiva och fem falska negativ för klass 2.
det fullständiga exemplet listas nedan.
om du kör exemplet beräknar du återkallelsen för multiclass-exemplet som matchar vår manuella beräkning.,
1
|
recall: 0.860
|
precision vs., Recall för obalanserad klassificering
Du kan välja att använda precision eller återkalla ditt obalanserade klassificeringsproblem.
maximering av precision minimerar antalet falska positiva, medan maximering av återkallelsen minimerar antalet falska negativ.
- Precision: lämplig när minimera falska positiva är fokus.
- Recall: lämpligt när minimera falska negativ är fokus.
Ibland vill vi ha utmärkta förutsägelser av den positiva klassen. Vi vill ha hög precision och hög återkallelse.,
detta kan vara utmanande, eftersom ofta ökningar i återkallelse ofta kommer på bekostnad av minskningar i precision.
i obalanserade datauppsättningar är målet att förbättra återkallandet utan att skada precision. Dessa mål är dock ofta motstridiga, eftersom för att öka TP för minoritetsklassen ökar antalet FP också ofta, vilket resulterar i minskad precision.
— sidan 55, obalanserad inlärning: stiftelser, algoritmer och applikationer, 2013.,
i stället för att välja ett eller annat mått kan vi dock välja ett nytt mätvärde som kombinerar både precision och återkallelse till ett poäng.
f-mått för obalanserad klassificering
klassificeringsnoggrannhet används ofta eftersom det är ett enda mått som används för att sammanfatta modellens prestanda.
f-Measure ger ett sätt att kombinera både precision och återkallelse till ett enda mått som fångar båda egenskaperna.
ensam, varken precision eller återkallelse berättar hela historien., Vi kan ha utmärkt precision med fruktansvärda återkallelse, eller växelvis, fruktansvärd precision med utmärkt återkallelse. F-measure ger ett sätt att uttrycka båda farhågor med en enda poäng.
När precision och återkallelse har beräknats för ett binärt eller multiclass klassificeringsproblem kan de två poängen kombineras i beräkningen av F-åtgärden.
den traditionella f-åtgärden beräknas enligt följande:
- F-Measure = (2 * Precision * Recall)/(Precision + Recall)
detta är det harmoniska medelvärdet av de två fraktionerna., Detta kallas ibland f-Score eller F1-Score och kan vara det vanligaste metriska som används vid obalanserade klassificeringsproblem.
… F1-measure, som väger precision och minns lika, är den variant som oftast används när man lär sig av obalanserad data.
— sidan 27, obalanserad inlärning: stiftelser, algoritmer och applikationer, 2013.
precis som precision och återkallelse är en dålig f-Measure-poäng 0.0 och en bästa eller perfekt f-Measure-poäng är 1.,0
till exempel skulle en perfekt precision och recall poäng resultera i en perfekt f-Measure poäng:
- f-Measure = (2 * Precision * Recall) / (Precision + Recall)
- f-Measure = (2 * 1.0 * 1.0) / (1.0 + 1.0)
- f-åtgärd = (2 * 1.0) / 2.0
- F-Measure = 1.0
Låt oss göra denna beräkning betong med ett fungerande exempel.
överväga en binär klassificeringsdataset med 1:100 minoritet till majoritetsförhållande, med 100 minoritetsexempel och 10,000 majoritetsklassexempel.,
Tänk på en modell som förutspår 150 exempel för den positiva klassen, 95 är korrekta (sanna positiva), vilket betyder att fem saknades (falska negativ) och 55 är felaktiga (falska positiva).
vi kan beräkna precisionen enligt följande:
- Precision = TruePositives/(TruePositives + FalsePositives)
- Precision = 95 / (95 + 55)
- Precision = 0,633
Vi kan beräkna återkallelsen enligt följande:
- Recall = TruePositives / (TruePositives + FalseNegatives)
- Recall = 95 / (95 + 5)
- Recall = 0.,95
detta visar att modellen har dålig precision, men utmärkt återkallelse.
slutligen kan vi beräkna f-åtgärden enligt följande:
Vi kan se att de goda återkallelsenivåerna-ut den dåliga precisionen, vilket ger en okej eller rimlig f-åtgärdspoäng.
beräkna F-Measure med Scikit-Learn
f-measure-poängen kan beräknas med hjälp av f1_score() scikit-learn-funktionen.
till exempel använder vi den här funktionen för att beräkna F-Measure för scenariot ovan.,
detta är fallet med en 1:100 obalans med 100 respektive 10,000 exempel, och en modell förutspår 95 sanna positiva, fem falska negativ och 55 falska positiva.
det fullständiga exemplet listas nedan.
genom att köra exemplet beräknas f-Measure, som matchar vår manuella beräkning, inom några mindre avrundningsfel.,
1
|
f-mät: 0.,760
|
Ytterligare läsning
det här avsnittet innehåller mer resurser om ämnet om du vill gå djupare.
Tutorials
- hur man beräknar Precision, Recall, F1, och mer för djupa inlärningsmodeller
- hur man använder Roc kurvor och Precision-Recall kurvor för klassificering i Python
papper
- en systematisk analys av prestandamått för Klassificeringsuppgifter, 2009.
böcker
- obalanserad inlärning: stiftelser, algoritmer och applikationer, 2013.,
- lära av obalanserade datamängder, 2018.
API
- sklearn.mått.precision_score API.
- sklearn.mått.recall_score API.
- sklearn.mått.f1_score API.
artiklar
- förvirring matris, Wikipedia.
- Precision och återkallelse, Wikipedia.
- F1 poäng, Wikipedia.
sammanfattning
i den här handledningen upptäckte du hur du beräknar och utvecklar en intuition för precision och återkallelse för obalanserad klassificering.,
specifikt lärde du dig:
- Precision kvantifierar antalet positiva klassprognoser som faktiskt tillhör den positiva klassen.
- Recall kvantifierar antalet positiva klassprognoser gjorda av alla positiva exempel i datauppsättningen.
- f-Measure ger ett enda poäng som balanserar både precisions-och återkallelseproblemen i ett nummer.
har du några frågor?
Ställ dina frågor i kommentarerna nedan och jag kommer att göra mitt bästa för att svara.,
få ett handtag på obalanserad klassificering!
utveckla obalanserade inlärningsmodeller i minuter
…med bara några rader av python-kod
Upptäck hur i min nya Ebook:
obalanserad klassificering med Python
det ger självstudier tutorials och end-to-end projekt på:
prestandamått, Undersampling metoder, SMOTE, tröskel flytta, Sannolikhetskalibrering, kostnadskänsliga algoritmer
och mycket mer…,
ta obalanserade klassificeringsmetoder till dina Maskininlärningsprojekt
se vad som finns inuti