Bonjour ! Dans notre dernière leçon, nous avons appris à évaluer les modèles de classification avec des métriques puissantes comme la précision, le rappel et le score F1. Nous avons vu que toutes ces métriques reposent sur quatre résultats fondamentaux : les Vrais Positifs (TP), les Vrais Négatifs (TN), les Faux Positifs (FP) et les Faux Négatifs (FN).
Aujourd'hui, nous allons nous concentrer sur l'outil qui permet de visualiser et de synthétiser ces quatre résultats : la matrice de confusion. L'objectif de cette leçon est de vous apprendre à construire, lire et interpréter cette matrice. C'est un outil de diagnostic indispensable qui vous montrera non seulement si votre modèle se trompe, mais aussi comment il se trompe. Comprendre cela est la clé pour améliorer la performance de vos modèles.
1. Qu'est-ce qu'une Matrice de Confusion ?
Une matrice de confusion est un tableau qui résume la performance d'un modèle de classification en comparant les étiquettes réelles avec les prédictions du modèle. Son nom vient du fait qu'elle permet de voir si le modèle "confond" deux classes entre elles.
Pour une classification binaire, la matrice est un tableau 2x2. Les axes sont généralement les "Valeurs Réelles" (Actual Values) et les "Valeurs Prédites" (Predicted Values).

Comme le montre l'image ci-dessus, les quatre cases correspondent exactement aux termes que nous avons définis dans la leçon précédente :
- TP (True Positive) : Réalité = Positive, Prédiction = Positive. Le modèle a correctement identifié un cas positif. (Case en haut à gauche)
- TN (True Negative) : Réalité = Négative, Prédiction = Négative. Le modèle a correctement identifié un cas négatif. (Case en bas à droite)
- FP (False Positive) : Réalité = Négative, Prédiction = Positive. Le modèle a incorrectement prédit un cas positif (fausse alarme). (Case en haut à droite)
- FN (False Negative) : Réalité = Positive, Prédiction = Négative. Le modèle a manqué un cas positif. (Case en bas à gauche)
La diagonale (de haut en bas, de gauche à droite) représente les prédictions correctes (TP et TN). Les autres cases représentent les erreurs.
Pour bien ancrer ces définitions, l'article suivant propose des analogies simples et mémorables.
Confusion Matrix: A Clear Guide to Understanding It - DEV Community
Cet article de DEV Community explique pourquoi la matrice de confusion porte ce nom et clarifie les quatre termes de base avec des exemples faciles à comprendre.
Lisez l'introduction et la section How to Interpret. Portez une attention particulière aux exemples donnés pour chaque type de résultat (TP, TN, FP, FN). Cela vous aidera à développer une intuition solide.
2. Lire et Interpréter une Matrice de Confusion Binaire
Maintenant que la structure est claire, voyons comment passer des prédictions brutes à une matrice remplie de chiffres, et comment en extraire des informations. L'article suivant de GeeksForGeeks propose un excellent exemple pas à pas.
Understanding the Confusion Matrix in Machine Learning
Cet article détaille la construction d'une matrice de confusion à partir d'un exemple concret de reconnaissance d'images (Chien / Pas Chien).
Lisez l'introduction, puis la section Metrics based on Confusion Matrix Data. Vous y retrouverez les formules de précision et de rappel que nous connaissons déjà. Ensuite, concentrez-vous sur l'exemple Dog Image Recognition. Suivez bien comment chaque prédiction individuelle (TP, FN, etc.) est comptabilisée pour remplir la matrice 2x2.
À partir de la matrice de l'exemple "Dog Image Recognition" de l'article :
- TP = 5
- FN = 1
- FP = 1
- TN = 3
On peut recalculer les métriques que nous connaissons :
- Précision (pour la classe "Chien") :
- Interprétation : Quand le modèle prédit "Chien", il a raison dans 83% des cas.
- Rappel (pour la classe "Chien") :
- Interprétation : Le modèle a réussi à identifier 83% de toutes les vraies images de chiens.
- Exactitude :
- Interprétation : Le modèle a correctement classifié 80% de toutes les images.
La vidéo suivante de codebasics illustre ce même processus de manière très visuelle, ce qui peut grandement aider à la compréhension.
Precision, Recall, F1 score, True Positive|Deep Learning Tutorial 19 (Tensorflow2.0, Keras & Python)
Cette vidéo montre comment construire une matrice de confusion à partir des prédictions et comment lire chaque case.
Regardez la section qui explique la matrice de confusion. L'animateur prend une liste de valeurs réelles et prédites et remplit la matrice case par case, en expliquant la signification de chaque nombre. C'est une excellente visualisation du processus.
Pour une explication complète en arabe, qui couvre tous les concepts de cette leçon et de la précédente, la vidéo suivante est une excellente ressource.
Precision, Recall, F1 Score & Confusion Matrix | شرح عربي
Cette vidéo de la chaîne d'Ahmad Alseirafi explique en détail la matrice de confusion, la précision, le rappel et le score F1 en arabe, avec un exemple pratique.
Vous pouvez regarder l'intégralité de la vidéo du début à la fin pour une révision complète. La première partie introduit la matrice, puis les parties suivantes redéfinissent la précision, le rappel, le score F1, et conclut avec un exemple numérique complet.
3. Implémentation Pratique avec Scikit-learn
Scikit-learn rend la création de matrices de confusion très simple. Nous pouvons utiliser la fonction confusion_matrix du module sklearn.metrics. Pour la visualiser de manière plus lisible, nous utiliserons la bibliothèque seaborn.
L'article de GeeksForGeeks que nous avons consulté précédemment montre exactement comment faire.
Understanding the Confusion Matrix in Machine Learning
Cette section de l'article fournit le code Python pour générer et afficher une matrice de confusion.
Lisez la section Implementation. Notez l'utilisation de confusion_matrix pour calculer la matrice et de seaborn.heatmap pour l'afficher. Le paramètre annot=True est important car il affiche les chiffres dans chaque case.
Appliquons cela à notre modèle de régression logistique sur le jeu de données du cancer du sein, que nous avons utilisé dans les leçons précédentes.
# Import des bibliothèques nécessaires
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt
# 1. Charger et préparer les données
data = load_breast_cancer()
X, y = data.data, data.target
target_names = data.target_names # ['malignant', 'benign']
# 2. Séparer et mettre à l'échelle les données
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# 3. Entraîner le modèle
model = LogisticRegression(random_state=42)
model.fit(X_train_scaled, y_train)
# 4. Faire des prédictions
y_pred = model.predict(X_test_scaled)
# 5. Calculer la matrice de confusion
cm = confusion_matrix(y_test, y_pred)
print("Matrice de confusion :")
print(cm)
# 6. Visualiser la matrice de confusion
plt.figure(figsize=(8, 6))
sns.heatmap(cm, annot=True, fmt='g', cmap='Blues',
xticklabels=target_names, yticklabels=target_names)
plt.xlabel('Valeurs Prédites')
plt.ylabel('Valeurs Réelles')
plt.title('Matrice de Confusion')
plt.show()
En exécutant ce code, vous obtiendrez d'abord la matrice sous forme de tableau NumPy, puis un graphique coloré qui est beaucoup plus facile à interpréter d'un seul coup d'œil. Vous pourrez voir instantanément combien de cas "malins" ont été prédits comme "bénins" (FN), et vice-versa (FP).
4. La Matrice de Confusion pour la Classification Multi-classe
Le concept de la matrice de confusion s'étend naturellement aux problèmes avec plus de deux classes. Si vous avez N classes, la matrice devient une table N x N.

