Huitième module du challenge #100JoursDeML, consacré à deux algorithmes classiques qui reviennent systématiquement en entretien — et qui enrichissent votre intuition du machine learning bien au-delà de leur usage direct. Chaque leçon est détaillée ci-dessous avec sa vidéo.
📥 La checklist offerte du challenge
Recevez le PDF avec les 100 leçons à cocher et suivez votre progression jour après jour.
Leçon 1 — Découverte de l'algorithme KNN
L'algorithme des k plus proches voisins (k-nearest neighbors) tient en une phrase : pour prédire une observation, regarde les k observations les plus proches dans les données d'entraînement, et prends leur vote majoritaire (classification) ou leur moyenne (régression). La « proximité » se mesure par une distance — le plus souvent la distance euclidienne (la ligne droite), parfois la distance de Manhattan (la somme des écarts par dimension).
C'est un modèle dit paresseux (lazy learning) : il n'apprend rien à l'entraînement — il mémorise les données —, tout le calcul a lieu à la prédiction. Le choix de k contrôle le compromis biais-variance vu au Module 5 : k petit = frontières irrégulières et sensibles au bruit ; k grand = frontières lisses mais moins précises.
⚠️ Point important : KNN est très sensible à l'échelle des variables — une variable en euros écrase une variable en pourcentage dans le calcul des distances. La standardisation vue au Module 4 n'est pas optionnelle ici, elle est vitale.
Leçon 2 — KNN en Python : classification et régression
Mise en pratique avec scikit-learn : KNeighborsClassifier et KNeighborsRegressor, le choix de k par validation croisée, l'impact mesuré de la standardisation, et les limites de l'algorithme — coût de prédiction élevé sur de gros volumes et fléau de la dimension (en haute dimension, tout le monde devient « loin » de tout le monde et la notion de voisin perd son sens).
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
# Le pipeline garantit que la standardisation est apprise sur le train seulement
knn = make_pipeline(StandardScaler(), KNeighborsClassifier(n_neighbors=7))
knn.fit(X_train, y_train)
Leçon 3 — Les SVM démystifiés : marge, kernel et hyperplan
Les machines à vecteurs de support (Support Vector Machines) cherchent l'hyperplan — la frontière de décision — qui sépare les classes avec la marge la plus large possible : intuitivement, la route la plus large qu'on puisse tracer entre les deux camps. Les observations qui touchent le bord de cette route sont les vecteurs de support : elles seules définissent le modèle.
Pour les données non linéairement séparables, le kernel trick (astuce du noyau) calcule les similarités comme si les données étaient projetées dans un espace de plus grande dimension — où une séparation linéaire devient possible — sans jamais effectuer la projection. Noyaux courants : linéaire, polynomial, RBF (gaussien, le couteau suisse). Deux hyperparamètres à régler par validation croisée : C (l'arbitrage entre largeur de marge et erreurs tolérées) et gamma (la portée d'influence de chaque observation).
Leçon 4 — Guide pratique SVM en Python
Toutes les étapes en moins de 20 minutes : standardisation (obligatoire, comme pour KNN), choix du noyau, réglage de C et gamma par GridSearchCV, et lecture des frontières de décision sur des exemples visuels.
from sklearn.svm import SVC
from sklearn.model_selection import GridSearchCV
svm = make_pipeline(StandardScaler(), SVC(kernel="rbf"))
grid = GridSearchCV(svm, {"svc__C": [0.1, 1, 10], "svc__gamma": ["scale", 0.1, 1]}, cv=5)
grid.fit(X_train, y_train)
print(grid.best_params_)
Leçon 5 — Construire un modèle en 5 étapes : la synthèse
Pour ancrer tout ce que vous avez appris depuis le Module 5, cette leçon déroule la méthode complète : définir le problème, préparer les données, choisir et entraîner les modèles, évaluer honnêtement, itérer. Le fil conducteur à dérouler devant un recruteur quand on vous demande « racontez-moi un projet ».
🚀 Conseil : c'est le bon moment pour un projet de milieu de challenge. Prenez un jeu de données qui vous parle, comparez régression logistique, random forest, XGBoost, KNN et SVM avec une validation croisée propre — et publiez le notebook avec #100JoursDeML.
La suite
Jusqu'ici, vos données avaient des étiquettes. Le Module 9 : le clustering explore ce qu'on peut apprendre quand elles n'en ont pas.
Références
- Cover & Hart (1967), « Nearest neighbor pattern classification », IEEE Transactions on Information Theory — l'article fondateur de KNN
- Cortes & Vapnik (1995), « Support-vector networks », Machine Learning — l'article fondateur des SVM
- Documentation scikit-learn : nearest neighbors et SVM
- Machine à vecteurs de support (Wikipédia)




