Recall (Rappel)
Le recall (rappel, sensibilité ou taux de vrais positifs) est une métrique de classification qui mesure la proportion de vrais positifs correctement identifiés par le modèle parmi tous les exemples réellement positifs : combien de cas positifs le modèle a-t-il trouvés ?
Le recall répond à la question inverse de la precision. La precision demande « Quand le modèle dit oui, a-t-il raison ? » Le recall demande « Parmi tous les cas qui sont vraiment oui, combien le modèle en a-t-il trouvés ? » Un recall de 100 % signifie que le modèle n’a manqué aucun cas positif. C’est la métrique à privilégier quand les faux négatifs sont coûteux : diagnostic médical, détection de défauts industriels, sécurité informatique.
- Nom français
- Rappel (ou sensibilité, taux de vrais positifs, TPR)
- Type
- Métrique d’évaluation pour la classification
- Formule
- Recall = TP / (TP + FN)
- Question posée
- « Parmi les vrais positifs, combien ont été détectés ? »
- Plage
- 0 à 1. Plus haut = meilleur.
- Alias
- Sensitivity, True Positive Rate (TPR), Hit Rate
- Complémentaire de
- Precision
- Combinées dans
- F1-Score
- Verdict
- Métrique clé quand les faux négatifs sont coûteux. Toujours rapporter avec la precision.
La formule
Recall = TP / (TP + FN)
# TP = Vrais Positifs (cas positifs correctement détectés)
# FN = Faux Négatifs (cas positifs manqués par le modèle)
Le dénominateur (TP + FN) est le nombre total de vrais positifs dans le dataset (ceux que le modèle a trouvés + ceux qu’il a manqués). Le numérateur (TP) est le nombre de positifs correctement détectés. Le recall ignore complètement les faux positifs : peu importe si le modèle a aussi déclenché de fausses alarmes, seule la couverture des vrais positifs compte.
L’intuition : ne laisser aucun cas passer
Imaginez un détecteur de métaux à l’entrée d’un aéroport :
Recall = 100 % : toute personne portant un objet métallique est détectée. Aucune arme ne passe. Peu importe si le détecteur sonne aussi pour les ceintures et les clés (faux positifs), la sécurité est assurée.
Recall = 80 % : 20 % des objets métalliques passent sans être détectés. C’est un risque de sécurité inacceptable.
Recall = 50 % : une chance sur deux de détecter un objet métallique. Le système est inutile.
Dans ce contexte, le recall est plus important que la precision. Quelques fausses alarmes (fouilles supplémentaires) sont un inconvénient mineur comparé à un objet dangereux non détecté.
Exemples concrets
Dépistage du cancer
# 1000 patients testés, dont 50 ont réellement un cancer
# Modèle A : détecte 45 cancers, en manque 5
TP=45, FN=5
Recall = 45 / (45 + 5) = 90 %
# 5 patients atteints du cancer ne sont pas détectés → potentiellement fatal
# Modèle B : détecte 49 cancers, en manque 1
TP=49, FN=1
Recall = 49 / (49 + 1) = 98 %
# Quasi tous les cancers sont détectés, même si certains sains
# sont envoyés en examen complémentaire (FP)
En oncologie, un recall de 90 % signifie que 10 % des cancers sont manqués. Avec 50 cas, ce sont 5 patients dont le diagnostic est retardé. Le modèle B, avec 98 % de recall, est nettement préférable, même si sa precision est plus faible (plus de faux positifs entraînant des examens complémentaires inutiles).
Détection d’intrusion réseau
# 100 000 connexions réseau, dont 200 sont des attaques
# Système avec 95 % de recall
TP=190, FN=10
# 10 attaques passent inaperçues → brèches de sécurité potentielles
# Système avec 99.5 % de recall
TP=199, FN=1
# 1 seule attaque non détectée → bien meilleur
Recherche documentaire
# Un juriste recherche TOUTES les décisions de justice pertinentes pour un dossier
# Base de données de 10 000 documents, dont 30 sont pertinents
# Moteur de recherche retourne 50 documents
# 25 sont pertinents (TP), 25 ne le sont pas (FP)
# 5 pertinents n'ont pas été retournés (FN)
Recall = 25 / (25 + 5) = 83.3 %
# Le juriste manque 5 décisions potentiellement cruciales pour son dossier
En recherche juridique, médicale ou scientifique, manquer un document pertinent peut avoir des conséquences graves. Le recall est la métrique prioritaire.
Le trade-off recall-precision
Recall et precision sont en tension permanente. Le même phénomène que pour la precision, vu de l’autre côté :
Pour augmenter le recall : rendez le modèle plus « permissif ». Abaissez le seuil de classification pour prédire « positif » plus souvent. Vous capturerez plus de vrais positifs (TP augmente, FN diminue), mais aussi plus de faux positifs. La precision baisse.
Pour augmenter la precision : rendez le modèle plus « strict ». Relevez le seuil. Vous réduirez les fausses alarmes, mais manquerez plus de vrais positifs. Le recall baisse.
La question clé : quel est le coût relatif d’un faux négatif par rapport à un faux positif ? Si manquer un cas positif est très grave (cancer non diagnostiqué, fraude non détectée, vulnérabilité de sécurité), privilégiez le recall. Si une fausse alarme est très grave (email légitime en spam, personne innocente accusée), privilégiez la precision.
Quand prioriser le recall
| Cas d’usage | Pourquoi le recall | Conséquence d’un FN |
|---|---|---|
| Diagnostic médical | Manquer une maladie peut être fatal | Retard de traitement, aggravation, décès |
| Détection de fraude | Une fraude non détectée entraîne une perte financière | Pertes monétaires directes |
| Cybersécurité | Une attaque non détectée compromet le système | Fuite de données, rançongiciel, interruption de service |
| Contrôle qualité industriel | Un défaut non détecté atteint le client | Rappel produit, risque de sécurité, coût de réputation |
| Recherche exhaustive | Manquer un document pertinent compromet l’analyse | Décision basée sur une information incomplète |
Recall en multi-classe
Comme la precision, le recall se calcule par classe en classification multi-classe, puis s’agrège :
# Classification : chat, chien, oiseau
# Recall pour "chat" :
# TP_chat = chats correctement identifiés comme chats
# FN_chat = chats incorrectement classés comme chien ou oiseau
# Recall_chat = TP_chat / (TP_chat + FN_chat)
# Agrégation :
# Macro recall = moyenne des recalls par classe (poids égal par classe)
# Micro recall = TP global / (TP global + FN global)
# Weighted recall = moyenne pondérée par le support de chaque classe
sklearn.metrics.balanced_accuracy_score().
Recall en NLP
NER (Named Entity Recognition) : le recall mesure combien des entités présentes dans le texte ont été détectées par le modèle. Un faible recall signifie que le modèle passe à côté d’entités importantes.
ROUGE : la métrique ROUGE est fondamentalement orientée rappel. ROUGE-N recall mesure quelle proportion des n-grammes de la référence apparaît dans le résumé candidat. C’est le « recall des n-grammes ».
Recherche d’information et RAG : le recall@K mesure combien des documents pertinents figurent dans les K premiers résultats retournés. Dans un pipeline RAG (Retrieval-Augmented Generation), un faible recall au niveau du retriever signifie que les passages pertinents ne sont pas récupérés, et le LLM ne pourra pas les utiliser pour sa réponse.
Implémentation en Python
from sklearn.metrics import recall_score, classification_report
y_true = [1, 0, 1, 1, 0, 1, 0, 0, 1, 0]
y_pred = [1, 0, 1, 0, 0, 1, 1, 0, 1, 0]
# Recall binaire
rec = recall_score(y_true, y_pred)
print(f"Recall : {rec:.4f}") # 0.8000 (4 TP sur 5 vrais positifs)
# Multi-classe
y_true_mc = [0, 1, 2, 0, 1, 2, 0, 1, 2, 0]
y_pred_mc = [0, 2, 1, 0, 1, 2, 0, 1, 1, 0]
print(f"Macro recall : {recall_score(y_true_mc, y_pred_mc, average='macro'):.4f}")
print(f"Weighted recall : {recall_score(y_true_mc, y_pred_mc, average='weighted'):.4f}")
# Par classe
recalls = recall_score(y_true_mc, y_pred_mc, average=None)
print(f"Recall par classe : {recalls}")
# Rapport complet (precision + recall + F1 par classe)
print(classification_report(y_true_mc, y_pred_mc,
target_names=['Classe 0', 'Classe 1', 'Classe 2']))
# Balanced accuracy (= macro recall)
from sklearn.metrics import balanced_accuracy_score
bal_acc = balanced_accuracy_score(y_true_mc, y_pred_mc)
print(f"Balanced accuracy : {bal_acc:.4f}")
Recall vs Spécificité
Le recall (sensibilité) mesure la détection des positifs : TP / (TP + FN). La spécificité mesure la détection des négatifs : TN / (TN + FP). Les deux forment la base de la courbe ROC.
Sensibilité (Recall) = TP / (TP + FN) # "Combien de malades détectés ?"
Spécificité = TN / (TN + FP) # "Combien de sains correctement identifiés ?"
Un bon classificateur a à la fois un recall élevé (détecte les positifs) et une spécificité élevée (ne confond pas les négatifs avec des positifs). L’AUC-ROC résume cette performance sur tous les seuils.
Erreurs courantes
Rapporter le recall seul, sans la precision. Un recall de 100 % est trivial : il suffit de prédire « positif » pour tout le monde. Chaque vrai positif est détecté, mais les faux positifs sont massifs. Rapportez toujours recall et precision ensemble (ou le F1-Score).
Confondre recall et accuracy. L’accuracy considère toutes les prédictions (positives et négatives). Le recall ne concerne que les vrais positifs. Sur un dataset à 99 % de négatifs, un modèle avec 99 % d’accuracy peut avoir 0 % de recall (il ne détecte aucun positif).
Ignorer le seuil de classification. Le recall dépend directement du seuil. Baisser le seuil augmente mécaniquement le recall (et réduit la precision). Le choix du seuil doit être guidé par les coûts métier, pas par le désir d’afficher un chiffre plus haut. L’AUC-PR ou l’AUC-ROC évaluent la performance indépendamment du seuil.
Négliger le recall des classes rares. En classification multi-classe avec des classes déséquilibrées, vérifiez le recall de chaque classe individuellement. Un macro recall de 85 % peut cacher un recall de 40 % sur la classe la plus rare (et la plus importante).
Questions fréquentes sur le recall
Quelle est la différence entre recall et precision ?
Le recall demande « Parmi tous les vrais positifs, combien ai-je trouvés ? » (TP / (TP+FN)). La precision demande « Parmi mes prédictions positives, combien sont correctes ? » (TP / (TP+FP)). Le recall est sensible aux faux négatifs (cas manqués), la precision aux faux positifs (fausses alarmes). Les deux sont complémentaires et combinées dans le F1-Score. Priorisez le recall quand manquer un positif est grave, la precision quand une fausse alarme est grave.
Pourquoi le recall est-il aussi appelé « sensibilité » ?
En statistique et en médecine, la sensibilité (sensitivity) d’un test diagnostique mesure sa capacité à détecter les patients réellement malades. C’est exactement le même calcul que le recall : TP / (TP + FN). Les patients malades correctement diagnostiqués (TP) divisés par l’ensemble des patients malades (TP + FN). Le terme « sensibilité » est standard en médecine et en épidémiologie, « recall » en machine learning et en recherche d’information. Les deux désignent la même formule.
Le recall peut-il être de 100 % ?
Oui, trivialement. Un modèle qui prédit « positif » pour tous les exemples détecte nécessairement tous les vrais positifs (FN = 0), donc son recall est de 100 %. Mais sa precision sera catastrophique (beaucoup de faux positifs). Un recall de 100 % n’a de valeur que si la precision reste à un niveau acceptable. C’est pourquoi on rapporte les deux métriques ensemble.
Quand utiliser le F2-Score plutôt que le F1-Score ?
Le F2-Score donne un poids 4 fois plus élevé au recall qu’à la precision. Utilisez-le quand les faux négatifs sont beaucoup plus coûteux que les faux positifs : diagnostic de maladies graves (manquer un cancer est pire qu’une fausse alerte), détection de défauts de sécurité (un défaut non détecté peut être dangereux), surveillance de cybersécurité (une attaque manquée est pire qu’une fausse alerte). Le F1 suppose des coûts égaux. Le F2 reflète un biais vers la détection exhaustive.
Comment le recall est-il utilisé dans les métriques ROUGE ?
La métrique ROUGE est fondamentalement orientée rappel. ROUGE-N recall mesure quelle proportion des n-grammes de la référence (le résumé humain) apparaît dans le candidat (le résumé automatique). Un recall ROUGE-1 de 80 % signifie que 80 % des mots du résumé de référence sont présents dans le résumé généré. C’est logique pour le résumé : l’objectif est de couvrir les informations clés de la référence. ROUGE rapporte aussi la precision et le F1 pour une vue complète.