Was sind korrekte Werte für Genauigkeit und Rückruf, wenn die Nenner gleich 0 sind?

14

Präzision ist definiert als:

p = wahr positiv / (wahr positiv + falsch positiv)

Was ist der Wert der Präzision, wenn (wahr positiv + falsch positiv) = 0 ist? Ist es nur undefiniert?

Gleiche Frage zum Rückruf:

r = wahr positiv / (wahr positiv + falsch negativ)

Was ist in diesem Fall der Wert des Rückrufs, wenn (wahr-positiv + falsch-negativ) = 0 ist?

PS Diese Frage ist der Frage sehr ähnlich. Was sind korrekte Werte für Präzision und Rückruf in Randfällen? .

Raffi Khatchadourian
quelle
1
Heh, es wird sogar doppelt beantwortet; aber nennen wir es ein gutes Duplikat.

Antworten:

9

Auch hier gelten die Antworten auf die verlinkte frühere Frage.

Wenn (wahr positiv + falsch negativ) = 0, dann keine positiven Fälle in den Eingabedaten, daher enthält jede Analyse dieses Falls keine Informationen und daher keine Schlussfolgerung darüber, wie positive Fälle behandelt werden. Sie möchten N / A oder ähnliches als Verhältnisergebnis, um einen Fehler durch Division durch Null zu vermeiden

Wenn (wahr-positiv + falsch-positiv) = 0 ist, wurden alle Fälle als negativ vorhergesagt: Dies ist ein Ende der ROC-Kurve. Auch hier möchten Sie diese Möglichkeit erkennen und melden, während Sie einen Fehler durch Division durch Null vermeiden .

Henry
quelle
Danke Henry für die Antwort. Wenn ich das richtig verstehe, möchten Sie im ersten Fall das Ergebnis nicht erkennen und melden, während Sie es im zweiten Fall tun . Ist das korrekt?
Raffi Khatchadourian
Ja: Im Fall von No-Positives-in-Input ist Präzision bedeutungslos. Im nicht positiv prognostizierten Fall möchten Sie melden, dass der Test extrem negativ eingestellt wurde.
Henry
5

Eine interessante Antwort finden Sie hier: https://github.com/dice-group/gerbil/wiki/Precision,-Recall-and-F1-measure

Die Autoren des Moduls geben unterschiedliche Bewertungen für Präzision und Rückruf aus, je nachdem, ob echte Positive, falsche Positive und falsche Negative alle 0 sind. Wenn dies der Fall ist, ist das Ergebnis angeblich gut.

In einigen seltenen Fällen kann die Berechnung von Präzision oder Rückruf eine Division durch 0 verursachen. In Bezug auf die Genauigkeit kann dies passieren, wenn die Antwort eines Annotators keine Ergebnisse enthält und daher sowohl die wahren als auch die falschen Positiven 0 sind Für diese Sonderfälle haben wir definiert, dass, wenn die wahren Positiven, falschen Positiven und falschen Negativen alle 0 sind, die Genauigkeit, der Rückruf und das F1-Maß 1 sind. Dies kann in Fällen auftreten, in denen der Goldstandard ein Dokument ohne enthält Annotationen und der Annotator gibt (korrekt) keine Annotationen zurück. Wenn echte Positive 0 sind und einer der beiden anderen Zähler größer als 0 ist, sind Präzision, Rückruf und F1-Maß 0.

Ich bin mir nicht sicher, ob diese Art der Wertung in anderen Situationen außerhalb ihres Sonderfalls nützlich wäre, aber es lohnt sich, darüber nachzudenken.

shiri
quelle
1

Bei der Bewertung eines Klassifikators bei hohen Schwellenwerten kann die Genauigkeit (häufig tatsächlich) nicht 1 sein, wenn der Rückruf 0 beträgt. Sie ist normalerweise nicht zutreffend! Ich denke, es stimmt etwas nicht, wie Leute die P / R-Kurve zeichnen. Das Vermeiden von N / A-Samples ist eine Verzerrung in dem Sinne, dass Sie Singularity-Samples vermeiden. Ich habe die durchschnittliche Genauigkeit für den durchschnittlichen Rückruf berechnet, wobei N / A-Stichproben ignoriert wurden, und ich habe nie einen Klassifikator erhalten, der bei 1 für 0 Rückruf für ein flaches neuronales Netz bei der Objekterkennung beginnt. Dies galt auch für Kurven, die mit den Zahlen tp, fp, fn berechnet wurden. Die Überprüfung mit Papier und Bleistift mit einem einzigen Bild ist recht einfach. Zum Beispiel: Ich habe einen Klassifikator, der für ein einzelnes Bild ausgibt: preds = [. 7 .6 .5 .1 .05] truth = [nynny] Durch Berechnen der Verwirrungsmatrizen mit den verschiedenen Schwellenwerten haben wir: tp = [2 1 1 1 0 0], fn = [0 1 1 1 2 2], fp = [3 3 2 1 1 0]. der Rückruf rec = [1 .5 .5 .5 0 0] und die Genauigkeit = [. 4 .25 1/3 .5 0 NaN]. Ich sehe nicht ein, wie es sinnvoll wäre, ein NaN oder die Genauigkeit (@ Rückruf == 0) durch 1 zu ersetzen. 1 sollte eine Obergrenze sein, kein Wert, durch den wir die Genauigkeit (@ Rückruf == 0) ersetzen.

Jonathan Blanchette
quelle