Polydesk-logotype
Polydesk.ai — Header

AUC (Area Under the Curve)

L’AUC (Area Under the Curve) est une métrique d’évaluation qui quantifie la capacité globale d’un modèle de classification binaire à distinguer la classe positive de la classe négative, tous seuils de décision confondus.

Concrètement, l’AUC correspond à la probabilité qu’un exemple positif tiré au hasard reçoive un score de prédiction plus élevé qu’un exemple négatif tiré au hasard. La valeur varie de 0 à 1 : un modèle parfait obtient 1,0, un modèle aléatoire se situe à 0,5, et un modèle qui inverse systématiquement ses prédictions tombe en dessous de 0,5.

Quand on parle d’AUC sans autre précision en machine learning, on fait presque toujours référence à l’aire sous la courbe ROC (Receiver Operating Characteristic). C’est la métrique de référence pour évaluer un classifieur binaire de manière indépendante du seuil de classification choisi.

Fiche rapide : AUC
Nom complet
Area Under the Receiver Operating Characteristic Curve (AUC-ROC)
Type
Métrique d’évaluation pour la classification binaire
Plage
0 à 1 (0,5 = aléatoire, 1,0 = parfait)
Dépendance au seuil
Non (agrège tous les seuils possibles)
Calcul Python
sklearn.metrics.roc_auc_score()
Quand l’utiliser
Classification binaire, comparaison de modèles, données modérément déséquilibrées
Alternative
AUC-PR (Precision-Recall) pour les datasets très déséquilibrés

Comprendre l’AUC : le concept fondamental

Un modèle de classification binaire produit, pour chaque observation, un score de probabilité entre 0 et 1. Pour transformer ce score en prédiction concrète (« positif » ou « négatif »), vous devez fixer un seuil. Par défaut, ce seuil est souvent 0,5 : toute observation avec une probabilité supérieure est classée positive.

Le problème, c’est que chaque seuil produit un compromis différent entre vrais positifs et faux positifs. À seuil bas, vous détectez presque tous les positifs mais générez aussi beaucoup de faux positifs. À seuil élevé, vous êtes plus sélectif mais risquez de rater des positifs. Des métriques comme l’accuracy, la précision ou le rappel ne reflètent les performances qu’à un seul seuil donné.

L’AUC résout ce problème en agrégeant les performances du modèle sur l’ensemble des seuils possibles. Elle répond à une question simple : si vous prenez un exemple positif et un exemple négatif au hasard, quelle est la probabilité que le modèle attribue un score plus élevé au positif ? C’est exactement ce que mesure l’AUC.

L’interprétation probabiliste

Cette interprétation probabiliste est fondamentale pour bien comprendre ce que l’AUC vous dit (et ne vous dit pas). Un AUC de 0,85 signifie que dans 85 % des cas, si vous tirez au hasard une paire (un positif, un négatif), le modèle attribuera un score plus élevé à l’exemple positif. Ce n’est pas un taux de bonne classification : c’est une mesure de la qualité du ranking produit par le modèle.

Cette distinction est cruciale. L’AUC mesure la capacité discriminante du modèle, pas sa calibration. Un modèle peut avoir un excellent AUC tout en produisant des probabilités mal calibrées. Si vous avez besoin que les probabilités prédites reflètent fidèlement les fréquences réelles (par exemple en scoring de crédit ou en tarification d’assurance), l’AUC seule ne suffit pas : il faut aussi vérifier la calibration.

La courbe ROC : fondation de l’AUC

L’AUC est indissociable de la courbe ROC sur laquelle elle est calculée. Pour tracer cette courbe, on fait varier le seuil de classification de 1 (tout est prédit négatif) à 0 (tout est prédit positif). À chaque seuil, on calcule deux quantités issues de la matrice de confusion :

Le TPR (True Positive Rate), aussi appelé rappel ou sensibilité : la proportion des vrais positifs correctement identifiés. Formule : TPR = TP / (TP + FN).

