Fläche unter Precision-Recall-Kurve (AUC der PR-Kurve) und Average Precision (AP)


27

Ist Average Precision (AP) der Bereich unter Precision-Recall Curve (AUC der PR-Kurve)?

BEARBEITEN:

Hier ist ein Kommentar zum Unterschied zwischen PR AUC und AP.

Die AUC wird durch trapezförmige Interpolation der Präzision erhalten. Eine alternative und in der Regel fast äquivalente Metrik ist die Average Precision (AP), die als info.ap zurückgegeben wird. Dies ist der Durchschnitt der Genauigkeit, die bei jedem Abruf einer neuen positiven Probe erhalten wird. Es ist dasselbe wie die AUC, wenn die Genauigkeit durch konstante Segmente interpoliert wird und die Definition von TREC am häufigsten verwendet wird.

http://www.vlfeat.org/overview/plots-rank.html

Darüber hinaus stimmen die Ergebnisse von auc und average_precision_score beim Lernen mit Scikits nicht überein. Das ist seltsam, denn in der Dokumentation haben wir:

Berechnen Sie die durchschnittliche Genauigkeit (AP) aus den Vorhersagewerten. Diese Bewertung entspricht der Fläche unter der Genauigkeits-Rückruf-Kurve.

Hier ist der Code:

# Compute Precision-Recall and plot curve
precision, recall, thresholds = precision_recall_curve(y_test, clf.predict_proba(X_test)[:,1])
area = auc(recall, precision)
print "Area Under PR Curve(AP): %0.2f" % area  #should be same as AP?

print 'AP', average_precision_score(y_test, y_pred, average='weighted')
print 'AP', average_precision_score(y_test, y_pred, average='macro')
print 'AP', average_precision_score(y_test, y_pred, average='micro')
print 'AP', average_precision_score(y_test, y_pred, average='samples')

für meinen schüler habe ich so etwas wie:

Area Under PR Curve(AP): 0.65
AP 0.676101781304
AP 0.676101781304
AP 0.676101781304
AP 0.676101781304

Antworten:


15

Die kurze Antwort lautet: JA . Die durchschnittliche Präzision ist eine einzelne Zahl, mit der eine Precision-Recall-Kurve zusammengefasst wird:

Bildbeschreibung hier eingeben

Sie können das Integral (Fläche unter der Kurve) approximieren mit:

Bildbeschreibung hier eingeben

Bitte werfen Sie einen Blick auf diesen Link, um eine gute Erklärung zu erhalten.


Was ist mit diesem Kommentar? Die AUC wird durch trapezförmige Interpolation der Präzision erhalten. Eine alternative und normalerweise fast äquivalente Metrik ist die durchschnittliche Präzision (Average Precision, AP), die als info.ap zurückgegeben wird. Dies ist der Durchschnitt der Präzision, die jedes Mal erhalten wird, wenn eine neue positive Probe abgerufen wird. Es ist dasselbe wie die AUC, wenn die Präzision durch konstante Segmente interpoliert wird und die Definition von TREC am häufigsten verwendet wird. " vlfeat.org/overview/plots-rank.html
mrgloom

1
Ich denke, the average of the precision obtained every time a new positive sample is recalledbezieht sich auf die interpolierte Durchschnittsgenauigkeit , die in dem von mir angegebenen Link erläutert wurde. Einige Autoren wählen eine alternative Näherung, die als interpolierte Durchschnittsgenauigkeit bezeichnet wird . Verwirrenderweise nennen sie es immer noch durchschnittliche Präzision.
Zhubarb

Ein paar kurze Fragen: 1) Warum koordinieren (Rückruf = 0, Präzision = 1)? macht für mich überhaupt keinen Sinn. 2) Wenn Sie den Schwellenwert des Klassifikators senken, werden möglicherweise mehr Ergebnisse zurückgegeben. Infolgedessen steigt der Rückruf möglicherweise nicht an. Die Genauigkeit kann jedoch variieren, z. B. bei insgesamt 2 positiven Elementen. Hier sind die Rangfolgeergebnisse = [Falsch, Richtig, Falsch, Falsch, Richtig], so dass pr Paare = [(p = 0, r = 0), (1/2, 1/2), (1/3, 1/2), (1 / 4, 1/2), (2/5, 2/2)], wie Sie sehen können, für r = 1/2 gibt es 3 p (dh 1/2, 1/3, 1/4) , genau wie in Ihrem Diagramm bei r = 0,8, ist es in Ordnung, sie nur auf derselben x-Achse zu zeichnen?
Avocado

2

average_precision_score Funktion erwarten Vertrauen oder Wahrscheinlichkeit als zweiten Parameter.

also solltest du es wie folgt benutzen,

average_precision_score(y_test, clf.predict_proba(X_test)[:,1])

und dann ist es das gleiche Ergebnis der aucFunktion.


Verschiedene Beispiele in WEKA-Software und Scikit-Learn liefern CLF-Punkte, jedoch keine AUC. Kann es sein, dass dieser CLF-Score tatsächlich irgendwie mit AUC zusammenhängt oder sogar AUC ist?
07.07.17
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.