Precision, Recall et Precision-Recall curve

La precision et le recall sont deux métriques essentielles en classification, du fait de leur robustesse et de leur interprétabilité. Comment les calcule-t-on et que veulent-elles dire exactement? Faisons le point.
precision recall - Performance evaluation
Sommaire

Cet article est le troisième de notre série consacrée aux métriques de classification, dans le cadre de notre formation : Evaluer la performance des modèles de Machine Learning et de Deep Learning.

Qu’est-ce que la Precision et le Recall ?

Définition 

La précision (precision en anglais) et le rappel (recall en anglais) sont deux métriques pour évaluer la performance des modèles de classification à 2 classes ou plus. Ces métriques sont basées sur la matrice de confusion (consultez l’article précédent pour plus de détails). Pour rappel, la matrice de confusion est composée de 4 valeurs :

precision recall - Matrice de confusion théorique

Figure 1. Matrice de confusion

La precision et le recall sont deux métriques qui se concentrent sur la performance du modèle concernant les individus positifs :

  • La precision est également appelée Positive Predictive Value. Elle correspond au taux de prédictions correctes parmi les prédictions positives : \begin{equation*} \frac{TP}{TP+FP} \end{equation*} Elle mesure la capacité du modèle à ne pas faire d’erreur lors d’une prédiction positive.
  • Le recall est également appelé sensitivity (sensibilité), true positive rate ou encore hit rate (taux de détection). Il correspond au taux d’individus positifs détectés par le modèle : \begin{equation*} \frac{TP}{TP+FN} \end{equation*} Il mesure la capacité du modèle à détecter l’ensemble des individus positifs.

La figure ci-dessous permet de bien visualiser ces indicateurs :

precision recall - Precision Recall explanation

Figure 2. Precision et Recall [1].
La precision répond à la question : combien d’individus sélectionnés sont pertinents? Le recall répond à la question : combien d’individus pertinents sont sélectionnés ?

Interprétation de la Precision et du Recall :

Prenons le cas d’un diagnostic de grossesse pour mieux comprendre ce que signifient ces indicateurs :

precision recall - confusion matrix interpretation pregnancy

Figure 3. Matrice de confusion, Precision & Recall. Adapté de 2 photos de National Cancer Institute sur Unsplash.

Pour chaque patient, 3 cas affectent la precision et le recall :

  • Vrai positif : la precision et le recall augmentent.

    Le médecin augmente sa precision car il a fait une prédiction positive et qu’elle est bonne. Il augmente son recall car il a détecté une femme enceinte de plus.

  • Faux positif : la precision diminue.

    Le médecin diminue sa precision car il a fait une prédiction positive et s’est trompé. Le recall est inchangé.

  • Faux négatif : le recall diminue.

    Le médecin diminue son recall car il n’a pas fait de prédiction positive alors qu’il en fallait une. La precision est inchangée.

Le dernier cas, vrai négatif, n’affecte pas les scores de precision et de recall.

Qu’est-ce que cela signifie en pratique?

  • Si le médecin a une precision élevée, alors on peut avoir confiance en lui lorsqu’il annonce que la patiente est enceinte (sauf dans le cas de données déséquilibrées – voir cet article pour plus de précisions).
  • Si le médecin a un recall élevé, alors on peut avoir confiance dans le fait qu’il annoncera une femme enceinte si elle l’est effectivement. Et par contraposée, on peut le croire lorsqu’il annonce que la patiente n’est pas enceinte (puisqu’il la déclare enceinte si elle l’est).

Les precision et recall d’un modèle pour différents seuils de classification peuvent être calculés grâce à la fonction de scikit-learn : sklearn.metrics.precision_recall_curve [2].

Precision, Recall et courbe PR, un exemple simple

Comment calcule-t-on la precision et le recall à partir des prédictions d’un modèle ? Faisons le calcul à la main sur un petit nombre d’individus.

Precision et Recall pour un seuil de classification

Supposons qu’à partir de réponses à un questionnaire ou d’analyses médicales, un modèle de machine learning donne une probabilité d’être enceinte à chaque patiente. Le médecin convertit ces probabilités en labels enceinte / pas enceinte en prenant en compte un seuil de classification (classification threshold) à partir duquel il considère que la probabilité est significative. Pour plus de détails, consulter l’article précédent.

En comparant les labels prédits à la réalité, on construit la matrice de confusion afin d’évaluer la qualité des prédictions issues du modèle, et on calcule la precision et le recall :

precision recall - comparison prediction reality

Figure 4. Calcul de la Precision et du Recall pour le diagnostic de grossesse. Ici avec un seuil de classification à 30%.

Pour un même modèle, on obtient plusieurs matrices de confusion en fonction du seuil de classification choisi. On obtient donc aussi différentes valeurs de precision et de recall.

Precision Recall curve / Courbe Precision Recall

