Die "Grundlinienkurve" in einem PR-Kurvendiagramm ist eine horizontale Linie mit einer Höhe, die der Anzahl der positiven Beispiele P über der Gesamtzahl der Trainingsdaten N , d. H. der Anteil positiver Beispiele in unseren Daten ( PN ).
OK, warum ist das so? Nehmen wir an , wir eine „Junk - Klassifikator“ haben . C J gibt eine zufällige Wahrscheinlichkeit p i an die i- te Stichprobeninstanz y i zurück , um in Klasse A zu sein . Sagen Sie der Einfachheit halber p i ∼ U [ 0 , 1 ] . Die direkte Implikation dieser zufälligen Klassenzuordnung ist, dass C J eine (erwartete) Genauigkeit aufweist, die dem Anteil positiver Beispiele in unseren Daten entspricht. Es ist nur natürlich; Jede völlig zufällige Teilstichprobe unserer Daten hat ECJCJpichichyichEINpich∼ U[ 0 , 1 ]CJrichtig klassifizierte Beispiele. Dies gilt für jeden Wahrscheinlichkeitsschwellenwertq, denwir als Entscheidungsgrenze für die vonCJ zurückgegebenenWahrscheinlichkeiten der Klassenzugehörigkeit verwenden können. (qbezeichnet einen Wert in[0,1],bei dem Wahrscheinlichkeitswerte größer oder gleichqin KlasseAklassifiziert werden.) Andererseits ist die Rückrufleistung vonCJ(in Erwartung) gleichq,wenn. Bei jedem gegebenen Schwellenwertwir (ungefähr)auswählen.E{ PN}qCJq[ 0 , 1 ]qEINCJqq ( 100 ( 1 - q ) ) % ( 100 ( 1 - q ) ) % A x y Ppich∼ U[ 0 , 1 ]q( 100 ( 1 - q) ) %von unseren Gesamtdaten, die anschließend (ungefähr) der Gesamtzahl der Instanzen der Klasse in der Stichprobe enthalten. Daher die eingangs erwähnte horizontale Linie! Für jeden Rückrufwert ( Werte im PR-Diagramm) ist der entsprechende Genauigkeitswert ( Werte im PR-Diagramm) gleich .( 100 ( 1 - q) ) %EINxyPN
Eine kurze Randnotiz: Die Schwelle ist im Allgemeinen nicht gleich 1 minus dem erwarteten Rückruf. Dies geschieht im Fall eines erwähnten nur aufgrund der zufälligen gleichmäßigen Verteilung der Ergebnisse von ; für eine andere Verteilung (zB ) gilt diese ungefähre Identitätsbeziehung zwischen und Rückruf nicht; wurde verwendet, weil es am einfachsten zu verstehen und mental zu visualisieren ist. Bei einer anderen Zufallsverteilung in ändert sich das PR-Profil von jedoch nicht. Lediglich die Platzierung der PR-Werte für bestimmte Werte ändert sich.C J C J p i ∼ B ( 2 , 5 ) q U [ 0 , 1 ] [ 0 , 1 ] C J qqCJCJpich∼ B ( 2 , 5 )qU[ 0 , 1 ][ 0 , 1 ]CJq
nun einen perfekten Klassifikator , so würde man einen Klassifikator meinen, der die Wahrscheinlichkeit für die Beispielinstanz der Klasse zurückgibt, wenn tatsächlich in der Klasse und zusätzlich gibt die Wahrscheinlichkeit wenn kein Mitglied der Klasse . Dies impliziert, dass wir für jeden Schwellenwert eine Genauigkeit von (dh in grafischen Begriffen erhalten wir eine Linie, die mit einer Genauigkeit von beginnt ). Der einzige Punkt, an dem wir keine Genauigkeit erreichen, ist bei . FürCP1yichEINyichEINCP0yichEINq100 %100 %100 %q= 0q=0Die Genauigkeit hängt vom Anteil positiver Beispiele in unseren Daten ab ( ), da wir (irrsinnig?) gerade Punkte mit einer Wahrscheinlichkeit von , Klasse als Klasse klassifizieren . Der PR-Graph von hat nur zwei mögliche Werte für seine Genauigkeit: und .PN0AACP1PN
OK und ein R-Code, um dies anhand eines Beispiels zu sehen, bei dem die positiven Werte unserer Stichprobe entsprechen. Beachten Sie, dass wir eine "weiche Zuordnung" der Klassenkategorie in dem Sinne vornehmen, dass der jedem Punkt zugeordnete Wahrscheinlichkeitswert unser Vertrauen quantifiziert, dass dieser Punkt zur Klasse .40%A
rm(list= ls())
library(PRROC)
N = 40000
set.seed(444)
propOfPos = 0.40
trueLabels = rbinom(N,1,propOfPos)
randomProbsB = rbeta(n = N, 2, 5)
randomProbsU = runif(n = N)
# Junk classifier with beta distribution random results
pr1B <- pr.curve(scores.class0 = randomProbsB[trueLabels == 1],
scores.class1 = randomProbsB[trueLabels == 0], curve = TRUE)
# Junk classifier with uniformly distribution random results
pr1U <- pr.curve(scores.class0 = randomProbsU[trueLabels == 1],
scores.class1 = randomProbsU[trueLabels == 0], curve = TRUE)
# Perfect classifier with prob. 1 for positives and prob. 0 for negatives.
pr2 <- pr.curve(scores.class0 = rep(1, times= N*propOfPos),
scores.class1 = rep(0, times = N*(1-propOfPos)), curve = TRUE)
par(mfrow=c(1,3))
plot(pr1U, main ='"Junk" classifier (Unif(0,1))', auc.main= FALSE,
legend=FALSE, col='red', panel.first= grid(), cex.main = 1.5);
pcord = pr1U$curve[ which.min( abs(pr1U$curve[,3]- 0.50)),c(1,2)];
points( pcord[1], pcord[2], col='black', cex= 2, pch = 1)
pcord = pr1U$curve[ which.min( abs(pr1U$curve[,3]- 0.20)),c(1,2)];
points( pcord[1], pcord[2], col='black', cex= 2, pch = 17)
plot(pr1B, main ='"Junk" classifier (Beta(2,5))', auc.main= FALSE,
legend=FALSE, col='red', panel.first= grid(), cex.main = 1.5);
pcord = pr1B$curve[ which.min( abs(pr1B$curve[,3]- 0.50)),c(1,2)];
points( pcord[1], pcord[2], col='black', cex= 2, pch = 1)
pcord = pr1B$curve[ which.min( abs(pr1B$curve[,3]- 0.20)),c(1,2)];
points( pcord[1], pcord[2], col='black', cex= 2, pch = 17)
plot(pr2, main = '"Perfect" classifier', auc.main= FALSE,
legend=FALSE, col='red', panel.first= grid(), cex.main = 1.5);
wobei die schwarzen Kreise und Dreiecke in den ersten beiden jeweils und bezeichnen. Wir sehen sofort, dass die "Junk" -Klassifikatoren schnell eine Genauigkeit von . In ähnlicher Weise hat der perfekte Klassifikator die Genauigkeit alle Rückrufvariablen. Es überrascht nicht, dass die AUCPR für den Klassifikator "Junk" dem Anteil des positiven Beispiels in unserer Stichprobe entspricht (q=0.50q=0.20PN1≈0.40 ) und der AUCPR für den "perfekten Klassifikator" ungefähr gleich .1
Realistisch gesehen ist der PR-Graph eines perfekten Klassifikators ein bisschen nutzlos, weil man niemals einen Rückruf von haben kann (wir sagen niemals nur die negative Klasse voraus ). wir fangen einfach an, die Linie von der oberen linken Ecke aus Konventionsgründen zu zeichnen. Genau genommen sollte es nur zwei Punkte zeigen, aber dies würde eine schreckliche Kurve machen. : D0
Um es festzuhalten, es gibt bereits einige sehr gute Antworten im Lebenslauf in Bezug auf die Nützlichkeit von PR-Kurven: hier , hier und hier . Wenn Sie sie nur sorgfältig durchlesen, erhalten Sie ein allgemeines Verständnis für PR-Kurven.
Großartige Antwort oben. Hier ist meine intuitive Art, darüber nachzudenken. Stellen Sie sich vor, Sie haben einen Haufen Bälle rot = positiv und gelb = negativ und werfen sie zufällig in einen Eimer = positiver Bruch. Wenn Sie dann die gleiche Anzahl roter und gelber Kugeln haben und PREC = tp / tp + fp = 100/100 + 100 aus Ihrem Eimer rot (positiv) = gelb (negativ) berechnen, ist PREC = 0,5. Wenn ich jedoch 1000 rote und 100 gelbe Bälle hätte, würde ich im Eimer zufällig PREC = tp / tp + fp = 1000/1000 + 100 = 0,91 erwarten, da dies die Zufallsgrundlinie in der positiven Fraktion ist, die auch RP ist / RP + RN, wobei RP = real positiv und RN = real negativ ist.
quelle