Le FPR (False Positive Rate) : la proportion des négatifs incorrectement classés comme positifs. Formule : FPR = FP / (FP + TN).

La courbe ROC trace le TPR (axe Y) en fonction du FPR (axe X). Le point idéal est le coin supérieur gauche (FPR = 0, TPR = 1), qui correspondrait à un classifieur parfait.

Les cas limites de la courbe ROC

Trois cas permettent de calibrer votre intuition :

Classifieur parfait (AUC = 1,0) : la courbe monte verticalement vers (0, 1) puis s’étend horizontalement. Le modèle sépare parfaitement les deux classes à au moins un seuil.

Classifieur aléatoire (AUC = 0,5) : la courbe suit la diagonale de (0, 0) à (1, 1). Le modèle ne fait pas mieux qu’un tirage au sort.

Classifieur inversé (AUC < 0,5) : la courbe passe sous la diagonale. Le modèle classe systématiquement à l’envers. En inversant ses prédictions, vous obtiendriez un AUC supérieur à 0,5.

Astuce pratique Si votre AUC est inférieure à 0,5, inversez simplement les prédictions du modèle (remplacez les 0 par des 1 et vice versa). Vous obtiendrez immédiatement un modèle avec un AUC supérieur à 0,5 sans aucun réentraînement.

Grille d’interprétation de l’AUC

La communauté ML utilise une grille d’interprétation approximative pour évaluer rapidement la qualité d’un modèle via son AUC. Attention : ces seuils ne sont pas des règles absolues et dépendent fortement du domaine d’application.

Plage AUC Interprétation Ce que ça signifie en pratique
0,90 – 1,00 Excellent Discrimination quasi parfaite. Vérifiez qu’il n’y a pas de fuite de données (data leakage).
0,80 – 0,90 Bon Modèle performant, exploitable en production pour la plupart des cas d’usage.
0,70 – 0,80 Acceptable Le modèle discrimine raisonnablement. Suffisant pour du pré-filtrage ou du triage.
0,60 – 0,70 Faible Discrimination limitée. À améliorer avant tout déploiement.
0,50 – 0,60 Échec À peine mieux que le hasard. Le modèle n’a pratiquement rien appris.
Attention au contexte Un AUC de 0,75 peut être excellent pour prédire des événements rares (fraude, maladie rare) mais insuffisant pour un tri de spam. Interprétez toujours l’AUC en fonction de la difficulté intrinsèque du problème et de la baseline existante.

Comment calculer l’AUC : méthodes et formules

Méthode des trapèzes

La méthode la plus directe consiste à tracer la courbe ROC, puis à calculer l’aire sous cette courbe par intégration numérique, typiquement via la règle des trapèzes. C’est ce que fait la fonction sklearn.metrics.auc() en prenant en entrée les tableaux de FPR et TPR.

Statistique de Mann-Whitney U

L’AUC est mathématiquement équivalente à la statistique U de Mann-Whitney normalisée. En pratique, cela revient à comparer toutes les paires possibles (un positif, un négatif) et à compter combien de fois le positif a un score plus élevé :

AUC = (nombre de paires concordantes + 0,5 × nombre de paires ex-aequo) / (nombre total de paires)

Cette formulation est particulièrement utile pour l’interprétation : elle traduit directement la probabilité de concordance mentionnée plus haut.

Relation avec le coefficient de Gini

Le coefficient de Gini, fréquemment utilisé en scoring bancaire et en assurance, est directement lié à l’AUC par la formule : Gini = 2 × AUC - 1. Un AUC de 0,80 correspond donc à un Gini de 0,60. Cette relation est bijective : connaître l’un permet de calculer l’autre instantanément.

Calculer l’AUC en Python avec scikit-learn

Scikit-learn (version 1.8 au moment de la rédaction) fournit deux fonctions principales pour l’AUC :

roc_auc_score : calcul direct

La fonction roc_auc_score(y_true, y_score) calcule l’AUC-ROC directement à partir des labels réels et des scores de prédiction. C’est la méthode la plus simple et la plus courante.

