98 %, est-ce une bonne note ?
Dans une usine de pièces automobiles, une caméra photographie chaque pièce. Un modèle dit si elle est défectueuse.
Le fournisseur annonce « 98 % d’exactitude ». Or seulement 2 pièces sur 100 sont défectueuses. Un modèle qui répond toujours « pièce conforme » obtient lui aussi 98 %. Et il ne trouve aucune pièce défectueuse.
Pour juger ce chiffre, il faut savoir comment il est calculé.
À la fin de cette leçon
Remarque
Je peux calculer l’exactitude d’un modèle à partir d’un tableau de résultats.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Exactitude | la part des prédictions justes | 45 sur 50, soit 90 % |
| Faux positif | le modèle dit oui, la réalité est non | |
| Faux négatif | le modèle dit non, la réalité est oui | |
| Classe rare | une réponse qui arrive peu souvent | pièce défectueuse |
| Matrice de confusion | le tableau des quatre résultats possibles |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
L’exactitude, ce sont les justes sur le total
Placez chaque prédiction à côté de la vraie réponse du jeu de test. Comptez celles qui correspondent.
L’exactitude est ce nombre divisé par le total, multiplié par 100.
Avec 8 justes sur 10 : 8 divisé par 10 donne 0,8. Multiplié par 100, cela fait 80 %.
Dix pièces : prédiction et réalité
| Pièce | Prédiction | Réalité | Juste ? |
|---|---|---|---|
| 1 | Conforme | Conforme | Oui |
| 2 | Défectueuse | Défectueuse | Oui |
| 3 | Conforme | Conforme | Oui |
| 4 | Conforme | Défectueuse | Non, faux négatif |
| 5 | Conforme | Conforme | Oui |
| 6 | Défectueuse | Conforme | Non, faux positif |
| 7 à 10 | Conforme | Conforme | 4 justes de plus |
| Total | 8 sur 10, soit 80 % |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Calculez l’exactitude en Python
# Dix pièces du jeu de test. True : la pièce est défectueuse.
predites = [False, True, False, False, False, True, False, False, False, False]
reelles = [False, True, False, True, False, False, False, False, False, False]
justes = 0
for i in range(len(reelles)):
if predites[i] == reelles[i]:
justes = justes + 1
exactitude = justes * 100 / len(reelles)
print("Justes :", justes, "sur", len(reelles))
print("Exactitude :", exactitude, "%")
# Mettez la quatrième valeur de predites à True, puis relancez.
# Que devient l'exactitude ?
Deux erreurs qui ne coûtent pas pareil
Une réponse fausse est de deux sortes.
Un faux positif dit « défectueuse » pour une bonne pièce. La pièce part au rebut : environ 15 € perdus.
Un faux négatif dit « conforme » pour une pièce défectueuse. Elle part chez le constructeur, puis dans une voiture. Le coût peut aller jusqu’au rappel de véhicules.
L’exactitude compte les deux de la même façon.
La matrice de confusion
| Prédiction | Réalité | Nom | Juste ? |
|---|---|---|---|
| Défectueuse | Défectueuse | Vrai positif | Oui |
| Conforme | Conforme | Vrai négatif | Oui |
| Défectueuse | Conforme | Faux positif | Non |
| Conforme | Défectueuse | Faux négatif | Non |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une erreur fréquente
Attention
Beaucoup pensent qu’une forte exactitude prouve qu’un modèle est bon. Ce n’est pas vrai quand ce qu’on cherche est rare. Avec 2 pièces défectueuses sur 100, répondre toujours « conforme » donne 98 %. Pour une classe rare, comptez aussi les faux négatifs.
Deux modèles, 1 000 pièces, 20 défectueuses
| Modèle | Justes | Exactitude | Défectueuses trouvées |
|---|---|---|---|
| Répond toujours « conforme » | 980 | 98 % | 0 sur 20 |
| Modèle entraîné | 965 | 96,5 % | 17 sur 20 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.