Aire sous courbe de rappel de précision (AUC de la courbe PR) et précision moyenne (AP)

27

La précision moyenne (AP) est-elle la zone sous la courbe de rappel de précision (ASC de la courbe PR)?

MODIFIER:

voici quelques commentaires sur la différence entre PR AUC et AP.

L'AUC est obtenue par interpolation trapézoïdale de la précision. Une métrique alternative et généralement presque équivalente est la précision moyenne (AP), renvoyée sous le nom info.ap. Il s'agit de la moyenne de la précision obtenue à chaque rappel d'un nouvel échantillon positif. C'est la même chose que l'AUC si la précision est interpolée par des segments constants et est la définition utilisée par TREC le plus souvent.

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

De plus, le auc et les average_precision_score résultats ne sont pas les mêmes dans scikit-learn. C'est étrange, car dans la documentation nous avons:

Calculer la précision moyenne (AP) à partir des scores de prédiction Ce score correspond à l'aire sous la courbe précision-rappel.

voici le 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')

pour mon classificateur j'ai quelque chose comme:

Area Under PR Curve(AP): 0.65
AP 0.676101781304
AP 0.676101781304
AP 0.676101781304
AP 0.676101781304
mrgloom
la source

Réponses:

15

La réponse courte est: OUI . La précision moyenne est un nombre unique utilisé pour résumer une courbe de précision-rappel:

entrez la description de l'image ici

Vous pouvez approximer l'intégrale (aire sous la courbe) avec:

entrez la description de l'image ici

Veuillez consulter ce lien pour une bonne explication.

Zhubarb
la source
Et ce commentaire? "L'AUC est obtenue par interpolation trapézoïdale de la précision. Une métrique alternative et généralement presque équivalente est la précision moyenne (AP), renvoyée comme info.ap. Il s'agit de la moyenne de la précision obtenue chaque fois qu'un nouvel échantillon positif est rappelé. C'est la même chose que l'AUC si la précision est interpolée par des segments constants et est la définition utilisée le plus souvent par TREC. " vlfeat.org/overview/plots-rank.html
mrgloom
1
Je pense que se the average of the precision obtained every time a new positive sample is recalledréfère à la précision moyenne interpolée expliquée dans le lien que j'ai donné. Certains auteurs choisissent une autre approximation appelée précision moyenne interpolée . Confusément, ils appellent toujours cela une précision moyenne.
Zhubarb
quelques questions rapides: 1) pourquoi coordonner (rappel = 0, précision = 1)? n'a aucun sens pour moi. 2) comme vous pouvez le constater, si nous abaissons le seuil du classificateur, plus de résultats pourraient être retournés, et en conséquence, le rappel pourrait ne pas augmenter, mais la précision pourrait varier, par exemple, avec 2 éléments positifs au total, voici les résultats classés = [Faux, Vrai, Faux, Faux, Vrai], donc pr paires = [(p = 0, r = 0), (1/2, 1/2), (1/3, 1/2), (1 / 4, 1/2), (2/5, 2/2)], comme vous pouvez le voir, pour r = 1/2, il y a 3 p (ie 1/2, 1/3, 1/4) , tout comme dans votre graphique à r = 0,8, ça va juste les tracer sur le même axe x?
avocat
2

average_precision_score la fonction attend la confiance ou la probabilité comme deuxième paramètre.

vous devez donc l'utiliser comme ci-dessous,

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

puis c'est le même résultat de la aucfonction.

Parc Haesun
la source
Différents exemples dans le logiciel WEKA et scikit-learn fournissent un score CLF mais pas AUC. Se peut-il que ce score CLF soit en fait en quelque sorte lié à l'ASC ou même à l'ASC?
hhh