Área sob curva de precisão de recuperação (AUC da curva PR) e precisão média (AP)

27

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
Mrgloom
fonte

Respostas:

15

Resposta curta é: SIM . Precisão média é um número único usado para resumir uma curva Precision-Recall:

insira a descrição da imagem aqui

Você pode aproximar a integral (área sob a curva) com:

insira a descrição da imagem aqui

Por favor, dê uma olhada neste link para uma boa explicação.

Zhubarb
fonte
E esse comentário? "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 sempre 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 frequência. " vlfeat.org/overview/plots-rank.html
mrgloom
11
Acho que the average of the precision obtained every time a new positive sample is recalledse 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.
Zhubarb
algumas perguntas rápidas: 1) por que coordenar (recall = 0, precisão = 1)? não faz sentido para mim. 2) como você pode observar, se reduzirmos o limiar do classificador, mais resultados poderão ser retornados e, como conseqüência, o recall poderá não aumentar, mas a precisão poderá variar, por exemplo, com 2 itens positivos no total, eis os resultados classificados = [Falso, Verdadeiro, Falso, Falso, Verdadeiro], então pares pr = = ((p = 0, r = 0), (1/2, 1/2), (1/3, 1/2), (1 / 4, 1/2), (2/5, 2/2)], como você pode ver, para r = 1/2, há 3 p (ou seja, 1/2, 1/3, 1/4) , assim como no seu gráfico em r = 0,8, tudo bem plote-os no mesmo eixo x?
abacate
2

average_precision_score função espera confiança ou probabilidade como segundo parâmetro.

então você deve usá-lo como abaixo,

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

e então é o mesmo resultado da aucfunção.

Haesun Park
fonte
Exemplos diferentes no software WEKA e no scikit-learn fornecem pontuação CLF, mas não AUC. Pode ser que esse escore do CLF esteja de alguma forma relacionado à AUC ou até seja AUC?
hhh