Chapitre 6 — Atelier 1 : pratique guidée

🎯 Objectifs d'apprentissage
  • 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 classes3
Nombre d'échantillons par classe50
Total d'échantillons150
Dimensionnalité des caractéristiques4
Valeur des caractéristiquesRéel, positif
Source : Atelier_1.pdf

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)

  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).
  2. Construire et visualiser la matrice de confusion pour chacun des modèles (et pour les deux stratégies) sur l'ensemble de test.
  3. Évaluer la performance de KNN, SVM, RL, DT et RF, en utilisant les métriques : Rappel, Précision, F-score et Taux d'erreur.
  4. Étudier l'influence du paramètre k sur la performance de KNN.
  5. Comparer la performance des cinq modèles et interpréter les résultats.

Pour le jeu de données « 20 newsgroups » :

  1. Entraîner les modèles avec la stratégie traditionnelle.
  2. Construire et visualiser la matrice de confusion.
  3. Évaluer la performance avec Rappel, Précision, F-score.
  4. 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()
✏️ Lecture de la matrice de confusion

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 kComportement observé
k = 1Frontière très découpée, épouse chaque point (sur-apprentissage)
k = 3Frontière plus lisse, bon compromis
k = 5Frontière encore plus lisse
k = 7Frontière globalement lissée
k = 95Frontiè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.

⚠️ Attention — biais du jeu de données

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.

📌 À retenir
  • 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.
🎯 À l'examen
  1. Décrire les dimensions de la base Iris utilisée dans l'Atelier 1.
  2. Pourquoi la validation croisée est-elle préférée au simple Hold-out pour comparer plusieurs modèles ?
  3. Que se passe-t-il si on augmente k de 1 à 95 dans KNN sur Iris ?
  4. Sur la base 20 newsgroups, pourquoi KNN est-il généralement moins performant que la SVM ?