Det finns många sätt att utvärdera prestandan hos en klassificerare. I den här artikeln introducerar vi Precision-Recall Curve och undersöker ytterligare skillnaden mellan två populära resultatrapporteringsmetoder: Precision-Recall (PR) Curve och Receiver Operation Characteristic (ROC) Kurva. ROC Curve diskuteras redan i artikel . Låt oss kortfattat förstå vad en Precision-Recall-kurva är.
Vad är Precision and Recall?
Precision
- Förhållandet mellan korrekt förutsagda positiva observationer och alla förutsagda positiva är känt som precision.
- Den mäter hur väl modellen förutsäger de positiva resultaten.
- Precisionsformeln är:
- Precision handlar om kvaliteten på positiva förutsägelser. En hög precision indikerar att modellen har en låg andel falska positiva.
Återkallelse
- Förhållandet mellan korrekt förutsagda positiva observationer och det totala antalet faktiska positiva observationer kallas återkallelse.
- Den mäter hur väl modellen kan fånga varje relevant instans.
- Återkallelse beräknas med denna formel:
- Recall handlar om mängden av de relevanta instanserna som fångas upp av modellen. Ett högt återkallande indikerar att modellen har en låg andel falska negativ.
När det gäller empirisk tolkning är en förvirringsmatris som består av fyra väsentliga termer det mest användbara verktyget för att förstå precision och återkalla:
- True Positive (TP): Antalet positiva klassinstanser som identifieras korrekt
- Falskt positiv (FP): Antalet negativa klassinstanser som av misstag identifieras som positiva klassinstanser kallas Falskt positiva (FP).
- True Negative (TN): Antalet negativa klassinstanser som identifieras korrekt
- Falskt negativt (FN): Antal positiva klassinstanser som av misstag klassificeras som negativa klassinstanser (Falskt negativa eller FN)
Precision-Recall (PR) kurva i maskininlärning
Precision är andelen av korrekt positiva klassificeringar (true positive) dividerat med det totala antalet förutspått positiva klassificeringar som gjordes (sant positiv + falskt positiv). Återkallelse är andelen av korrekt positiva klassificeringar (true positive) dividerat med det totala antalet av verkligt positiva klassificeringar (sant positiv + falsk negativ).
En PR-kurva är helt enkelt en graf med precisionsvärden på y-axeln och återkallningsvärden på x-axeln. PR-kurvan innehåller med andra ord
- Det är viktigt att notera att precision också kallas det positiva prediktiva värdet (PPV).
- Återkallelsen kallas även Sensitivity, Hit Rate eller True Positive Rate (TPR).
Figuren nedan visar en jämförelse av provets PR- och ROC-kurvor.
Tolka en precisionsåterkallningskurva
Det är önskvärt att algoritmen ska ha både hög precision och hög återkallelse. Men de flesta maskininlärningsalgoritmer innebär ofta en avvägning mellan de två. En bra PR-kurva har större AUC (area under kurvan) . I figuren ovan har klassificeraren som motsvarar den blå linjen bättre prestanda än klassificeraren som motsvarar den gröna linjen. Det är viktigt att notera att klassificeraren som har en högre AUC på ROC-kurva kommer alltid att ha en högre AUC på PR-kurvan också. Överväg en algoritm som klassificerar om ett dokument tillhör kategorin Sportnyheter eller inte. Anta att det finns 12 dokument, med följande etiketter för grundsannning (faktisk) och klassificerare.
Dokument-ID | Grund Sanning | Classifier Output |
---|---|---|
D1 | sporter | sporter |
D2 | sporter | sporter |
D3 | Inte sport | sporter |
D4 | sporter | Inte sport |
D5 | Inte sport | Inte sport |
D6 | sporter | Inte sport |
D7 | Inte sport | sporter |
D8 | Inte sport | Inte sport |
D9 | Inte sport | Inte sport |
D10 | sporter | sporter |
D11 | sporter | sporter |
D12 | sporter | Inte sport |
Låt oss nu hitta TP-, TN-, FP- och FN-värden.
Låt oss använda ett exempel som involverar dokument som klassificeras som sport eller inte sport för att bättre förklara definitionerna av sanna positiva (TP), sanna negativa (TN), falska positiva (FP) och falska negativa (FN) i klassificeringssammanhang:
Sant positiva (TP): Dokument som korrekt kategoriserades som Sport och som faktiskt handlade om sport. Dokument D1, D2, D10 och D11 i detta scenario är instanser av TP.
Sanna negativa (TN): Sanna negativa är de fall där dokumentet på lämpligt sätt märktes som Inte sport även om det inte hade något med sport att göra. I detta fall visas TN av dokumenten D5, D8 och D9.
Falska positiva (FP): Dokument som av misstag kategoriserades som Sport trots att de inte hade något med sport att göra. Här är några FP-exempel, dokument D3 och D7.
Falska negativa (FN): Exempel på dokument som av misstag stämplades som Inte sport, men i verkligheten handlade de om sport. Dokument D4, D6 och D12 är i detta fall FN-exempel.
Med tanke på dessa siffror: Stad =4, TN =3, FP =2, FN =3
Slutligen beräknas precision och återkallelse enligt följande:
Precision = frac{TP}{TP+FP} = frac{4}{6} = frac{2}{3}
Recall = frac{TP}{TP+FN} = frac{4}{7} Av detta följer att återkallelsen är 4/7 när precisionen är 2/3. Uttryckt annorlunda, av alla fall som förväntades vara positiva klassificerades två tredjedelar korrekt (precision), och av alla fall som faktiskt var positiva kunde modellen fånga fyra sjundedelar av dem (återkallelse).
Genom att ställa in olika trösklar får vi flera sådana precisionspar. Genom att plotta flera sådana P-R-par med vardera värden från 0 till 1, får vi en PR-kurva.
Behöver du en PR-kurva när ROC-kurvan finns?
PR-kurvan är särskilt användbar för att rapportera resultat från informationshämtning.
Informationshämtning innebär att man söker igenom en pool av dokument för att hitta sådana som är relevanta för en viss användarfråga. Anta till exempel att användaren anger en sökfråga Pink Elephants. Sökmotorn skummar igenom miljontals dokument (med några optimerade algoritmer) för att hämta en handfull relevanta dokument. Därför kan vi säkert anta att nej. av relevanta dokument kommer att vara mycket mindre jämfört med nr. icke-relevanta dokument.
I detta scenario,
- TP = Antal hämtade dokument som är relevanta (bra resultat).
- FP = Antal hämtade dokument som är icke-relevanta (falska sökresultat).
- TN = Antal ej hämtade dokument som är icke-relevanta.
- FN = Antal ej hämtade dokument som är relevanta (bra dokument vi missat).
ROC-kurvan är ett diagram som innehåller Recall = TPR =
Vidare hjälper FPR oss inte att utvärdera ett hämtningssystem väl eftersom vi vill fokusera mer på de hämtade dokumenten och inte de som inte hämtas. PR-kurva hjälper till att lösa detta problem. PR-kurvan har Recall-värdet (TPR) på x-axeln och precision =
När ska man använda ROC vs Precision-Recall Curves?
ROC (Receiver Operating Characteristic) kurvor är lämpliga när klassfördelningen är balanserad, och falska positiva och falska negativa har liknande konsekvenser. De skildrar avvägningen mellan sensitivitet och specificitet. Däremot är Precision-Recall-kurvor att föredra när man hanterar obalanserade datauppsättningar, med fokus på positiv klassprediktionsprestanda.
Precision-Recall ger insikter i modellens förmåga att korrekt klassificera positiva instanser. Att välja mellan ROC och Precision-Recall beror på problemets specifika behov, vilket betonar vikten av att förstå datadistributionen och konsekvenserna av olika typer av fel.
Grundläggande kodimplementering för Precision-Recall Curve
Importera nödvändiga bibliotek
Dessa kodrader importerar Python-bibliotek och moduler som krävs för att generera en precisions-återkallningskurva med sci-kit-lär dig och visualisera resultatet med Matplotlib . Matplotlib är ett populärt Python-ritningsbibliotek, och pyplot ger ett enkelt gränssnitt för att skapa olika typer av plotter och diagram. Logistisk tillbakagång är en populär klassificeringsalgoritm för binära och multiklassklassificeringsuppgifter. Precision-recall-kurvan och AUC är populära utvärderingsmått för binär klassificering problem, särskilt när man hanterar obalanserade datamängder.
Python3 import matplotlib.pyplot as plt from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import precision_recall_curve, auc>
Dataset används
Denna kod genererar en syntetisk datauppsättning för ett binärt klassificeringsproblem med hjälp av sci-kit-learns 'make_classification'-funktion.
Python3 # Generate a synthetic dataset X, y = make_classification( n_samples=1000, n_features=20, n_classes=2, random_state=42)>
Träna och testa split
De train_test_split funktion i scikit-learn används i detta kodavsnitt för att dela upp den tidigare genererade syntetiska datamängden (X och y) i tränings- och testuppsättningar. Denna uppdelning är ett kritiskt steg i utvärderingen av maskininlärningsmodeller. Modellen kommer att tränas på X_train och y_train data innan den testas på X_test och y_test data för att se hur bra den presterar på osedda prover. Train_test_split-funktionen separerar tränings- och testset, vilket säkerställer att modellens prestanda återspeglar dess generalisering till nya, tidigare osynliga data.
Python3 # Split the dataset into training and testing sets X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=42)>
Modellbyggnad
Här använder vi logistisk regression för att träna modellen på träningsdatauppsättningen. En populär algoritm för binär klassificering, logistisk regression implementeras av klassen Sci-kit-learn LogisticRegression.
Python3 # Train a logistic regression model (you can replace this with your own classifier) model = LogisticRegression() model.fit(X_train, y_train)>
Modellförutsägelse
Dessa beräkningar ger vanligtvis precisions- och återkallningsvärden för olika beslutströsklar, som du kan använda för att rita en precisions-återkallningskurva eller undersöka den relativa betydelsen av precision och återkallelse vid olika tidpunkter. Och beräknar Område under kurvan (AUC) för precisions-återkallningskurvan.
Python3 # Predict probabilities for positive class y_scores = model.predict_proba(X_test)[:, 1] # Calculate precision and recall precision, recall, thresholds = precision_recall_curve(y_test, y_scores) # Calculate Area Under the Curve (AUC) for precision-recall curve auc_score = auc(recall, precision)>
Plotta PR-kurva
Det här kodblocket tillhandahåller en standardmetod för att visualisera precisions-återkallningskurvan och låter dig utvärdera avvägningen mellan precision och återkallelse vid olika beslutströsklar. Modellens övergripande prestanda på precisions-återkallningskurvan sammanfattas av AUC-poängen som visas i förklaringen.
Python3 # Plot precision-recall curve plt.figure(figsize=(8, 6)) plt.plot(recall, precision, label=f'Precision-Recall Curve (AUC = {auc_score:.2f})') plt.xlabel('Recall') plt.ylabel('Precision') plt.title('Precision-Recall Curve') plt.legend() plt.show()>
Produktion :