L’animation suivante montre les valeurs de precision et de recall obtenues en augmentant progressivement le seuil de classification. On trace la courbe de la precision en fonction du recall, qui est appelée “courbe PR” (PR curve) pour courbe Precision-Recall :

Figure 5. Variation du seuil de classification et courbe Precision-Recall.

Lorsque le seuil augmente, on observe que globalement la precision augmente et le recall baisse. La courbe Precision Recall résume ce trade-off entre precision et recall. Notons que pour le seuil le plus élevé (100%), la precision vaut 0/0 et n’est donc pas définie mathématiquement. La convention est alors de considérer que la precision vaut 100%, même s’il n’y aucun élément prédit positif.

Attardons-nous sur deux points extrêmes de la courbe Precision-Recall ci-dessus :

  • Si l’on veut maximiser la precision, on peut fixer le seuil de classification à 90 %. La precision est alors de 100% : la seule femme enceinte prédite est bien enceinte. Mais qu’en est-il du recall ? Parmi les 3 femmes réellement enceintes, le modèle n’en a détecté qu’une seule : le recall ne vaut que 33%.
  • Si l’on veut maximiser le recall, on peut fixer le seuil de classification à 20%. Le recall est alors de 100% : toutes les femmes réellement enceintes ont été détectées par le modèle. Mais qu’en est-il de la precision ? Parmi les 5 patientes prédites enceintes, seulement 3 sont réellement enceintes : la precision ne vaut que 60%.

Un compromis doit donc être fait entre l’optimisation de la precision et l’optimisation du recall. C’est pour cette raison que ces deux métriques sont étudiées conjointement dans l’évaluation d’un modèle. Pour en faire la synthèse, d’autres métriques sont fréquemment utilisées, comme l’AUC Precision-Recall ou le F1-score.

Courbe Precision Recall sur données réelles

Appliquons à présent le calcul de la precision et du recall à de vraies données. Pour cela, nous utilisons le jeu de données Telco Customer Churn [3]. Ces données permettent de prédire les résiliations des clients d’une agence de télécommunication fictive en fonction de leurs offres, de leurs tarifs et des autres informations associées aux contrats.

Modèle de prédiction de la résiliation des clients

Sous Python, traçons la courbe precision-recall du modèle sur nos données, à partir du modèle xgboost entraîné (code disponible dans le premier article) :

				
					import matplotlib.pyplot as plt
from sklearn.metrics import precision_recall_curve
 
precision_array, recall_array, threshold_array = precision_recall_curve(
    y_true=y_test, probas_pred=probas_pred
)
plt.plot(recall_array, precision_array)
plt.show()
				
			

Sous R, on peut utiliser la fonction pr.curve() du package PRROC, PRcurve() de DMwR ou encore evalmod() de precrec.

En examinant cette courbe point par point, on observe qu’à mesure qu’on augmente le seuil de classification, la matrice de confusion et les valeurs de precision et de recall évoluent :

Figure 6. Courbe Precision Recall d’un modèle de machine learning
Graphe supérieur gauche : distribution des probabilités de résiliation prédites. 1 point = 1 client, coloré en orange s’il a effectivement résilié (churn), en bleu s’il n’a pas résilié (no churn). Graphe inférieur gauche : matrice de confusion pour chaque seuil de classification. Graphe droite : courbe precision-recall, et courbes d’évolution de la precision et du recall en fonction du seuil de classification utilisé.

On confirme à la lecture de la courbe PR l’intuition obtenue précédemment : lorsqu’on augmente le seuil de classification, la précision augmente et le recall baisse. Précisons ces deux tendances opposées :
  • Plus on accroît le seuil, plus les positifs prédits sont certains et donc la precision augmente (mathématiquement, le nombre de faux positifs décroît plus vite que le nombre de vrais positifs). Mais il y a moins de prédictions positives donc le recall décroît.
  • A l’inverse, plus on diminue le seuil plus il y a plus de prédictions positives et donc le recall augmente (mathématiquement, le nombre de faux négatifs baisse et le nombre de vrais positifs augmente).  Mais les prédictions positives contiennent plus d’erreurs et donc la precision diminue.
Pour bien comprendre ces comportements, on peut revenir à l’évolution des composantes de la matrice de confusion avec le seuil (voir l’animation de cet article).

Quel couple Precision-Recall privilégier ? Choix du classification threshold

Le trade-off Precision-Recall est observable sur tous les modèles de classification à partir du moment où ils n’arrivent pas à parfaitement séparer les observations positives des négatives. Dans notre cas d’un modèle de prédiction des résiliations, imaginons que les clients qui sont prédits positifs se voient proposer une réduction de tarif. On peut alors schématiquement envisager deux stratégies opposées :
  • Stratégie “ne pas perdre de clients” : on veut détecter la majorité des clients en partance. On choisit donc un recall élevé, quitte à être peu précis et proposer des réductions de tarif à des clients qui n’allaient pas partir.
  • Stratégie “ne pas perdre de marges” : on veut éviter de proposer des réductions de tarif à des clients qui n’avaient pas l’intention de résilier, ce qui génèrerait une perte de marge. On choisit donc une precision élevée, quitte à détecter moins de résiliations.

