logo

Presisjonsgjenkallingskurve | ML

Det er mange måter å evaluere ytelsen til en klassifikator på. I denne artikkelen introduserer vi Precision-Recall Curve og undersøker ytterligere forskjellen mellom to populære ytelsesrapporteringsmetoder: Precision-Recall (PR) Curve og Mottakerdriftskarakteristikk (ROC) Kurve. ROC Curve er allerede diskutert i artikkel . La oss kort forstå hva som er en presisjons-gjenkallingskurve.

Hva er presisjon og tilbakekalling?

Presisjon

  • Forholdet mellom korrekt predikerte positive observasjoner og alle predikerte positive er kjent som presisjon.
  • Den måler hvor godt modellen forutsier de positive resultatene.
  • Presisjonsformelen er:

Precision = frac{True Positives}{True Positives + False Positives}



  • Presisjon er opptatt av kvaliteten på positive spådommer. En høy presisjon indikerer at modellen har en lav andel falske positiver.

Minnes

  • Forholdet mellom korrekt predikerte positive observasjoner og det totale antallet faktiske positive observasjoner er kjent som tilbakekalling.
  • Den måler hvor godt modellen kan fange opp hvert enkelt tilfelle.
  • Tilbakekalling beregnes ved å bruke denne formelen:

Precision = frac{True Positives}{True Positives + False Negatives}

  • Recall er opptatt av mengden av de relevante tilfellene som fanges opp av modellen. En høy tilbakekalling indikerer at modellen har en lav andel falske negativer.

Når det gjelder empirisk tolkning, er en forvirringsmatrise som består av fire essensielle termer det mest nyttige verktøyet for å forstå presisjon og gjenkalling:

  • Sann positiv (TP): Antall positive klasseforekomster som er nøyaktig identifisert
  • Falsk positiv (FP): Antallet negative klasseforekomster som feilaktig identifiseres som positive klasseforekomster er kjent som False Positive (FP).
  • True Negative (TN): Antall negative klasseforekomster som er nøyaktig identifisert
  • Falsk negativ (FN): Antall positive klasseforekomster som ved en feil er klassifisert som negative klasseforekomster (falsk negativ eller FN)

Presisjonsgjenkalling (PR) kurve i maskinlæring

Presisjon er andelen av riktig positive klassifiseringer (sann positive) delt på det totale antallet spådd positive klassifiseringer som ble gjort (sann positiv + falsk positiv). Minnes er andelen av riktig positive klassifiseringer (sann positive) delt på det totale antallet av virkelig positive klassifiseringer (sann positiv + falsk negativ).



En PR-kurve er ganske enkelt en graf med presisjonsverdier på y-aksen og tilbakekallingsverdier på x-aksen. PR-kurven inneholder med andre ordfrac{TP}{TP+FP} på y-aksen ogfrac{TP}{TP+FN} på x-aksen.

  • Det er viktig å merke seg at presisjon også kalles Positive Predictive Value (PPV).
  • Tilbakekallingen kalles også Sensitivity, Hit Rate eller True Positive Rate (TPR).

Figuren nedenfor viser en sammenligning av prøve-PR- og ROC-kurver.

Tolke en presisjonsgjenkallingskurve

Det er ønskelig at algoritmen skal ha både høy presisjon og høy tilbakekalling. Imidlertid involverer de fleste maskinlæringsalgoritmer ofte en avveining mellom de to. En god PR-kurve har større AUC (areal under kurven) . I figuren over har klassifikatoren som tilsvarer den blå linjen bedre ytelse enn klassifikatoren som tilsvarer den grønne linjen. Det er viktig å merke seg at klassifikatoren som har en høyere AUC på ROC-kurve vil alltid ha høyere AUC på PR-kurven også. Tenk på en algoritme som klassifiserer om et dokument tilhører kategorien Sportsnyheter eller ikke. Anta at det er 12 dokumenter, med følgende grunnsannhet (faktisk) og klassifiseringsutdataklasseetiketter.



fet tekst i css
Dokument-IDGrunnsannhetKlassifiseringsutgang
D1SportSport
D2SportSport
D3Ikke sportSport
D4SportIkke sport
D5Ikke sportIkke sport
D6SportIkke sport
D7Ikke sportSport
D8Ikke sportIkke sport
D9Ikke sportIkke sport
D10SportSport
D11SportSport
D12SportIkke sport

La oss nå finne TP-, TN-, FP- og FN-verdier.

La oss bruke et eksempel som involverer dokumenter klassifisert som sport eller ikke-sport for å bedre forklare definisjonene av sanne positive (TP), sanne negative (TN), falske positive (FP) og falske negative (FN) i sammenheng med klassifisering:

