Partie 4 : l’AUC Precision-Recall

L’AUC Precision Recall mesure la performance d’un modèle de classification de façon interprétable et robuste. Comment se calcule-t-il et quelle est la performance minimale et maximale d’un modèle avec cette métrique ?
AUC PR_performance curves
Sommaire

Cet article est le quatriè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 l’AUC Precision Recall ?

Pour prendre en compte le compromis entre la Precision et le Recall (notions présentées en détail dans l’article précédent), on s’intéresse à une métrique qui résume la performance globale du modèle : l’AUC Precision Recall, aussi noté AUC PR.

 

Le terme AUC signifie  Area Under the Curve, aire sous la courbe en français. La métrique AUC PR consiste donc à calculer l’aire sous la courbe Precision Recall. En reprenant notre exemple de diagnostic de grossesse, on peut calculer la valeur de l’AUC Precision Recall.

AUC PR_AUC PR example pregnancy

Figure 1. AUC Precision-Recall.

Comme notre exemple contient peu d’individus, la courbe n’est pas très régulière, mais elle permet de comprendre le principe de l’AUC PR.

L’AUC PR peut être calculée automatiquement :

  • Sous Python avec la fonction sklearn.metrics.average_precision_score [1]
  • Sous R avec la fonction AUCPRC de PerfMeas.

 

 

Pourquoi calculer l’AUC Precision Recall ?

Nous venons de voir ce qu’était l’AUC PR. Mais pourquoi cette valeur est-elle intéressante et à quoi peut-on la comparer ? Pour répondre à ces questions, calculons l’AUC PR sur différents modèles. Pour cela, nous allons utiliser le jeu de données Telco Customer Churn [2]. Ces données permettent de prédire les résiliations des clients d’une agence de télécommunication en fonction de leurs offres, de leurs tarifs et des autres informations associées aux contrats.

 

AUC PR d’un modèle parfait

Lors de la construction de la courbe PR, nous avons compris que pour améliorer la precision il faut en général dégrader le recall, et vice-versa. Un bon modèle serait alors celui qui permet d’améliorer la precision sans dégrader le recall. En passant par le cas particulier du modèle parfait, examinons la valeur maximale de l’AUC Precision-Recall.

 

Un modèle parfait (perfect model/classifier) fournit des probabilités qui séparent complètement les individus positifs des individus négatifs (aucun individu négatif n’a une probabilité supérieure à un individu positif). La figure ci-dessous illustre ce cas :

AUC PR_predicted probabilities perfect

Figure 2. Probabilités prédites par un modèle parfait.
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). Tous les individus négatifs sont à gauche et tous les individus positifs sont à droite. Si l’on place le seuil entre les négatifs et les positifs (vers 50% ici) alors toutes les prédictions sont correctes.

A partir des probabilités prédites, construisons la courbe PR de ce modèle :

Figure 3. Courbe Precision Recall d’un modèle parfait.
Graphe supérieur gauche : distribution des probabilités de résiliation prédites. 1 point = 1 client, coloré en orange s’il a réellement résilié (churn), en bleu s’il n’a pas résilié (no churn). Graphe inférieur gauche : matrice de confusion. Graphe droite : évolution de la precision et du recall

Dans ce modèle, on voit que l’on peut maximiser à la fois la precision et le recall lorsque le seuil de classification (classification threshold) est choisi entre les négatifs et les positifs. Notre modèle prédit alors parfaitement chaque point. Pour un seuil plus faible, on perd en precision (proportion de prédictions positives correctes) car on génère des faux positifs, et pour un seuil plus élevé on perd en recall (proportion d’individus positifs correctement prédits) car on génère des faux négatifs.

AUC PR_AUC PR perfect

Figure 4. AUC Precision Recall d’un modèle parfait.
Trait rouge : courbe PR. Aire rouge : aire sous la courbe PR.

Le modèle parfait a un recall maximal pour n’importe quelle valeur de precision et une precision maximale pour n’importe quelle valeur de recall. L’aire sous la courbe est donc l’aire sous une constante égale à 1 entre 0 et 1 : l’AUC Precision Recall vaut 100% pour un modèle parfait.

AUC PR d’un modèle parfait  =  100%

 

AUC PR d’un modèle non-informatif

Un modèle non-informatif (no-skill model/classifier), également appelé modèle aléatoire (random model/classifier) ou modèle de performance minimale (baseline model/classifier), est un modèle qui donne la même distribution de probabilités aux individus positifs et négatifs.

Calcul théorique de l’AUC Precision-Recall :

Nous avons vu dans l’article précédent que la precision d’un modèle non-informatif est constante quel que soit le seuil de classification, égale au taux de positifs des données.

