Aller au contenu principal

Matrice de confusion, précision et rappel

Ce que ce chapitre apporte 5 points
  • Dire pourquoi l'exactitude ne mesure rien sur des classes déséquilibrées.
  • Lire une matrice de confusion, nommer ses quatre cases, et distinguer précision et rappel par ce que chacune ignore.
  • Expliquer pourquoi le seuil de décision n'est pas une propriété du modèle, et le fixer à partir du coût des erreurs.
  • Lire une courbe ROC (receiver operating characteristic) et son aire, et choisir entre elle et la courbe précision-rappel selon le déséquilibre.
  • Vérifier qu'un score annonce la bonne fréquence.
La coopérative de Vérelles dispose désormais d'un modèle, celui du chapitre précédent, qui annonce pour chaque parcelle le risque que la rouille, une maladie du blé, la touche. Il a raison sur 93 parcelles sur cent. Est-ce bon ? Et à partir de quel risque traiter, sachant qu'un traitement inutile coûte et qu'une récolte perdue coûte bien davantage ? La matrice de confusion, la précision et le rappel remplacent le taux de réussite, qui ne mesure rien sur des classes déséquilibrées : un modèle qui a raison 93 fois sur cent peut être excellent ou complètement inutile. Ce chapitre montre pourquoi, présente les quatre nombres qui remplacent ce chiffre unique, et défend une idée qui surprend : le seuil qui transforme un score en décision n'appartient pas au modèle. C'est un choix, il dépend du coût des deux erreurs, et le laisser à sa valeur par défaut coûte ici près du triple.

L'exactitude ne mesure rien

Le modèle qui ne fait rien obtient 86 %
Sur des relevés où 14 % des parcelles sont touchées, un modèle qui répond toujours « saine », sans regarder quoi que ce soit, obtient 86 % d'exactitude.
Aucun modèle utile n'a le droit d'être comparé à autre chose que ce chiffre. Annoncer « 88 % de réussite » sans préciser le taux de base revient à ne rien annoncer du tout, et c'est pourtant la façon dont la plupart des résultats sont présentés.
Le problème est structurel : l'exactitude additionne les deux erreurs comme si elles étaient équivalentes, alors qu'elles ne le sont jamais. Manquer une parcelle touchée et en traiter une saine n'ont ni le même coût, ni les mêmes conséquences, ni la même fréquence.
La matrice de confusion

Quatre nombres, et non un seul :

déclaré positifdéclaré négatif
vraiment positifvrais positifs (VP)manqués (FN)
vraiment négatiffausses alertes (FP)vrais négatifs (VN)

Les deux erreurs portent des noms distincts parce qu'elles sont des choses distinctes. Les confondre est l'erreur d'analyse la plus fréquente du domaine.

Vérification rapideon peut se reprendre

Sur un problème où 4 % des cas sont positifs, un modèle affiche 96 % d'exactitude. Cela signifie…

Le seuil, et tout ce qui en dépend

Un classifieur ne rend pas une classe : il rend un score. Le transformer en décision demande un seuil. La figure ci-dessous laisse le déplacer.

score rendu par le modèle00,250,50,751parcelle touchéeparcelle saineseuil 0,5déclarés positifs →ce que la décision produitdéclaréparcelle touchéeparcelle saine6vrais positifs6manqués4fausses alertes44vrais négatifsvraiment 12vraiment 48courbe ROC, aire 0,886fausses alertesrappel en ordonnée
précision 0,6rappel 0,5F1 0,545exactitude 0,833

6 cas manqués et 4 fausses alertes. Baisser le seuil échange des manqués contre des fausses alertes, jamais l'inverse.

Soixante parcelles, dont douze réellement touchées. Descendre le seuil de 0,50 à 0,10 fait passer le rappel de 0,500 à 0,833 et la précision de 0,600 à 0,526 : six manqués deviennent deux, au prix de cinq fausses alertes de plus. Le modèle n'a pas changé d'un iota ; seule la décision a changé.
À manipuler
Descendre le curseur du seuil de 0,50 à 0,10, et lire sous la matrice le rappel et la précision : le rappel passe de 0,500 à 0,833, la précision de 0,600 à 0,526. Compter les cases : six parcelles touchées manquées deviennent deux, au prix de cinq traitements inutiles de plus. Constater que les scores n'ont pas bougé : seule la décision a changé.

Ce que le curseur démontre.

Le modèle est fixe, la décision ne l'est pas. Les soixante scores ne bougent jamais. Ce qui bouge est la barre, et avec elle les quatre cases.
Les deux erreurs s'échangent. Baisser le seuil convertit des manqués en fausses alertes, jamais l'inverse. Il n'existe aucune position qui améliore les deux à la fois, et c'est pourquoi il faut savoir laquelle des deux coûte le plus cher.
Le point glisse sur une courbe fixe. Sur la courbe ROC, déplacer le seuil ne fait que se déplacer le long d'un tracé que le modèle a fixé une fois pour toutes. Changer de seuil ne rend pas le modèle meilleur ; changer de modèle déplace la courbe entière.