Ekte positive (TP): Dokumenter som nøyaktig ble kategorisert som Sport og som faktisk handlet om sport. Dokumentene D1, D2, D10 og D11 i dette scenariet er forekomster av TP.

True Negatives (TN): True Negatives er de tilfellene der dokumentet ble passende merket som Ikke sport, selv om det ikke hadde noe med sport å gjøre. I dette tilfellet er TN demonstrert av dokumentene D5, D8 og D9.

Falske positive (FP): Dokumenter som feilaktig ble kategorisert som sport selv om de ikke hadde noe med sport å gjøre. Her er noen FP-eksempler, dokumenter D3 og D7.

Falske negativer (FN): Eksempler på dokumenter som feilaktig ble merket som Ikke sport, men i virkeligheten handlet de om sport. Dokumentene D4, D6 og D12 i dette tilfellet er FN-eksempler.

Gitt disse tellingene: By =4, TN =3, FP =2, FN =3

Til slutt beregnes presisjon og tilbakekalling som følger:

Precision = frac{TP}{TP+FP} = frac{4}{6} = frac{2}{3}

Recall = frac{TP}{TP+FN} = frac{4}{7}

Det følger at tilbakekallingen er 4/7 når presisjonen er 2/3. Angitt annerledes, av alle tilfellene som ble forventet å være positive, ble to tredjedeler nøyaktig klassifisert (presisjon), og av alle tilfellene som faktisk var positive, var modellen i stand til å fange opp fire syvendedeler av dem (gjenkalling).

skriv json til filen python

Ved å sette forskjellige terskler, får vi flere slike presisjons-gjenkallingspar. Ved å plotte flere slike P-R-par med en av verdiene fra 0 til 1, får vi en PR-kurve.

Trenger du en PR-kurve når ROC-kurven eksisterer?

PR-kurve er spesielt nyttig for å rapportere resultater for informasjonsinnhenting.
Informasjonsinnhenting innebærer å søke i en samling av dokumenter for å finne de som er relevante for et bestemt brukersøk. Anta for eksempel at brukeren skriver inn et søkeord Pink Elephants. Søkemotoren skummer gjennom millioner av dokumenter (ved hjelp av noen optimaliserte algoritmer) for å hente en håndfull relevante dokumenter. Derfor kan vi trygt anta at nei. av relevante dokumenter vil være mye mindre sammenlignet med nr. av ikke-relevante dokumenter.

I dette scenariet,

  • TP = Antall hentede dokumenter som er relevante (gode resultater).
  • FP = Antall hentede dokumenter som er ikke-relevante (falske søkeresultater).
  • TN = Antall ikke-hentede dokumenter som er ikke-relevante.
  • FN = Antall ikke-hentede dokumenter som er relevante (gode dokumenter vi savnet).

ROC-kurven er et plott som inneholder Recall = TPR =frac{TP}{TP+FN}på x-aksen og FPR =frac{FP}{FP+TN}på y-aksen. Siden nr. av sanne negativer, dvs. ikke-hentede dokumenter som ikke er relevante, er et så stort antall, at FPR blir ubetydelig liten.

Videre hjelper ikke FPR oss med å evaluere et gjenfinningssystem godt fordi vi ønsker å fokusere mer på de hentede dokumentene, og ikke de ikke-hentede. PR-kurve hjelper til med å løse dette problemet. PR-kurven har Recall-verdien (TPR) på x-aksen, og presisjon =frac{TP}{TP+FP}på y-aksen. Presisjon bidrar til å fremheve hvor relevante de hentede resultatene er , som er viktigere når du bedømmer et IR-system. Derfor er en PR-kurve ofte mer vanlig rundt problemer som involverer informasjonsinnhenting.

Når skal jeg bruke ROC vs. Precision-Recall Curves?

ROC (Receiver Operating Characteristic) kurver er egnet når klassefordelingen er balansert, og falske positive og falske negative har lignende konsekvenser. De skildrer avveiningen mellom sensitivitet og spesifisitet. I motsetning til dette er Precision-Recall-kurver å foretrekke når man arbeider med ubalanserte datasett, med fokus på positiv klasseprediksjonsytelse.

Precision-Recall gir innsikt i modellens evne til å klassifisere positive tilfeller korrekt. Valget mellom ROC og Precision-Recall avhenger av de spesifikke behovene til problemet, og understreker viktigheten av å forstå datadistribusjonen og konsekvensene av ulike typer feil.

Grunnleggende kodeimplementering for presisjonsgjenkallingskurve

Importerer nødvendige biblioteker