import numpy as np
from sklearn.metrics import roc_auc_score

# Labels réels (0 ou 1)
y_true = np.array([0, 0, 1, 1, 1, 0, 1, 0])

# Probabilités prédites pour la classe positive
y_scores = np.array([0.1, 0.35, 0.72, 0.85, 0.62, 0.28, 0.91, 0.45])

auc = roc_auc_score(y_true, y_scores)
print(f"AUC-ROC : {auc:.4f}")
# Sortie : AUC-ROC : 0.8750

roc_curve + auc : calcul en deux étapes

Si vous avez besoin de tracer la courbe ROC en plus de calculer l’AUC, utilisez la combinaison roc_curve() et auc() :

import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve, auc

# Calcul des points de la courbe ROC
fpr, tpr, thresholds = roc_curve(y_true, y_scores)

# Calcul de l'aire sous la courbe
roc_auc = auc(fpr, tpr)

# Tracé
plt.figure(figsize=(8, 6))
plt.plot(fpr, tpr, color='#7c3aed', lw=2,
         label=f'Courbe ROC (AUC = {roc_auc:.2f})')
plt.plot([0, 1], [0, 1], color='gray',
         lw=1, linestyle='--', label='Aléatoire (AUC = 0.50)')
plt.xlabel('Taux de faux positifs (FPR)')
plt.ylabel('Taux de vrais positifs (TPR)')
plt.title('Courbe ROC')
plt.legend(loc='lower right')
plt.grid(alpha=0.3)
plt.show()

AUC en contexte multiclasse

L’AUC-ROC a été conçue pour la classification binaire, mais scikit-learn supporte deux stratégies pour l’étendre au multiclasse :

One-vs-Rest (OvR) : chaque classe est comparée à toutes les autres regroupées. On calcule l’AUC pour chaque « classe vs reste », puis on fait la moyenne. Cette approche est sensible au déséquilibre entre classes.

One-vs-One (OvO) : on calcule l’AUC pour chaque paire de classes possible, puis on fait la moyenne. Cette approche est insensible au déséquilibre quand on utilise la moyenne macro.

from sklearn.metrics import roc_auc_score

# y_true : labels (0, 1, 2)
# y_prob : matrice (n_samples, n_classes) de probabilités
auc_ovr = roc_auc_score(y_true, y_prob,
                         multi_class='ovr', average='macro')
auc_ovo = roc_auc_score(y_true, y_prob,
                         multi_class='ovo', average='macro')

AUC vs autres métriques de classification

L’AUC est l’une des nombreuses métriques disponibles pour évaluer un classifieur. Chacune a ses forces et ses faiblesses. Voici comment l’AUC se positionne par rapport aux alternatives.

Métrique Dépend du seuil ? Sensible au déséquilibre ? Mesure quoi ? Quand la préférer
AUC-ROC Non Modérément Capacité discriminante globale Comparaison de modèles, datasets équilibrés à modérément déséquilibrés
Accuracy Oui Très Proportion de prédictions correctes Classes équilibrées, coût d’erreur symétrique
F1-Score Oui Peu Compromis précision / rappel Classes déséquilibrées, focus sur la classe positive
Précision Oui Peu Fiabilité des prédictions positives Coût élevé des faux positifs
Rappel Oui Peu Détection des vrais positifs Coût élevé des faux négatifs (médecine, sécurité)
AUC-PR Non Peu Performance sur la classe positive Datasets très déséquilibrés (fraude, anomalies)

Quand ne PAS utiliser l’AUC

L’AUC n’est pas la métrique idéale dans tous les cas :

Datasets extrêmement déséquilibrés : quand la classe positive représente moins de 1 % des données (détection de fraude, détection d’anomalies), l’AUC-ROC peut donner une vue trop optimiste. Le FPR reste faible même avec beaucoup de faux positifs en valeur absolue, car le dénominateur (nombre de vrais négatifs) est énorme. Utilisez plutôt la courbe Precision-Recall et son aire (AUC-PR).

Besoin de probabilités calibrées : l’AUC ne dépend que du rang relatif des scores, pas de leur valeur absolue. Deux modèles avec des probabilités très différentes peuvent avoir la même AUC. Si les probabilités prédites servent directement de prix ou de coût (assurance, crédit), vérifiez aussi la calibration avec le Brier Score ou des courbes de fiabilité.

Focus sur un seuil opérationnel précis : si votre business impose un seuil fixe (par exemple, « alerter quand la probabilité dépasse 0,3 »), des métriques au seuil comme la précision, le rappel ou le F1-Score seront plus informatives que l’AUC.

L’AUC en pratique : cas d’usage concrets

Diagnostic médical

C’est le domaine historique de la courbe ROC, qui tire son nom des opérateurs radar de la Seconde Guerre mondiale. En médecine, l’AUC sert à comparer la capacité de différents tests diagnostiques à séparer les patients malades des patients sains. Un test de dépistage du cancer avec une AUC de 0,92 sépare mieux les cas que les non-cas qu’un test avec une AUC de 0,78, tous seuils de décision confondus.

Scoring de crédit et détection de fraude

Les banques utilisent massivement l’AUC (souvent via le coefficient de Gini) pour évaluer leurs modèles de scoring. Un modèle de scoring de crédit avec un Gini de 0,40 (AUC = 0,70) est considéré comme exploitable ; un Gini de 0,60 (AUC = 0,80) est jugé bon. Pour la détection de fraude, où les positifs sont très rares, on complète généralement l’AUC-ROC par l’AUC-PR.

Comparaison de modèles

L’un des usages les plus fréquents de l’AUC est la comparaison de plusieurs modèles sur le même jeu de données. En superposant les courbes ROC, vous identifiez visuellement quel modèle domine. Si les courbes se croisent, l’AUC globale peut masquer des différences : un modèle peut être meilleur à faible FPR et l’autre à FPR élevé. Dans ce cas, examinez les AUC partielles ou choisissez la métrique en fonction de la zone de FPR qui compte pour votre application.

Sélection de features

L’AUC sert aussi à évaluer le pouvoir discriminant d’une variable individuelle. Vous pouvez calculer l’AUC d’un « modèle » qui utilise chaque feature seule comme score de prédiction. C’est une méthode rapide pour identifier les variables les plus informatives avant d’entraîner un modèle complexe.

AUC partielle : focus sur une zone d’intérêt

Parfois, seule une portion de la courbe ROC est pertinente. En dépistage médical, on s’intéresse surtout à la zone de faible FPR (par exemple FPR < 0,10), car un taux de faux positifs élevé rendrait le test inutilisable en pratique. L’AUC partielle (partial AUC) ne mesure l’aire que sur cette portion.

Scikit-learn supporte le calcul d’AUC partielle via le paramètre max_fpr de roc_auc_score() :

# AUC partielle pour FPR <= 0.10
partial_auc = roc_auc_score(y_true, y_scores, max_fpr=0.10)
print(f"AUC partielle (FPR ≤ 0.10) : {partial_auc:.4f}")
AUC partielle standardisée Scikit-learn renvoie l’AUC partielle standardisée de McClish (1989), normalisée pour que la valeur aille de 0,5 (aléatoire sur la zone) à 1,0 (parfait sur la zone). Cela permet de comparer des AUC partielles calculées sur des plages de FPR différentes.

Pièges courants et erreurs d’interprétation

Piège n°1 : AUC parfaite = data leakage probable

Si vous obtenez une AUC de 0,99 ou 1,0 sur vos données de test, le réflexe doit être le soupçon plutôt que la satisfaction. Dans la grande majorité des cas, cela signifie une fuite de données : une variable du jeu d’entraînement contient (directement ou indirectement) l’information de la cible. Vérifiez vos features, votre pipeline de preprocessing et vos splits train/test avant de célébrer.