Precision-Recall Curve
Vanliga frågor (FAQs)
F. Vad är Precision?
Förhållandet mellan noggrant förutsagda positiva observationer och det totala antalet förutsagda positiva är känt som precision. Den mäter hur väl modellen förutsäger de positiva resultaten. Följande är precisionsformeln:
Precision = frac{True Positives}{True Positives + False Positives}
F. Vad är återkallelse?
Recall är förhållandet mellan korrekt förutsagda positiva observationer och det totala antalet faktiska positiva. Det kallas också för känslighet eller sann positiv frekvens. Den bedömer hur väl modellen kan fånga varje relevant instans. Återkallelse beräknas med följande formel:
Precision = frac{True Positives}{True Positives + False Negatives}
F. Varför behöver vi precision och återkallelse?
För att bedöma en klassificerares prestanda i binära och flerklassiga klassificeringsproblem används två utvärderingsmått: precision och återkallelse. Positiv prediktionsnoggrannhet mäts genom precision och positiv prediktionsfullständighet mäts genom återkallelse.
F. Vad är avvägningen mellan återkallelse och precision?
Återkallelse och precision är ofta avvägningar. Återkallelsen kan lida när precisionen ökar och vice versa. Genom att ändra stapeln för att identifiera en positiv instans kan denna avvägning hanteras. Omvänt resulterar en lägre tröskel i lägre återkallelse men högre precision. Beslutet mellan återkallelse och precision baseras på detaljerna i det givna problemet.
F. Vad är F1-poängen och hur hänger det ihop med precision och återkallelse?
Det harmoniska medelvärdet för återkallelse och precision kallas F1-poäng. Det erbjuder en rättvis mätning som tar hänsyn till både falska positiva och falska negativa. F1-poängen beräknas med följande formel:
Skådespelaren Rekha
F1-Score = frac{2 imes Precision imes Recall}{Precision + Recall} F1-poängen är särskilt användbar när precision och återkallande är ur balans och en balans mellan de två är önskvärd.