Genauigkeit gegen Fläche unter der ROC-Kurve

15

Ich habe eine ROC-Kurve für ein Diagnosesystem erstellt. Die Fläche unter der Kurve wurde dann nicht parametrisch auf AUC = 0,89 geschätzt. Als ich versuchte, die Genauigkeit bei der optimalen Schwellenwerteinstellung (dem Punkt, der dem Punkt (0, 1) am nächsten liegt) zu berechnen, erhielt ich eine Genauigkeit des Diagnosesystems von 0,8, was weniger als die AUC ist! Als ich die Genauigkeit bei einer anderen Schwellenwerteinstellung überprüfte, die weit vom optimalen Schwellenwert entfernt ist, erhielt ich eine Genauigkeit von 0,92. Ist es möglich, die Genauigkeit eines Diagnosesystems bei der besten Schwellenwerteinstellung niedriger als die Genauigkeit bei einem anderen Schwellenwert und auch niedriger als der Bereich unter der Kurve zu erhalten? Siehe bitte das beigefügte Bild.

Bildbeschreibung hier eingeben

Ali Sultan
quelle
1
Könnten Sie bitte angeben, wie viele Proben Ihre Analyse enthielt? Ich wette, es war sehr unausgeglichen. AUC und Genauigkeit werden überhaupt nicht so übersetzt (wenn Sie sagen, dass die Genauigkeit niedriger als AUC ist).
Firebug
1
269469 sind negativ und 37731 sind positiv; Dies könnte das Problem sein, wie in den folgenden Antworten (das Klassenungleichgewicht) angegeben.
Ali Sultan
Denken Sie daran, dass das Problem nicht das Klassenungleichgewicht an sich ist, sondern die Wahl der Bewertungsmaßnahme. Alles in allem ist in diesem Szenario sinnvoller, oder Sie können eine ausgeglichene Genauigkeit implementieren. EINUC
Firebug
Eine letzte Sache: Wenn Sie das Gefühl haben, dass eine Antwort Ihre Frage beantwortet, können Sie in Betracht ziehen, die Antwort zu akzeptieren (grünes Häkchen). Dies ist nicht obligatorisch, hilft jedoch der Person, die die Frage beantwortet hat, und der Organisation der Website (die Frage gilt bis dahin als unbeantwortet), und möglicherweise auch Personen, die in Zukunft die gleiche Frage stellen würden.
Firebug

Antworten:

8

=FPFP+TNTPTP+FN=TP+TNTP+FN+FP+TN

Um es anders auszudrücken: Wenn der Klassifikator die ganze Zeit 0 vorhersagt, hat er immer noch eine hohe Genauigkeit mit FPR und TPR nahe 0, da Sie viel mehr negative Samples haben.

Was Sie als optimale Schwellenwerteinstellung bezeichnen (der Punkt, der dem Punkt (0, 1) am nächsten liegt), ist nur eine von vielen Definitionen für einen optimalen Schwellenwert: Er optimiert nicht unbedingt die Genauigkeit.

Bildbeschreibung hier eingeben

Franck Dernoncourt
quelle
9

FPRTPREINCC

TPR=Richtig positivPositive Fälle

FPR=Falsch positivNegative Fälle

EINCC=TPRPositive Fälle+(1-FPR)Negative FällePositive Fälle+Negative Fälle

EINCCTPRFPR

EINCC=TPR+1-FPR2

N-N+

EINCC(N-N+)1-FPR
EINCCFPR

In diesem Beispiel sind die Negative größer als die Positiven 1000: 1.

data = c(rnorm(10L), rnorm(10000L)+1)
lab = c(rep(1, 10L), rep(-1, 10000L))
plot(data, lab, col = lab + 3)
tresh = c(-10, data[lab == 1], 10)
do.call(function(x) abline(v = x, col = "gray"), list(tresh))

pred = lapply(tresh, function (x) ifelse(data <= x, 1, -1))
res = data.frame(
  acc = sapply(pred, function(x) sum(x == lab)/length(lab)),
  tpr = sapply(pred, function(x) sum(lab == x & x == 1)/sum(lab == 1)),
  fpr = sapply(pred, function(x) sum(lab != x & x == 1)/sum(lab != 1))
)

res[order(res$acc),]

#> res[order(res$acc),]
#           acc tpr    fpr
#12 0.000999001 1.0 1.0000
#11 0.189110889 1.0 0.8117
#9  0.500099900 0.9 0.5003
#2  0.757742258 0.8 0.2423
#5  0.763136863 0.7 0.2368
#4  0.792007992 0.6 0.2078
#10 0.807292707 0.5 0.1924
#3  0.884215784 0.4 0.1153
#7  0.890709291 0.3 0.1087
#6  0.903096903 0.2 0.0962
#8  0.971428571 0.1 0.0277
#1  0.999000999 0.0 0.0000

Sehen Sie, wenn fpr0 accmaximal ist.

Und hier ist der ROC mit der angegebenen Genauigkeit.

plot(sort(res$fpr), sort(res$tpr), type = "S", ylab = "TPR", xlab = "FPR")
text(sort(res$fpr), sort(res$tpr), pos = 4L, lab = round(res$acc[order(res$fpr)], 3L))
abline(a = 0, b = 1)
abline(a = 1, b = -1)

Bildbeschreibung hier eingeben


EINUC

1-sum(res$fpr[-12]*0.1)
#[1] 0.74608

Die Quintessenz ist, dass Sie die Genauigkeit so optimieren können, dass ein falsches Modell entsteht ( tpr= 0 in meinem Beispiel). Dies liegt daran, dass Genauigkeit keine gute Messgröße ist. Die Zweiteilung des Ergebnisses sollte dem Entscheidungsträger überlassen werden.

TPR=1-FPR

Bei unausgeglichenen Klassen kann die Optimierung der Genauigkeit trivial sein (z. B. voraussagen, dass jeder die Mehrheit der Klassen darstellt).


EINUC

Und das Wichtigste von allem: Warum ist die AUC bei einem Klassifikator, der weniger genau ist, höher als bei einem, der genauer ist?

Firebug
quelle