A precisão média (AP) é a área sob a curva de precisão de recuperação (AUC da curva PR)?
EDITAR:
Aqui estão alguns comentários sobre a diferença entre PR AUC e AP.
A AUC é obtida por interpolação trapezoidal da precisão. Uma métrica alternativa e geralmente quase equivalente é a Precisão Média (AP), retornada como info.ap. Essa é a média da precisão obtida toda vez que uma nova amostra positiva é recuperada. É o mesmo que a AUC se a precisão é interpolada por segmentos constantes e é a definição usada pelo TREC com mais freqüência.
http://www.vlfeat.org/overview/plots-rank.html
Além disso, a AUC e os average_precision_score resultados não são os mesmos em scikit-learn. Isso é estranho, porque na documentação temos:
Calcular precisão média (PA) a partir de pontuações de previsão Essa pontuação corresponde à área sob a curva de precisão e recuperação.
aqui está o código:
# 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')
para o meu classifer eu tenho algo como:
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
se refere à precisão média interpolada explicada no link que forneci. Alguns autores escolhem uma aproximação alternativa chamada precisão média interpolada . Confusamente, eles ainda chamam de precisão média.average_precision_score
função espera confiança ou probabilidade como segundo parâmetro.então você deve usá-lo como abaixo,
e então é o mesmo resultado da
auc
função.fonte