Piège n°2 : AUC similaire, performances différentes

Deux modèles peuvent avoir la même AUC globale tout en se comportant très différemment. Si les courbes ROC se croisent, l’un domine l’autre dans certaines régions de FPR mais pas dans d’autres. L’AUC, en tant que résumé scalaire, gomme ces nuances. Tracez toujours les courbes, ne vous contentez pas du nombre.

Piège n°3 : AUC flatteuse sur données très déséquilibrées

Avec un ratio 99:1 entre classes, le FPR peut rester bas même avec beaucoup de faux positifs en absolu (le dénominateur est énorme). L’AUC-ROC peut afficher 0,95 alors que la précision sur la classe positive est médiocre. Complétez systématiquement par la courbe Precision-Recall dans ces scénarios.

Piège n°4 : confondre AUC et calibration

Un modèle avec un AUC de 0,90 n’est pas forcément bien calibré. Si le modèle prédit 0,80 de probabilité pour un événement qui se produit réellement 60 % du temps, le ranking peut être correct (AUC élevée) mais les probabilités sont sur-estimées. Si vos probabilités servent de base à des décisions financières, calibrez votre modèle (Platt Scaling, isotonic regression) en plus de mesurer l’AUC.

L’AUC dans les benchmarks de LLM et de deep learning

L’AUC ne se limite pas au ML classique. Elle intervient régulièrement dans l’évaluation des systèmes de deep learning :

Les systèmes de modération de contenu et de détection de toxicité utilisent l’AUC-ROC comme métrique principale, car le choix du seuil de modération dépend du contexte (plateforme pour enfants vs forum adulte).

Les benchmarks de détection de deepfakes rapportent quasi systématiquement l’AUC pour comparer les détecteurs.

Les modèles de sentiment analysis et de classification de texte utilisent l’AUC quand le problème est formulé en binaire (positif/négatif).

En recommandation, l’AUC mesure la capacité du système à classer un item pertinent au-dessus d’un item non pertinent pour un utilisateur donné.

Bonnes pratiques pour utiliser l’AUC

Toujours tracer la courbe ROC : l’AUC est un résumé. La courbe donne l’information complète. Deux modèles avec la même AUC peuvent avoir des courbes très différentes.

Combiner avec d’autres métriques : l’AUC est une vue d’ensemble. Complétez avec la précision, le rappel et le F1-Score au seuil opérationnel que vous retiendrez en production.

Utiliser la validation croisée : calculez l’AUC sur plusieurs folds pour obtenir une estimation robuste avec intervalle de confiance. Un AUC moyenne de 0,82 ± 0,03 est beaucoup plus informatif qu’un AUC ponctuel de 0,82.

Reporter l’AUC sur le jeu de test : l’AUC sur le jeu d’entraînement est inutile (elle sera presque toujours très élevée, surtout pour les modèles complexes comme Random Forest ou XGBoost). Seule l’AUC sur des données non vues compte.

Adapter la métrique au déséquilibre : en dessous de 5 % de positifs, basculez vers l’AUC-PR. Entre 5 % et 30 %, l’AUC-ROC reste fiable. Au-dessus de 30 %, les deux conviennent.

Raccourci pratique Dans scikit-learn, vous pouvez calculer l’AUC directement dans un pipeline de cross-validation avec cross_val_score(model, X, y, cv=5, scoring='roc_auc'). C’est la méthode la plus propre pour comparer plusieurs modèles.

Alternatives et variantes de l’AUC

AUC-PR (Precision-Recall)

L’aire sous la courbe Precision-Recall est la principale alternative à l’AUC-ROC. Elle trace la précision en fonction du rappel à chaque seuil. Contrairement à la courbe ROC qui utilise le FPR (et donc les vrais négatifs), la courbe PR se concentre exclusivement sur la classe positive. C’est pourquoi elle est préférée pour les datasets très déséquilibrés.

Log Loss (entropie croisée)

