Sklearn Average_Precision_Score vs. AUC Can someone explain in an intuitive way the difference between Average_Precision_Score and AUC?
I read the documentation and understand that they are calculated slightly differently.  But what is the real difference?
Also Average_Precision_Score is calculated - if I am correct - in terms of Recall over Precision.  Not sure I understand.
Thanks in advance.
 A: AUC (or AUROC, area under receiver operating characteristic) and AUPR (area under precision recall curve) are threshold-independent methods for evaluating a threshold-based classifier (i.e. logistic regression). Average precision score is a way to calculate AUPR. We'll discuss AUROC and AUPRC in the context of binary classification for simplicity.
Tl;dr:

*

*The ROC is a curve that plots true positive rate (TPR) against false positive rate (FPR) as your discrimination threshold varies.

*AUROC is the area under that curve (ranging from 0 to 1); the higher the AUROC, the better your model is at differentiating the two classes.

*AUPRC is the area under the precision-recall curve, which similarly plots precision against recall at varying thresholds.

*sklearn.metrics.average_precision_score gives you a way to calculate AUPRC.

On AUROC
The ROC curve is a parametric function in your threshold $T$, plotting false positive rate (a.k.a. 1 - specificity, usually on x-axis) versus true positive rate (a.k.a. recall, on y-axis). Intuitively, this metric tries to answer the question "as my decision threshold varies, how well can my classifier discriminate between negative + positive examples?" In fact, AUROC is statistically equivalent to the probability that a randomly chosen positive instance will be ranked higher than a randomly chosen negative instance (by relation to the Wilcoxon rank test -- I don't know the details of the proof though).
Here's a nice schematic that illustrates some of the core patterns to know:


*

*Red dotted line: As you can see, a random classifier will have an AUROC of 0.5. To see why, think about what happens when you choose a threshold such that 60% of all points are randomly predicted positive; then try to reason about the expected TPR/FPR in that case.

*Green, blue, and orange lines: The AUROC increases for each of these curves as they "swell" away from the red dotted line, towards the blue dotted point. These classifiers get better and better; as at varying thresholds, the TPR consistently "outpaces" the FPR.

For further reading -- Section 7 of this is highly informative, which also briefly covers the relation between AUROC and the Gini coefficient. You can also find a great answer for an ROC-related question here. Lastly, here's a (debatable) rule-of-thumb for assessing AUROC values: 90%—100%: Excellent, 80%—90%: Good, 70%—80%: Fair, 60%—70%: Poor, 50%—60%: Fail.
On AUPR
One of the key limitations of AUROC becomes most apparent on highly imbalanced datasets (low % of positives, lots of negatives), e.g. many medical datasets, rare event detection problems, etc. Small changes in the number of false positives/false negatives can severely shift AUROC. AUPR, which plots precision vs. recall parametrically in threshold $t$ (similar setup to ROC, except the variables plotted), is more robust to this problem.
The baseline value for AUPR is equivalent to the ratio of positive instances to negative instances; i.e. $\left(\frac{\#(+)}{\#(-)\; + \;\#(+)}\right)$. Similarly to AUROC, this metric ranges from 0 to 1, and higher is "better."
Now, to address your question about average precision score more directly, this gives us a method of computing AUPR using rectangles somewhat reminiscent of Riemannian summation (without the limit business that gives you the integral).  Average precision score gives us a guideline for fitting rectangles underneath this curve prior to summing up the area. Let's say that we're doing logistic regression and we sample 11 thresholds: $T = \{0.0, 0.1, 0.2, \dots, 1.0\}$. Each threshold $t_n$ is going to give us a corresponding value of precision and recall $P_n, R_n$; we can plot each of those and connect the dots. Perhaps we end up with a curve like the one we see below. The width of the rectangle is the difference in recall achieved at the $n$th and $n-1$st threshold; the height is the precision achieved at the $n$th threshold. You can easily see from the step-wise shape of the curve how one might try to fit rectangles underneath the curve to compute the area underneath.
On a related note, yes, you can also squish trapezoids underneath the curve (this is what sklearn.metrics.auc does) -- think about what advantages/disadvantages might occur in that case.

For further reading, I found this to be a nice resource for showing the limitations of AUROC in favor of AUPR in some cases.