Précision et rappel

Précision =VPVP+FP= \dfrac{VP}{VP + FP} : parmi les cas déclarés positifs, quelle part l'est vraiment. Elle répond à « quand il sonne, a-t-il raison ».

Rappel =VPVP+FN= \dfrac{VP}{VP + FN} : parmi les positifs réels, quelle part a été retrouvée. Il répond à « en laisse-t-il passer ».

F1 est leur moyenne harmonique, 2⋅preˊcision⋅rappelpreˊcision+rappel\dfrac{2 \cdot \text{précision} \cdot \text{rappel}}{\text{précision} + \text{rappel}}, basse dès que l'une des deux est basse.

Chacune ignore une case, et ce n'est pas la même
La précision ne regarde jamais les manqués. Un modèle qui ne signale qu'un seul cas, et qui a raison, affiche une précision de 1,000 tout en laissant passer tout le reste.
Le rappel ne regarde jamais les fausses alertes. Un modèle qui déclare tout positif affiche un rappel de 1,000 tout en étant parfaitement inutile.
Chacune prise seule se truque en une ligne. C'est pour cela qu'on les rapporte ensemble, avec le seuil auquel elles ont été mesurées, et qu'un F1 seul est déjà une information appauvrie.
Aucune des deux ne regarde les vrais négatifs, qui sont pourtant l'écrasante majorité des cas. C'est délibéré : sur un problème déséquilibré, cette case écrase tout et c'est elle qui rend l'exactitude trompeuse.
Vérification rapideon peut se reprendre

1.Que ne regarde jamais la précision ?

2.Déplacer le seuil de décision…

Un seuil par défaut peut tout annuler

score rendu par le modèle00,250,50,751parcelle touchéeparcelle saineseuil 0,5déclarés positifs →ce que la décision produitdéclaréparcelle touchéeparcelle saine0vrais positifs12manqués0fausses alertes48vrais négatifsvraiment 12vraiment 48courbe ROC, aire 0,809fausses alertesrappel en ordonnée
précision indéfinirappel 0F1 indéfiniexactitude 0,8

Aucun cas n'est déclaré parcelle touchée : le modèle ne sert plus à rien, et son exactitude vaut pourtant 0,8.

Les mêmes soixante parcelles, notées par un modèle plus faible qui n'exploite qu'une colonne. Ses scores ne dépassent jamais 0,450 : au seuil par défaut de 0,50 il ne déclare rien du tout, sa précision n'est même pas définie, et son exactitude atteint pourtant sa valeur maximale de 0,800. Descendre le seuil à 0,15 lui rend un rappel de 0,833.
L'exactitude est maximale quand le modèle ne sert à rien
Cette figure est le cas le plus fréquent en pratique, et le plus mal diagnostiqué.
Le modèle sait classer : son aire sous la courbe ROC vaut 0,809, ce qui est loin d'être négligeable. Mais ses scores sont tassés entre 0,028 et 0,450, si bien qu'au seuil par défaut de 0,50 aucune parcelle ne franchit la barre. Zéro vrai positif, zéro fausse alerte, douze manqués.
Et l'exactitude, à ce moment précis, vaut 0,800, son maximum sur toute la plage du seuil. Quiconque optimise l'exactitude choisira donc exactement le réglage qui rend le modèle inerte.
La cause est presque toujours la même : sur des classes déséquilibrées, un modèle entraîné sans précaution produit des scores écrasés vers zéro. Le remède n'est pas de réentraîner, c'est de choisir le seuil.

L'exactitude, en chiffres

main.py
Sortie
>_ Prêt à exécuter…

La courbe ROC, et ce qu'elle ne voit pas

Courbe ROC et son aire

En faisant varier le seuil de 1 à 0, porter en abscisse le taux de fausses alertes FPFP+VN\frac{FP}{FP+VN} et en ordonnée le rappel VPVP+FN\frac{VP}{VP+FN}.

L'aire sous la courbe a une interprétation exacte : c'est la probabilité qu'un positif tiré au hasard reçoive un score supérieur à celui d'un négatif tiré au hasard.

Elle vaut 0,5 pour un modèle qui classe au hasard et 1 pour un modèle qui sépare parfaitement.

