Chapitre 6 — Atelier 1 : pratique guidée
- Appliquer les cinq algorithmes de classification sur deux jeux de données réels.
- Comparer les stratégies Hold-out et validation croisée.
- Construire et interpréter des matrices de confusion.
- Étudier l'influence de l'hyperparamètre k dans KNN.
Cet atelier, issu de Atelier_1.pdf, met en pratique les chapitres 3, 4 et 5 sur deux jeux de données standards du Machine Learning : Fisher Iris et 20 newsgroups.
6.1 — Base Fisher Iris
| Propriété | Valeur |
|---|---|
| Nombre de classes | 3 |
| Nombre d'échantillons par classe | 50 |
| Total d'échantillons | 150 |
| Dimensionnalité des caractéristiques | 4 |
| Valeur des caractéristiques | Réel, positif |
Chargement
from sklearn.datasets import load_iris
iris = load_iris()
X, y = iris.data, iris.target
Stratégies d'apprentissage
from sklearn.model_selection import train_test_split, cross_val_score
# Hold-out
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)
# Validation croisée 5-fold
scores = cross_val_score(model, X, y, cv=5)
6.2 — Base 20 newsgroups
L'ensemble de données « The 20 newsgroups » comprend environ 18 000 messages de forums répartis sur 20 sujets (informatique, sciences, sport, politique, religion, loisirs, etc.). Ces messages sont divisés en deux sous-ensembles : entraînement et test.
from sklearn.datasets import fetch_20newsgroups, fetch_20newsgroups_vectorized
# Format original
data = fetch_20newsgroups(subset='train')
# Format vectorisé prêt à l'emploi
data_vec = fetch_20newsgroups_vectorized(subset='train')
6.3 — Travail demandé (extrait de l'Atelier 1)
- Entraîner les modèles KNN, SVM, RL, DT et RF sur la base des iris de Fisher en utilisant les deux stratégies d'apprentissage (traditionnel Hold-out et validation croisée).
- Construire et visualiser la matrice de confusion pour chacun des modèles (et pour les deux stratégies) sur l'ensemble de test.
- Évaluer la performance de KNN, SVM, RL, DT et RF, en utilisant les métriques : Rappel, Précision, F-score et Taux d'erreur.
- Étudier l'influence du paramètre k sur la performance de KNN.
- Comparer la performance des cinq modèles et interpréter les résultats.
Pour le jeu de données « 20 newsgroups » :
- Entraîner les modèles avec la stratégie traditionnelle.
- Construire et visualiser la matrice de confusion.
- Évaluer la performance avec Rappel, Précision, F-score.
- Comparer et interpréter.
6.4 — Visualiser une matrice de confusion
Extrait de code Python (sklearn + matplotlib) :
import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
y_true = [2, 0, 2, 2, 0, 1]
y_pred = [0, 0, 2, 2, 0, 2]
cm = confusion_matrix(y_true, y_pred)
disp = ConfusionMatrixDisplay(confusion_matrix=cm)
disp.plot()
plt.show()
Chaque cellule (i, j) indique le nombre d'exemples de la vraie classe i prédits comme classe j. La diagonale contient les prédictions correctes. Les autres cellules contiennent les confusions.
6.5 — Étudier l'influence de k dans KNN
| Valeur de k | Comportement observé |
|---|---|
| k = 1 | Frontière très découpée, épouse chaque point (sur-apprentissage) |
| k = 3 | Frontière plus lisse, bon compromis |
| k = 5 | Frontière encore plus lisse |
| k = 7 | Frontière globalement lissée |
| k = 95 | Frontière excessivement lissée, sous-apprentissage |
6.6 — Interprétation des résultats
Sur la base Iris (données propres, bien séparables, équilibrées), la plupart des algorithmes atteignent une performance excellente (accuracy souvent supérieure à 95 %). Sur la base 20 newsgroups (données textuelles, haute dimension, déséquilibrées), la performance est plus contrastée : la SVM et la régression logistique surpassent souvent KNN, en partie à cause de la malédiction de la dimensionnalité qui pénalise KNN.
Une excellente accuracy sur Iris ne garantit pas la qualité d'un algorithme en général. Iris est un jeu « facile » : trois classes bien séparées, seulement 4 variables, 150 échantillons. Les résultats doivent être interprétés relativement au contexte, pas comme une hiérarchie universelle des algorithmes.
- Iris : 150 échantillons, 4 variables, 3 classes.
- 20 newsgroups : ~18 000 messages, 20 classes.
- La validation croisée donne une estimation plus robuste que le Hold-out.
- Dans KNN, k contrôle le compromis biais-variance.
- La matrice de confusion est l'outil universel d'évaluation en classification.
- Décrire les dimensions de la base Iris utilisée dans l'Atelier 1.
- Pourquoi la validation croisée est-elle préférée au simple Hold-out pour comparer plusieurs modèles ?
- Que se passe-t-il si on augmente k de 1 à 95 dans KNN sur Iris ?
- Sur la base 20 newsgroups, pourquoi KNN est-il généralement moins performant que la SVM ?