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
the average of the precision obtained every time a new positive sample is recalled
odnosi 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ą.average_precision_score
funkcja oczekuje pewności lub prawdopodobieństwa jako drugiego parametru.więc powinieneś użyć go jak poniżej,
a potem to ten sam wynik
auc
funkcji.źródło