Precision-Recall curves d’un modèle parfait et d’un modèle non-informatif

Precision et recall d’un modèle parfait

Un modèle parfait (perfect model/classifier) est un modèle qui sépare parfaitement les individus positifs des individus négatifs. Traçons sa courbe Precision-Recall :

Pour le modèle parfait, on atteint à la fois 100% de precision et 100% de recall lorsque le seuil est choisi entre les négatifs (bleus) et les positifs (oranges). Notre modèle prédit alors parfaitement chaque point. Pour un seuil plus faible, on perd en precision (en gardant un recall à 100%) car on génère des faux positifs, et pour un seuil plus élevé on perd en recall (en gardant une precision à 100%) car on génère des faux négatifs.

Precision et Recall d’un modèle non-informatif 

Un modèle non-informatif est un modèle dans lequel les individus positifs ont la même distribution de probabilités que les individus négatifs. Calculons sa courbe Precision-Recall en théorie et en pratique.

Calcul théorique de la courbe Precision-Recall :

Pour comprendre ce calcul, considérons un modèle non-informatif et un jeu de données contenant un taux de positifs noté p. Nous avons fixé un seuil de classification et obtenons un taux de prédictions positives noté q.

Que valent la precision et le recall ?

  • Precision : dans l’échantillon, il y a p% des individus qui sont réellement positifs, puisqu’il est aléatoire et contient donc la même proportion d’individus positifs que les données originales. Ainsi la precision est égale au taux de positifs p.
  • Recall : la distribution de probabilité des positifs et des négatifs étant la même, prédire q% d’individus positifs revient à prédire q% des individus positifs comme positifs. Le recall est donc égal au taux de prédictions positives q.

En repartant de la matrice de confusion du modèle non-informatif, démontrons ces résultats :

precision recall - confusion matrix calcul baseline performance

Figure 8. Precision et Recall d’un modèle non-informatif.
Composantes de la matrice exprimées en %. p est le taux de positifs dans le jeu de données et q est le taux de prédictions positives.

Les formules obtenues sont valables pour tout modèle non-informatif.  Notons que la precision est indépendante du choix du seuil, puisqu’elle est égale au taux de positifs, qui est une constante.

Calcul empirique de la courbe Precision-Recall :

Validons notre raisonnement théorique sur des données empiriques. Nous reprenons les données Telco et attribuons à chaque client une probabilité aléatoire (loi uniforme) entre 0 et 1. Voici le résultat :

Figure 9. Courbe Precision Recall d’un modèle non-informatif.

Dans ces données le taux de positif est de 27%. La courbe PR du modèle aléatoire reste essentiellement constante autour de ce taux, comme attendu. Rappelons que par convention, sur le dernier seuil de classification (100%) où tous les points sont prédits négatifs, le point de recall 0% a une precision de 100% – d’où la présence d’un point atypique au début de la courbe.

Certains se demanderont pourquoi sur la partie gauche la courbe Precision-Recall “oscille”. Cela vient du fait que lorsque le seuil augmente il y a moins de prédictions positives et on calcule la precision sur un échantillon de plus en plus restreint. La loi des grands nombres ne s’applique donc plus sur cet échantillon, et il n’est pas garanti que l’échantillon contienne p% de positifs. Pour illustrer, prenons l’exemple d’un avant-dernier seuil de classification qui prédirait une seule observation positive. Il n’y a alors que deux possibilités : soit l’observation est réellement positive et la precision vaut 100%, soit elle est négative et la precision vaut 0%. C’est cet aléa qui fait “osciller” la courbe.

Conclusion

Precision et recall sont deux métriques incontournables en classification car elles résument le trade-off entre deux objectifs rivaux : être précis dans ses prédictions ou être exhaustif dans son ciblage.

Selon le seuil de classification retenu, on peut optimiser la precision ou le recall, mais pas les deux à la fois. Seul un modèle parfait y parvient. En pratique on a généralement recours à une optimisation du recall sous contrainte de précision ou à une optimisation de la précision sous contrainte de recall.

Pour évaluer globalement la performance d’un modèle, on calcule l’aire sous la courbe Precision-Recall, nommée AUC Precision-Recall. L’article suivant de cette série y est consacré.

Références :

  1. Walber, English:  Precision and recall. 2014. [En ligne]. Disponible sur: https://commons.wikimedia.org/wiki/File:Precisionrecall.svg
  2. « sklearn.metrics.precision_recall_curve », scikit-learn. https://scikit-learn/stable/modules/generated/sklearn.metrics.precision_recall_curve.html
  3. « Telco Customer Churn ». https://kaggle.com/blastchar/telco-customer-churn

Crédit image : Nick Brito – Dribble

Sommaire

Voir aussi

Voir aussi

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *