Precision (Précision Positive)
La precision (précision positive, ou valeur prédictive positive) est une métrique de classification qui mesure la proportion de vrais positifs parmi toutes les prédictions positives du modèle : quand le modèle dit « positif », à quelle fréquence a-t-il raison ?
La precision répond à une question concrète : « Puis-je faire confiance au modèle quand il déclenche une alerte ? » Si votre filtre anti-spam marque un email comme spam, quelle est la probabilité qu’il soit réellement du spam ? Si votre modèle de détection de fraude signale une transaction, est-ce vraiment une fraude ? Une precision élevée signifie peu de fausses alarmes. C’est la métrique à privilégier quand les faux positifs sont coûteux.
- Nom français
- Précision positive (ou valeur prédictive positive, VPP)
- Type
- Métrique d’évaluation pour la classification
- Formule
- Precision = TP / (TP + FP)
- Question posée
- « Parmi les prédictions positives, combien sont correctes ? »
- Plage
- 0 à 1. Plus haut = meilleur.
- Complémentaire de
- Rappel (Recall)
- Combinées dans
- F1-Score
- Verdict
- Métrique clé quand les faux positifs sont coûteux. Toujours rapporter avec le rappel.
La formule
Precision = TP / (TP + FP)
# TP = Vrais Positifs (le modèle dit "positif" et c'est correct)
# FP = Faux Positifs (le modèle dit "positif" mais c'est faux = fausse alarme)
Le dénominateur (TP + FP) est le nombre total de prédictions positives. Le numérateur (TP) est le nombre de prédictions positives correctes. La precision ignore complètement les négatifs (vrais et faux). Elle ne concerne que la qualité des prédictions positives du modèle.
L’intuition : la fiabilité des alertes
Imaginez un système d’alarme incendie dans un immeuble :
Precision = 100 % : chaque fois que l’alarme sonne, il y a réellement un feu. Aucune fausse alarme. Les résidents font confiance au système et évacuent immédiatement.
Precision = 50 % : une fois sur deux, l’alarme sonne pour rien (cuisson, vapeur de douche). Les résidents commencent à ignorer les alertes. Quand un vrai feu se déclare, ils risquent de ne pas évacuer.
Precision = 10 % : 9 alertes sur 10 sont de fausses alarmes. Le système a perdu toute crédibilité. Les résidents débranchent l’alarme.
Dans de nombreux systèmes réels, une faible precision (trop de fausses alarmes) est pire qu’une détection imparfaite. C’est le cas des filtres anti-spam (un email légitime en spam est plus gênant qu’un spam qui passe), des systèmes de recommandation (une suggestion non pertinente dégrade l’expérience), et des systèmes de modération de contenu (censurer du contenu légitime est problématique).
Exemples concrets
Filtre anti-spam
# Le filtre marque 120 emails comme spam
# 100 sont réellement du spam (TP)
# 20 sont des emails légitimes mal classés (FP)
Precision = 100 / (100 + 20) = 83.3 %
# 1 email sur 6 marqué comme spam est en réalité légitime
# C'est problématique : des emails importants finissent dans le dossier spam
Diagnostic médical
# Le modèle diagnostique 80 patients comme "diabétiques"
# 70 sont réellement diabétiques (TP)
# 10 sont sains mais diagnostiqués à tort (FP)
Precision = 70 / (70 + 10) = 87.5 %
# 12.5 % des patients alertés ne sont pas malades
# Conséquence : stress inutile, examens complémentaires coûteux
# Mais en médecine, le rappel (ne pas manquer de malades) est souvent plus critique
Moteur de recherche
# Le moteur retourne 50 résultats pour la requête "restaurants italiens Paris"
# 35 sont pertinents (TP)
# 15 ne le sont pas (FP) : pizzérias, restaurants grecs, articles de blog...
Precision@50 = 35 / 50 = 70 %
# En recherche d'information, on parle souvent de Precision@K
# (précision sur les K premiers résultats retournés)
Le trade-off précision-rappel
La precision et le rappel sont en tension permanente. Améliorer l’un dégrade souvent l’autre.
Pour augmenter la precision : rendez le modèle plus « prudent ». Ne prédisez « positif » que quand la confiance est très élevée (augmentez le seuil de classification). Résultat : moins de fausses alarmes (FP diminue), mais plus de cas manqués (FN augmente). Le rappel baisse.
Pour augmenter le rappel : rendez le modèle plus « sensible ». Prédisez « positif » dès qu’il y a un doute (baissez le seuil). Résultat : vous capturez plus de vrais positifs, mais aussi plus de faux positifs. La precision baisse.
Ce trade-off est fondamental et inévitable. Le F1-Score (moyenne harmonique de precision et rappel) offre un compromis équilibré. Pour les cas où un côté est plus important, le Fβ-Score permet de pondérer.
sklearn.metrics.average_precision_score().
Precision en multi-classe
Pour les problèmes à plus de 2 classes, la precision est calculée par classe (en traitant chaque classe comme une classification « cette classe vs toutes les autres »), puis agrégée :
# Classification : chat, chien, oiseau
# Precision pour "chat" :
# TP = images de chats correctement classées comme chats
# FP = images de chiens ou oiseaux incorrectement classées comme chats
# Precision_chat = TP_chat / (TP_chat + FP_chat)
# Agrégation :
# Macro precision = moyenne des precisions par classe (poids égal)
# Micro precision = TP total / (TP total + FP total) = accuracy
# Weighted precision = moyenne pondérée par le nombre d'exemples par classe
Quand prioriser la precision
| Cas d’usage | Pourquoi la precision | Conséquence d’un FP |
|---|---|---|
| Filtrage de spam | Un email légitime en spam est très gênant | L’utilisateur manque un message important |
| Modération de contenu | Censurer du contenu légitime est problématique | Atteinte à la liberté d’expression, frustration des utilisateurs |
| Recommandation produit | Une suggestion non pertinente dégrade l’expérience | L’utilisateur perd confiance dans le système |
| Justice prédictive | Une fausse accusation a des conséquences graves | Personne innocente pénalisée |
| Validation de données | Rejeter des données valides ralentit le pipeline | Perte de données exploitables |
Implémentation en Python
from sklearn.metrics import precision_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]
# Precision binaire
prec = precision_score(y_true, y_pred)
print(f"Precision : {prec:.4f}")
# 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 precision : {precision_score(y_true_mc, y_pred_mc, average='macro'):.4f}")
print(f"Weighted precision : {precision_score(y_true_mc, y_pred_mc, average='weighted'):.4f}")
# Par classe
precisions = precision_score(y_true_mc, y_pred_mc, average=None)
print(f"Precision par classe : {precisions}")
# Rapport complet
print(classification_report(y_true_mc, y_pred_mc))
Precision en NLP
En NLP, la precision a des usages spécifiques :
NER (Named Entity Recognition) : la precision mesure combien des entités prédites par le modèle (noms, lieux, organisations) sont correctes. Une faible precision signifie que le modèle « hallucine » des entités qui n’existent pas dans le texte.
Recherche d’information : Precision@K mesure combien des K premiers résultats retournés par un moteur de recherche sont pertinents. C’est la métrique de base pour évaluer les systèmes de retrieval, y compris dans les pipelines RAG (Retrieval-Augmented Generation).
BLEU score : la métrique BLEU est fondamentalement une mesure de precision sur les n-grammes : quelle proportion des n-grammes du candidat apparaît dans la référence ?
Erreurs courantes
Confondre accuracy et precision. En français, « précision » est ambigu. L’accuracy (précision globale) mesure le taux de bonnes prédictions toutes classes confondues. La precision (précision positive) ne concerne que les prédictions positives. Utilisez les termes anglais ou précisez « précision globale » vs « précision positive ».
Rapporter la precision sans le rappel. Une precision de 100 % est triviale : il suffit de ne prédire « positif » que pour le cas le plus évident. Le modèle n’a trouvé qu’un seul positif, mais il avait raison. Le rappel serait catastrophique. Rapportez toujours les deux (ou le F1).
Optimiser la precision au détriment du rappel sans justification. Augmenter le seuil de classification améliore mécaniquement la precision mais dégrade le rappel. Ce trade-off doit être piloté par les coûts métier des faux positifs et des faux négatifs, pas par le désir d’avoir un chiffre plus haut.
Questions fréquentes sur la precision
Quelle est la différence entre precision et accuracy ?
L’accuracy mesure le pourcentage de prédictions correctes sur l’ensemble du dataset (TP + TN sur le total). La precision ne concerne que les prédictions positives : parmi les exemples que le modèle a classés comme positifs, combien le sont réellement ? Sur un dataset avec 99 % de négatifs, un modèle qui prédit toujours « négatif » a 99 % d’accuracy mais une precision indéfinie (aucune prédiction positive). En anglais, « accuracy » et « precision » sont deux concepts distincts. En français, utilisez « précision globale » et « précision positive » pour éviter la confusion.
Quelle est la différence entre precision et rappel ?
La precision demande « Parmi mes prédictions positives, combien sont correctes ? » (TP / (TP+FP)). Le rappel demande « Parmi les vrais positifs, combien ai-je trouvés ? » (TP / (TP+FN)). La precision est sensible aux faux positifs (fausses alarmes). Le rappel est sensible aux faux négatifs (cas manqués). Améliorer l’une dégrade souvent l’autre : c’est le trade-off precision-rappel, résumé par le F1-Score.
Pourquoi la precision est-elle importante pour le filtrage de spam ?
Parce qu’un email légitime classé comme spam (faux positif) est plus dommageable qu’un spam qui atteint la boîte de réception (faux négatif). L’utilisateur peut manquer un email professionnel important. La precision mesure exactement la fréquence de ce type d’erreur. Un filtre avec 99 % de precision et 90 % de rappel (1 % de fausses alarmes, 10 % de spams qui passent) est généralement préférable à un filtre avec 90 % de precision et 99 % de rappel (10 % de fausses alarmes mais quasi aucun spam ne passe).
Comment améliorer la precision d’un modèle ?
Quatre approches. (1) Augmentez le seuil de classification : ne prédisez « positif » que quand la confiance est élevée (au prix du rappel). (2) Améliorez les features : des features plus discriminantes réduisent les faux positifs. (3) Utilisez un modèle plus complexe : un modèle avec plus de capacité peut mieux séparer les classes. (4) Nettoyez les labels : des labels bruités produisent des faux positifs systématiques. Vérifiez la qualité de vos données d’entraînement.
La precision peut-elle être de 100 % ?
Oui, trivialement. Un modèle qui ne prédit « positif » que pour un seul exemple (le plus évident) et a raison a une precision de 100 %. Mais son rappel sera catastrophique (il manque tous les autres positifs). Une precision de 100 % n’est intéressante que si le rappel reste à un niveau acceptable. C’est pourquoi on ne rapporte jamais la precision seule.