L’AUC Precision-Recall vaut donc (1-0) x Taux de positifs :

AUC PR d’un modèle non-informatif  =  Taux de positifs

 

Calcul empirique de l’AUC Precision-Recall :

Vérifions 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. Traçons la courbe precision-recall :

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

Nous obtenons bien le résultat attendu, avec un dernier point à 0% de recall et 100% de precision. Cette valeur de precision est une convention pour le seuil à 100% où tous les individus sont prédits négatifs et où la precision n’est donc en réalité pas définie (pour plus de précisions sur cette courbe, voir l’article précédent).  

 

Lorsqu’on calcule l’aire sous cette courbe, on obtient bien un AUC de 27% :

AUC PR_AUC PR random baseline

Figure 6. AUC Precision Recall d’un modèle non-informatif.
Trait rouge : courbe PR. Aire rouge : aire sous la courbe PR.

 

AUC PR d’un modèle de Machine Learning

Nous venons de voir que l’AUC PR est un indicateur de la performance globale du modèle et qu’il est compris entre deux bornes :

Taux de positifs $\leq$  AUC PR d’un modèle de Machine Learning $\leq$ 100%

Calculons la valeur de l’AUC PR du modèle de Machine Learning entraîné sur les données Telco.

 

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

Nous avons entraîné avec les données Telco un modèle de prédiction de la résiliation (churn), pour ensuite prédire la probabilité de résiliation de chaque client. Pour chaque seuil de classification, la matrice de confusion et les valeurs de la precision et du recall évoluent :

Figure 7. Courbe Precision Recall d’un modèle de machine learning.

Calculons à présent sous Python (avec sklearn) l’AUC PR du modèle sur nos données, à partir du modèle xgboost entraîné (code dans le premier article) :

				
					from sklearn.metrics import average_precision_score
auc_pr = average_precision_score(y_true=y_test, y_score=probas_pred)
print(auc_pr)
				
			

Sous R on peut utiliser la fonction PRAUC() du package MLmetrics ou AUC() de modEvA.


L’AUC PR de notre modèle de prédiction vaut 65% :

AUC PR_AUC PR example Telco

Figure 8. AUC Precision-Recall d’un modèle de machine learning.
En rouge la courbe PR du modèle de prédiction de résiliation et en bleu pointillé le taux de positifs dans les données, qui sert de référence pour évaluer l’intérêt du modèle.

En comparant les performances du modèle de machine learning par rapport à celle du modèle non-informatif (qui est égal au taux de positifs), on peut calculer un ratio de performance :

Performance du modèle = 2.4 x Taux de positifs

 

Ce ratio est utile en présence de données déséquilibrées (imbalanced data) : considérons des données avec un taux de positifs de 2%, et supposons qu’on obtienne un AUC PR de 20%. Communiquer ce chiffre à des non-experts peut poser problème car ils ont le sentiment que le modèle n’est pas performant (alors qu’il l’est!), surtout si sur un projet précédent vous avez présenté un AUC PR de 80% car vos données étaient plus équilibrées. Il est donc plus lisible de présenter votre ratio de performance, qui est de 10 fois (20% / 2%) le taux de positifs.

 

 

Conclusion

L’AUC Precision Recall permet d’évaluer la performance globale d’un modèle. Il est égal à 100% pour un modèle parfait et au taux de positifs pour un modèle non-informatif. La performance d’un modèle de Machine Learning se situe donc entre ces valeurs. Une valeur significativement inférieure au taux de positifs indique une erreur dans le code : le modèle a extrait de l’information des données mais a inversé ses prédictions.

 

Comme il est global – calculé sur l’ensemble des seuils – l’AUC Precision Recall peut être une bonne métrique pour l’optimisation des hyperparamètres d’un modèle (par bayesian search, random search, gridsearch etc.), voire pour faire de l’early stopping en boosting (Gradient Boosting Machine, XGBoost etc.).

 

Il ne doit en revanche pas être utilisé comme une fonction de coût (loss function) optimisée directement par l’algorithme car il n’a pas les propriétés de régularité (smoothness) et de convexité requises.

 

Pour explorer d’autres métriques de classification, consultez les articles de cette série.

Références :

  1. « sklearn.metrics.average_precision_score », scikit-learn. https://scikit-learn/stable/modules/generated/sklearn.metrics.average_precision_score.html
  2. « Telco Customer Churn ». https://kaggle.com/blastchar/telco-customer-churn

Crédit image : Kasia Bojanowska – Dribbble

Sommaire

Voir aussi

Voir aussi

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.