Dans une matrice multi-classe :
- La diagonale (de haut en gauche à bas à droite) contient toujours les prédictions correctes, où la classe prédite est la même que la classe réelle.
- Toutes les cellules hors de la diagonale représentent des erreurs de classification. La cellule à la ligne
iet à la colonnejvous indique le nombre de fois qu'une instance de la classe réelleia été incorrectement prédite comme étant de la classej.
C'est un outil de diagnostic extrêmement puissant. Si votre modèle a du mal à distinguer les "chiens" des "loups", vous le verrez immédiatement par un nombre élevé dans la case correspondante.
L'article de GeeksForGeeks explique également très bien cette extension.
Understanding the Confusion Matrix in Machine Learning
Cet article étend le concept de la matrice de confusion aux problèmes multi-classes, avec un exemple et du code Python.
Lisez la section Multi-class Classification pour comprendre la structure d'une matrice N x N. Ensuite, parcourez la section implementation multi-classe pour voir comment générer ce type de matrice avec Scikit-learn, en utilisant la fonction ConfusionMatrixDisplay pour une visualisation aisée.
Conclusion
La matrice de confusion est bien plus qu'un simple tableau de chiffres ; c'est une fenêtre sur les forces et les faiblesses de votre modèle de classification.
Points clés à retenir :
- La matrice de confusion organise les prédictions d'un modèle en quatre catégories pour la classification binaire : TP, TN, FP, FN.
- La diagonale principale représente toujours les classifications correctes.
- Les cases hors de la diagonale représentent les erreurs, montrant quelles classes sont confondues entre elles.
- C'est un outil essentiel pour calculer des métriques comme la précision et le rappel, et pour diagnostiquer les types d'erreurs que commet votre modèle.
- Le concept se généralise facilement aux problèmes multi-classes avec une matrice N x N.
- Scikit-learn et Seaborn permettent de générer et visualiser facilement des matrices de confusion.
Maintenant que nous maîtrisons l'évaluation des modèles de classification, nous allons explorer un nouvel algorithme dans notre prochaine leçon. Nous quitterons les modèles basés sur une fonction mathématique comme la régression logistique pour découvrir une approche totalement différente : l'algorithme des K-plus proches voisins (K-Nearest Neighbors - KNN), un modèle basé sur l'instance et la notion de "similarité".