Obszar pod krzywą Precyzja-przywołanie (AUC krzywej PR) i Średnia precyzja (AP)

27

Czy średnia precyzja (AP) to obszar pod krzywą Precyzja-przywołanie (AUC krzywej PR)?

EDYTOWAĆ:

oto komentarz na temat różnicy w AUC PR i AP.

AUC jest uzyskiwane przez trapezoidalną interpolację precyzji. Alternatywnym i zwykle prawie równoważnym miernikiem jest średnia precyzja (AP), zwracana jako info.ap. Jest to średnia precyzji uzyskanej za każdym razem, gdy przywoływana jest nowa próbka dodatnia. Jest to to samo, co AUC, jeśli precyzja interpolowana jest przez stałe segmenty i jest to definicja najczęściej używana przez TREC.

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

Ponadto, AUC i average_precision_score wyniki nie są takie same w scikit-learn. To dziwne, ponieważ w dokumentacji mamy:

Oblicz średnią precyzję (AP) na podstawie wyników prognoz Ten wynik odpowiada obszarowi pod krzywą precyzji przywołania.

oto kod:

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

dla mojego klasyfikatora mam coś takiego:

Area Under PR Curve(AP): 0.65
AP 0.676101781304
AP 0.676101781304
AP 0.676101781304
AP 0.676101781304
mrgloom
źródło

Odpowiedzi:

15

Krótka odpowiedź brzmi: TAK . Średnia precyzja to pojedyncza liczba używana do podsumowania krzywej Precyzja-przywołanie:

wprowadź opis zdjęcia tutaj

Możesz przybliżać całkę (obszar pod krzywą) za pomocą:

wprowadź opis zdjęcia tutaj

Proszę zapoznać się z tym linkiem, aby uzyskać dobre wyjaśnienie.

Zhubarb
źródło
Co z tym komentarzem? „AUC jest uzyskiwane przez trapezoidalną interpolację precyzji. Alternatywnym i zwykle prawie równoważnym miernikiem jest Średnia Precyzja (AP), zwracana jako info.ap. Jest to średnia precyzji uzyskanej za każdym razem, gdy przywoływana jest nowa próbka dodatnia. Jest to to samo, co AUC, jeśli precyzja interpolowana jest przez stałe segmenty i jest to definicja najczęściej używana przez TREC. ” vlfeat.org/overview/plots-rank.html
mrgloom
1
Myślę, że the average of the precision obtained every time a new positive sample is recalledodnosi się do średniej interpolowanej precyzji wyjaśnionej w linku, który podałem. Niektórzy autorzy wybierają alternatywne przybliżenie, które nazywa się interpolowaną średnią precyzją . Mylące, wciąż nazywają to średnią precyzją.
Zhubarb,
kilka szybkich pytań: 1) dlaczego koordynować (przypomnieć = 0, precyzja = 1)? nie ma dla mnie żadnego sensu. 2) jak można zauważyć, jeśli obniżymy próg klasyfikatora, może zostać zwróconych więcej wyników, w wyniku czego wycofanie może się nie zwiększyć, ale dokładność może się różnić, na przykład łącznie z 2 dodatnimi pozycjami, oto wyniki rankingu = [False, True, False, False, True], więc pary par = [(p = 0, r = 0), (1/2, 1/2), (1/3, 1/2), (1 / 4, 1/2), (2/5, 2/2)], jak widać, dla r = 1/2 istnieją 3 p (tj. 1/2, 1/3, 1/4) , tak jak na wykresie przy r = 0,8, czy wystarczy wykreślić je na tej samej osi x?
awokado
2

average_precision_score funkcja oczekuje pewności lub prawdopodobieństwa jako drugiego parametru.

więc powinieneś użyć go jak poniżej,

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

a potem to ten sam wynik aucfunkcji.

Haesun Park
źródło
Różne przykłady w oprogramowaniu WEKA i scikit-learn zapewniają wynik CLF, ale nie AUC. Czy to możliwe, że ten wynik CLF jest w jakiś sposób związany z AUC, a nawet może być AUC?
hhh