main.py
Sortie
>_ Prêt à exécuter…
L'aire sous la ROC est aveugle au déséquilibre
Ce n'est pas un défaut de calcul, c'est sa définition. Le taux de fausses alertes rapporte les FP au nombre de négatifs réels, qui sont très nombreux. Cent fausses alertes sur dix mille négatifs donnent un taux de 0,01, visuellement négligeable, alors qu'elles peuvent noyer les dix vrais positifs.
La précision, elle, rapporte les VP à ce qui a été déclaré positif, et voit donc immédiatement ce naufrage. Le tableau le mesure : quand la part de parcelles touchées passe de 14 % à 1,9 %, l'aire ne bouge presque pas alors que la précision est divisée par près de trois.
La règle qui en découle est nette. Sur des classes équilibrées, la ROC convient. Sur des classes fortement déséquilibrées, elle donne une impression flatteuse et il faut regarder la courbe précision-rappel, dont le plancher est le taux de base lui-même.
Vérification rapideon peut se reprendre

Pourquoi préférer la courbe précision-rappel quand les positifs sont rares ?

Le coût des erreurs décide du seuil

main.py
Sortie
>_ Prêt à exécuter…

Le seuil est une décision de gestion, pas de modélisation. Le même modèle, les mêmes scores, les mêmes données. Seul change le rapport entre le coût d'une parcelle touchée manquée et celui d'un traitement inutile, et le seuil optimal passe de 0,03 à 0,67.
Le seuil théorique se calcule d'ailleurs : pour un modèle bien calibré, il vaut cFPcFP+cFN\dfrac{c_{FP}}{c_{FP} + c_{FN}}, soit 1/21=0,0481/21 = 0{,}048 ici. La valeur mesurée, 0,03, en est proche, et l'écart mesure exactement le défaut de calibration.
Le seuil par défaut de 0,50 coûte 2,7 fois le minimum. Ce n'est pas un réglage fin : c'est presque le triple, obtenu en ne se posant pas la question.
Personne dans une équipe de modélisation ne connaît le rapport de coûts. Il faut aller le demander, et c'est une conversation, pas un calcul.

Vérification rapideon peut se reprendre

1.Une parcelle touchée et manquée coûte vingt fois un traitement inutile. Quel seuil viser pour un modèle calibré ?

2.Quand la calibration d'un score est-elle indispensable ?

La calibration

Un modèle calibré

Un score est calibré si, parmi tous les cas auxquels il attribue la valeur pp, la proportion réellement positive vaut pp.

On le vérifie en regroupant les cas par tranche de score et en comparant, pour chaque tranche, le score moyen annoncé à la fréquence observée. Un modèle calibré place ses points sur la diagonale.

main.py
Sortie
>_ Prêt à exécuter…
Quand la calibration compte, et quand elle ne compte pas
Elle ne compte pas si l'on ne veut qu'un classement : trier les parcelles de la plus à la moins suspecte, traiter les vingt premières. Toute transformation croissante des scores donne le même ordre, donc la même aire sous la ROC.
Elle compte dès que le score est interprété comme une probabilité. Multiplier un score par un montant pour obtenir une perte attendue, additionner des risques, ou fixer un seuil à partir d'un rapport de coûts : ces trois usages sont faux si le score ment.
Le seuil théorique calculé plus haut, 1/211/21, ne vaut d'ailleurs que pour un modèle calibré, et l'écart avec le seuil mesuré vient précisément de là.
Une calibration se corrige après coup, sans retoucher le modèle, en ajustant une fonction croissante des scores sur un jeu réservé. Comme le classement est préservé, l'aire sous la ROC ne change pas d'un iota.

Mettre en pratique

Une matrice de confusion tient en quatre nombres, et tout ce que l'on dit d'un classifieur en découle. Les calculer une fois montre pourquoi l'exactitude ne mesure rien.

Les quatre cases, et ce qu'on en tire

  • 1.

    Sur 10 000 individus dont 100 positifs, un modèle trouve 80 vrais positifs, 20 faux négatifs, 400 faux positifs et 9 500 vrais négatifs. Quelle est son exactitude, en pour cent ?

  • 2.

    Quelle est sa précision, en pour cent ?

  • 3.

    Quel est son rappel, en pour cent ?

  • 4.

    Quel serait le score d'exactitude, en pour cent, d'un modèle qui répondrait toujours négatif ?

  • 5.

    Quel serait le rappel de ce modèle, en pour cent ?

Les deux dernières réponses forment l'argument entier du chapitre. Un modèle inutile obtient une exactitude de 99 %, supérieure aux 95,8 % du modèle qui travaille. L'exactitude ne mesure donc rien sur des classes déséquilibrées : elle mesure la proportion de la classe majoritaire.

Le seuil n'appartient pas au modèle. Un classifieur probabiliste rend une probabilité, pas une décision. C'est le seuil qui transforme l'une en l'autre, et ce seuil se choisit selon le coût des deux erreurs, jamais par défaut à un demi.
Un dépistage préfère un rappel élevé, quitte à multiplier les fausses alertes. Un filtre anti-pourriel préfère une précision élevée, quitte à laisser passer des messages indésirables. Le même modèle sert les deux, avec deux seuils différents.

