Qu’est-ce qu’une matrice de confusion ?
Une matrice de confusion est un tableau qui compte combien d’éléments de chaque classe réelle un modèle de classification a affectés à chaque classe prédite. On l’appelle aussi matrice d’erreurs.
Comment la lire
Dans scikit-learn, chaque ligne est une classe réelle et chaque colonne est une classe prédite. La cellule située à la ligne i et à la colonne j compte les observations de la classe réelle i que le modèle a placées dans la classe j. D’autres textes inversent les axes. Vérifiez donc d’abord les étiquettes.
Les cellules de la diagonale sont des prédictions correctes. Les cellules hors diagonale sont des erreurs, et chacune montre quelle classe le modèle a confondue avec quelle autre.
Le cas binaire
Un modèle à deux classes, positive et négative, donne quatre cellules.
| Prédit positif | Prédit négatif | |
|---|---|---|
| Réel positif | vrai positif (TP) | faux négatif (FN) |
| Réel négatif | faux positif (FP) | vrai négatif (TN) |
Un faux négatif est un positif réel que le modèle a classé comme négatif. Un faux positif est un négatif réel que le modèle a classé comme positif.
Métriques issues des cellules
- Exactitude = (TP + TN) / ensemble des observations.
- Précision = TP / (TP + FP).
- Rappel = TP / (TP + FN).
- F1 = 2TP / (2TP + FP + FN).
Exemple tiré de la documentation de scikit-learn : 8 observations donnent TN = 2, FP = 1, FN = 2 et TP = 3. L’exactitude vaut 5/8 = 0,625, la précision 3/4 = 0,75, le rappel 3/5 = 0,6 et le score F1 6/9 = 0,67.
Pour plus de deux classes, calculez la précision et le rappel pour chaque classe. L’exactitude équilibrée est la moyenne des rappels de toutes les classes. Le kappa de Cohen et le coefficient de corrélation de Matthews (MCC) utilisent aussi la matrice entière. Le kappa est compris entre -1 et 1. Le MCC a un maximum de +1 et, avec plus de deux classes, son minimum est compris entre -1 et 0.
Pourquoi pas l’exactitude seule
Sur des données déséquilibrées, l’exactitude peut masquer un modèle qui ne trouve rien. La matrice montre les positifs réels et là où ils ont été classés, elle révèle donc le problème immédiatement.
Foire aux questions
- Les lignes représentent-elles la classe réelle ou la classe prédite ?
- Cela dépend de la source. Dans scikit-learn, chaque ligne est la classe réelle et chaque colonne est la classe prédite. D’autres textes inversent les axes. Lisez les étiquettes des axes avant de lire les nombres.
- Quelle est la différence entre la précision et le rappel ?
- La précision est la part des prédictions positives qui sont correctes : TP / (TP + FP). Le rappel est la part des positifs réels que le modèle trouve : TP / (TP + FN). Le rappel est aussi appelé sensibilité.
- Pourquoi l’exactitude ne suffit-elle pas pour juger un modèle ?
- L’exactitude peut être élevée pour un modèle inutile. Si 99 éléments sur 100 sont négatifs, un modèle qui prédit toujours négatif obtient 99 %. La matrice montre le problème, car chaque positif réel est un faux négatif.
- Que montre une matrice de confusion normalisée ?
- Elle montre des proportions au lieu de nombres d’éléments. Dans scikit-learn, normalize='true' divise chaque ligne par son total, de sorte que la cellule diagonale est le rappel de cette classe. normalize='pred' divise chaque colonne, et normalize='all' divise par le nombre d’observations.
Références
- sklearn-model-evaluation
- scikit-learn User Guide, 3.4 Metrics and scoring: quantifying the quality of predictions scikit-learn
- sklearn-confusion-matrix-api
- sklearn.metrics.confusion_matrix scikit-learn
- google-ml-crash-course-metrics
- Machine Learning Crash Course: Classification, accuracy, precision and recall Google for Developers
- wikipedia-confusion-matrix
- Confusion matrix Wikipedia
Ceci est une entrée de référence. TarmacView fournit des services d'inspection par drone et ne vend pas l'équipement ou les matériaux décrits dans ce glossaire.