La log loss évalue la qualité des probabilités prédites, pas seulement le ranking. Si votre modèle prédit des probabilités qui doivent être précises (pas seulement bien ordonnées), la log loss est complémentaire à l’AUC.

Informedness (indice de Youden)

L’Informedness (aussi appelé J de Youden) vaut TPR + TNR – 1, soit 2 × AUC – 1 dans le cas d’un résumé scalaire. Elle a l’avantage de donner 0 pour un classifieur aléatoire (au lieu de 0,5) et est bornée entre -1 et 1.

Verdict

L’AUC-ROC reste la métrique de référence pour évaluer un classifieur binaire de manière globale. Sa force : elle est indépendante du seuil, intuitive (probabilité de concordance), et largement comprise par la communauté ML. Son talon d’Achille : elle peut être trop optimiste sur des données très déséquilibrées et ne dit rien sur la calibration des probabilités.

En pratique, utilisez l’AUC comme premier critère de comparaison entre modèles, puis affinez avec des métriques au seuil (précision, rappel, F1) une fois le meilleur modèle identifié. Sur des données très déséquilibrées, basculez vers l’AUC-PR. Et dans tous les cas : tracez la courbe, ne vous contentez pas du chiffre.


Questions fréquentes sur l’AUC

Quelle est la différence entre AUC et AUC-ROC ?

Techniquement, « AUC » signifie simplement « aire sous la courbe » et peut s’appliquer à n’importe quelle courbe (ROC, Precision-Recall, gain cumulé). En pratique, quand quelqu’un dit « AUC » en machine learning sans préciser, il fait référence à l’AUC-ROC dans la grande majorité des cas. Si on parle de l’aire sous la courbe Precision-Recall, on dit explicitement « AUC-PR » ou « AP » (Average Precision).

Comment interpréter un AUC de 0,75 ?

Un AUC de 0,75 signifie que si vous tirez au hasard un exemple positif et un exemple négatif, le modèle attribuera un score plus élevé au positif dans 75 % des cas. C’est un modèle avec une discrimination acceptable mais imparfaite. Selon le domaine, cela peut être suffisant (pré-filtrage de candidatures) ou insuffisant (diagnostic médical). Comparez toujours à la baseline de votre domaine et aux performances d’autres modèles sur le même dataset.

Pourquoi l’AUC est-elle préférée à l’accuracy ?

L’accuracy dépend du seuil de classification et est très sensible au déséquilibre des classes. Sur un dataset avec 95 % de négatifs, un modèle qui prédit toujours « négatif » obtient 95 % d’accuracy mais une AUC de 0,50 (aléatoire). L’AUC est indépendante du seuil et ne peut pas être « trompée » par un modèle trivial qui prédit toujours la classe majoritaire. C’est pourquoi elle est systématiquement utilisée dans les compétitions Kaggle et dans l’industrie.

L’AUC fonctionne-t-elle pour la classification multiclasse ?

Oui, mais elle nécessite une adaptation. Les deux stratégies principales sont One-vs-Rest (chaque classe contre toutes les autres) et One-vs-One (chaque paire de classes). Scikit-learn supporte les deux via le paramètre multi_class de roc_auc_score(). L’AUC multiclasse est cependant moins intuitive que l’AUC binaire. Pour du multiclasse, le F1-Score macro ou pondéré est souvent plus parlant.

Quelle AUC faut-il viser pour mettre un modèle en production ?

Il n’y a pas de seuil universel. Cela dépend du coût des erreurs, de la baseline du domaine et des alternatives disponibles. En scoring de crédit, un Gini de 0,40 (AUC = 0,70) est déjà déployable. En détection de cancer, on vise typiquement au-dessus de 0,90. La vraie question n’est pas « quelle AUC est suffisante ? » mais « cette AUC apporte-t-elle une valeur ajoutée par rapport à la méthode actuelle ? ». Si le processus existant est purement manuel, même un AUC de 0,72 peut transformer les opérations.

Polydesk.ai — Footer