Disse kodelinjene importerer Python-biblioteker og moduler som kreves for å generere en presisjonsgjenkallingskurve med sci-kit-learn og visualisere resultatene med Matplotlib . Matplotlib er et populært Python-plottbibliotek, og pyplot gir et enkelt grensesnitt for å lage ulike typer plott og diagrammer. Logistisk regresjon er en populær klassifiseringsalgoritme for binære og multiklasse klassifiseringsoppgaver. Presisjonsgjenkallingskurven og AUC er populære evalueringsberegninger for binær klassifisering problemer, spesielt når man arbeider med ubalanserte datasett.

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>

Datasett brukt

Denne koden genererer et syntetisk datasett for et binært klassifiseringsproblem ved å bruke sci-kit-learns 'make_classification'-funksjon.

Python3 # Generate a synthetic dataset X, y = make_classification( n_samples=1000, n_features=20, n_classes=2, random_state=42)>

Tren og Test Split

De train_test_split funksjonen i scikit-learn brukes i denne kodebiten for å dele det tidligere genererte syntetiske datasettet (X og y) i trenings- og testsett. Denne delingen er et kritisk trinn i evaluering av maskinlæringsmodeller. Modellen vil bli trent på X_train- og y_train-dataene før den testes på X_test- og y_test-dataene for å se hvor godt den presterer på usynlige prøver. train_test_split-funksjonen skiller trenings- og testsett, og sikrer at modellens ytelse gjenspeiler dens generalisering til nye, tidligere usett 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)>

Modellbygg

Her bruker vi logistisk regresjon for å trene modellen på treningsdatasettet. En populær algoritme for binær klassifisering, logistisk regresjon er implementert av sci-kit-learn-klassen LogisticRegression.

forberede seg på test mockito
Python3 # Train a logistic regression model (you can replace this with your own classifier) model = LogisticRegression() model.fit(X_train, y_train)>

Modellprediksjon

Disse beregningene gir vanligvis presisjons- og tilbakekallingsverdier for ulike beslutningsterskler, som du kan bruke til å tegne en presisjons-gjenkallingskurve eller undersøke den relative betydningen av presisjon og gjenkalling på forskjellige tidspunkter. Og beregner Område under kurven (AUC) for presisjonsgjenkallingskurven.

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)>

Plotte PR-kurve

Denne kodeblokken gir en standardmetode for å visualisere presisjons-gjenkallingskurven og lar deg evaluere presisjon vs tilbakekalling avveining ved ulike beslutningsterskler. Modellens generelle ytelse på presisjonsgjenkallingskurven er oppsummert av AUC-poengsummen vist i forklaringen.

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()>

Produksjon :


Precision-Recall-Curve-Geeksforgeeks

Presisjons-gjenkallingskurve


Ofte stilte spørsmål (FAQs)

Q. Hva er presisjon?

Forholdet mellom nøyaktig predikerte positive observasjoner og det totale antallet predikerte positive er kjent som presisjon. Den måler hvor godt modellen forutsier de positive resultatene. Følgende er presisjonsformelen:

Precision = frac{True Positives}{True Positives + False Positives}

Sp. Hva er tilbakekalling?

Tilbakekalling er forholdet mellom korrekt predikerte positive observasjoner og det totale antallet faktiske positive. Det er også referert til som sensitivitet eller sann positiv rate. Den vurderer hvor godt modellen kan fange opp hvert enkelt tilfelle. Tilbakekalling beregnes ved hjelp av følgende formel:

Precision = frac{True Positives}{True Positives + False Negatives}

hvordan initialisere en matrise i java

Sp. Hvorfor trenger vi presisjon og tilbakekalling?

For å vurdere en klassifisers ytelse i binære og multiklasse klassifiseringsproblemer, brukes to evalueringsverdier: presisjon og tilbakekalling. Positiv prediksjonsnøyaktighet måles ved presisjon, og positiv prediksjons fullstendighet måles ved tilbakekalling.

Sp. Hva er avveiningen mellom tilbakekalling og presisjon?

Tilbakekalling og presisjon er ofte avveininger. Tilbakekallingen kan lide når presisjonen øker, og omvendt. Ved å endre baren for å identifisere en positiv forekomst, kan denne avveiningen håndteres. Omvendt resulterer en lavere terskel i lavere tilbakekalling, men høyere presisjon. Avgjørelsen mellom tilbakekalling og presisjon er basert på detaljene i det gitte problemet.

Sp. Hva er F1-poengsummen, og hvordan forholder det seg til presisjon og tilbakekalling?

Det harmoniske gjennomsnittet for gjenkalling og presisjon er kjent som F1-score. Det gir en rettferdig måling som tar hensyn til både falske positive og falske negative. F1-poengsummen beregnes ved å bruke følgende formel:

F1-Score = frac{2 imes Precision imes Recall}{Precision + Recall}

F1-poengsummen er spesielt nyttig når presisjon og gjenkalling er ute av balanse og en balanse mellom de to er ønsket.