Le modèle de rouille de la coopérative a raison sur 93 parcelles de test sur cent au seuil de 0,50. Faut-il garder ce seuil, ou passer à 0,10 ?

Sur 400 parcelles de test, dont 40 touchées par la rouille, le modèle donne :

SeuilTouchées trouvéesTouchées manquéesSaines traitées pour rienSaines laissées
0,50221810350
0,1036470290

Le service agronomique estime qu'une parcelle touchée et non traitée coûte douze fois plus qu'un traitement inutile.

Par où commencer ? Calculer l'exactitude aux deux seuils, puis le coût total des erreurs, et comparer ce que chacun conseille.

Vérification rapideon peut se reprendre

Pourquoi compter les coûts plutôt que de comparer les exactitudes ?

Le corrigé
  1. Calculer l'exactitude. Au seuil 0,50 : (22 + 350) / 400 = 93 %. Au seuil 0,10 : (36 + 290) / 400 = 81,5 %. L'exactitude conseille de garder 0,50.
  2. Lire la précision et le rappel. À 0,50, le modèle a raison 22 fois sur 32 quand il conseille de traiter (précision 0,69), mais ne trouve que 22 parcelles touchées sur 40 (rappel 0,55). À 0,10, sa précision tombe à 36 / 106 ≈ 0,34 et son rappel monte à 0,90.
  3. Calculer le coût des erreurs. En prenant un traitement inutile pour unité : à 0,50, 18 × 12 + 10 = 226 ; à 0,10, 4 × 12 + 70 = 118.
  4. Choisir. Passer à 0,10 : le coût est presque divisé par deux, alors que l'exactitude a baissé de 11,5 points.
  5. Vérifier par le seuil théorique. Pour un modèle calibré, le meilleur seuil vaut 1/(1+12)≈0,0771 / (1 + 12) \approx 0{,}077 : le seuil de 0,10 en est proche, celui de 0,50 très loin.
Faut-il rapporter l'aire sous la courbe ROC ou la courbe précision-rappel ?

Par où commencer ? Regarder la part de positifs dans les données : c'est elle qui décide.

Le corrigé
  1. Sur des classes à peu près équilibrées, les deux racontent la même chose, et la ROC est plus lisible.
  2. Sur des classes fortement déséquilibrées, la ROC flatte. Le taux de fausses alertes rapporte les FP au nombre de négatifs, qui est immense : cent fausses alertes sur dix mille négatifs donnent 0,01, alors qu'elles noient dix vrais positifs.
  3. Mesurer l'écart. Le chapitre le fait : quand la part de positifs passe de 14 % à 1,9 %, l'aire sous la ROC descend de 0,879 à 0,862, tandis que la précision au rappel 0,80 est divisée par près de trois.
  4. Conclure, et vérifier sur ce qui sera rapporté. Rapporter les deux, et faire porter la conclusion par la courbe précision-rappel quand les positifs sont rares : c'est la seule des deux qui voit le naufrage.
Le modèle de détection de fuites d'une compagnie d'eau a raison sur 96 tronçons sur cent au seuil de 0,50. Faut-il garder ce seuil, ou passer à 0,20 ?

Sur 500 tronçons de canalisation, dont 25 fuient, le modèle donne :

SeuilFuites trouvéesFuites manquéesTronçons sains inspectés pour rienTronçons sains laissés
0,5010155470
0,2021445430

La compagnie estime qu'une fuite non détectée coûte huit fois plus qu'une inspection inutile.

Par où commencer ? Calculer l'exactitude aux deux seuils, puis le coût total des erreurs.

Le corrigé
  1. Calculer l'exactitude. Au seuil 0,50 : (10 + 470) / 500 = 96 %. Au seuil 0,20 : (21 + 430) / 500 = 90,2 %. L'exactitude conseille de garder 0,50.
  2. Lire la précision et le rappel. À 0,50, précision 10 / 15 ≈ 0,67 et rappel 10 / 25 = 0,40. À 0,20, précision 21 / 66 ≈ 0,32 et rappel 0,84.
  3. Calculer le coût des erreurs. À 0,50, 15 × 8 + 5 = 125 ; à 0,20, 4 × 8 + 45 = 77.
  4. Choisir. Passer à 0,20, qui coûte 38 % de moins.
  5. Vérifier par le seuil théorique. 1/(1+8)≈0,111 / (1 + 8) \approx 0{,}11. Comme dans le cas précédent, l'exactitude conseille le mauvais seuil, parce qu'elle ignore que les deux erreurs n'ont pas le même prix ; seul le rapport des coûts change le seuil visé.

Chapitre révisé en novembre 2026 · Une erreur dans ce chapitre ?

Dans la bibliothèque d'exercices