← Retour au cours
▶ Aperçu gratuit · Leçon offerte

Leçon 2 — Modèles supervisés : régression, classification, SVM, Random Forest, Gradient Boosting

⏱ 60 min · 🎬 Lecon · 🏆 20 XP
🎬
Vidéo en production
Notre équipe pédagogique tourne actuellement cette leçon avec un·e formateur·rice expert·e. Le contenu textuel ci-dessous est complet et utilisable dès maintenant.

Leçon 2 — Modèles supervisés scikit-learn

Tour d'horizon des familles : linéaires, kernel, arbres et ensembles.

Objectifs de la leçon

  • Distinguer régression vs classification et choisir la métrique appropriée
  • Maîtriser les modèles linéaires régularisés (Lasso L1, Ridge L2, ElasticNet) et leur usage en sélection de features
  • Comprendre le SVM avec kernels (linear, RBF, polynomial) et le rôle de C et gamma
  • Configurer un Random Forest et un Gradient Boosting avec des hyperparamètres raisonnables
  • Interpréter feature_importances_ et identifier les biais (bias toward high cardinality)

1. Régression linéaire et régularisation

La régression linéaire ordinaire (OLS) minimise la somme des carrés résiduels. Quand le nombre de features p approche ou dépasse le nombre d'observations n, ou en cas de multicolinéarité, la solution explose. La régularisation ajoute une pénalité sur la norme du vecteur de coefficients.

ModèlePénalitéEffetHyperparamètre
LinearRegressionAucuneOLS pure, sensible à la multicolinéarité
RidgeL2 (carré des coefs)Réduit les coefs sans les annuleralpha
LassoL1 (valeur absolue)Sélection de features : annule les coefs non informatifsalpha
ElasticNetL1 + L2 combinéesCompromis Ridge/Lasso, gère mieux les groupes corrélésalpha, l1_ratio
Selon scikit-learn (User Guide 1.1.4) : « The Lasso is a linear model that estimates sparse coefficients. It is useful in some contexts due to its tendency to prefer solutions with fewer non-zero coefficients. »
Source : scikit-learn.org/stable/modules/linear_model.html#lasso

Code — Régression Ridge avec GridSearchCV

from sklearn.linear_model import Ridge
from sklearn.model_selection import GridSearchCV
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler

pipe = Pipeline([
    ('scaler', StandardScaler()),
    ('ridge', Ridge())
])

param_grid = {'ridge__alpha': [0.001, 0.01, 0.1, 1, 10, 100, 1000]}
grid = GridSearchCV(pipe, param_grid, cv=5, scoring='neg_mean_squared_error', n_jobs=-1)
grid.fit(X_train, y_train)
print(f"Best alpha: {grid.best_params_}, score: {-grid.best_score_:.3f}")

2. Classification — Logistic Regression et au-delà

2.1 Logistic Regression

Malgré son nom, c'est un classificateur. Modélise la probabilité d'appartenance à une classe via la fonction sigmoïde. Avec penalty='l1', équivalent au Lasso pour la classification.

Multinomial (multi_class='multinomial', solver lbfgs ou saga) pour la classification multiclasse softmax. Évitez One-vs-Rest sauf cas particulier.

2.2 SVM — Support Vector Machine

Construit l'hyperplan maximisant la marge entre classes. Avec le kernel trick, traite des frontières non-linéaires sans projeter explicitement.

KernelUsageHyperparamètres-clés
linearDonnées linéairement séparables, haute dimensionnalité (texte)C
rbf (Gaussien)Frontières non-linéaires complexes (défaut sklearn)C, gamma
polyInteractions polynomiales explicitesC, degree, gamma
sigmoidRare, équivalent à un perceptron à 2 couchesC, gamma
Régler C et gamma : C = inverse de la régularisation (grand = overfitting). gamma = inverse de la portée d'influence d'un point (grand = surapprentissage local). Toujours grid search sur une grille logarithmique : [0.001, 0.01, 0.1, 1, 10, 100].
Limite production : SVM RBF a une complexité d'entraînement O(n² × p) à O(n³ × p). Au-delà de 50 000 lignes, préférez LinearSVC, SGDClassifier ou XGBoost — l'entraînement reste tractable.

3. Random Forest — L'ensemble bagging

Construit n_estimators arbres décisionnels indépendants sur des échantillons bootstrap (tirage avec remise) et un sous-ensemble aléatoire de features (max_features). Agrège par moyenne (régression) ou vote majoritaire (classification).

3.1 Hyperparamètres essentiels

HyperparamètreEffetValeur typique
n_estimatorsNombre d'arbres — converge en variance300-1000
max_depthProfondeur max — contrôle l'overfitting10-30 ou None
min_samples_splitMin observations pour diviser un nœud2-20
max_featuresFeatures candidates par split'sqrt' (classification), 1.0 (régression)
class_weightGérer le déséquilibre classes'balanced' ou dict

Random Forest pour Credit Card Fraud Detection

from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(
    n_estimators=500,
    max_depth=20,
    min_samples_split=10,
    max_features='sqrt',
    class_weight='balanced',     # déséquilibre 0.17 % fraude
    n_jobs=-1,
    random_state=42
)
rf.fit(X_train, y_train)
print(f"Train: {rf.score(X_train, y_train):.4f}")
print(f"Test:  {rf.score(X_test, y_test):.4f}")

L'attribut rf.feature_importances_ donne l'importance Gini moyenne décroissance. Méfiance : biais en faveur des variables à haute cardinalité.

4. Gradient Boosting (sklearn natif)

Construit les arbres séquentiellement, chaque nouvel arbre corrigeant les erreurs résiduelles du précédent. Plus performant que Random Forest sur la majorité des tâches tabulaires, mais entraînement séquentiel = plus lent.

scikit-learn fournit GradientBoostingClassifier et HistGradientBoostingClassifier. HistGBM (depuis sklearn 0.21) est 10-100× plus rapide grâce à la binarisation par histogrammes — équivalent fonctionnel de LightGBM/XGBoost en pure sklearn.

Recommandation 2026 : pour de nouveaux projets tabulaires, utilisez HistGradientBoostingClassifier en baseline avant de passer à XGBoost/LightGBM/CatBoost. Performance ~équivalente et zéro dépendance externe.

5. Choisir le bon algorithme — Arbre de décision pratique

ContexteAlgorithme recommandéJustification
n < 1 000, p > n (texte vectorisé TF-IDF)LogisticRegression L1Régularisation + interprétabilité
Tabulaire, n < 100 000HistGBM ou XGBoostMeilleur compromis perf/vitesse
Tabulaire, n > 1 MLightGBMOptimisé big data, GPU support
Images, texte non vectoriséDeep Learning (voir Leçon 2-2)Représentations apprises > ML classique
Petit n, interprétabilité critiqueLogistic / Ridge + SHAPCoefficients lisibles

6. Évaluation des modèles

6.1 Métriques classification

  • Accuracy : à éviter si déséquilibre > 70/30
  • Precision / Recall / F1 : selon coût des erreurs (fraude → priorité Recall ; spam → priorité Precision)
  • ROC-AUC : qualité du ranking, insensible au seuil
  • PR-AUC (Average Precision) : préféré à ROC-AUC quand classe minoritaire < 5 %
  • Matrice de confusion : indispensable pour comprendre le type d'erreurs

6.2 Métriques régression

  • MAE : robuste aux outliers, interprétable dans l'unité de la cible
  • RMSE : pénalise davantage les grandes erreurs
  • : variance expliquée, sensible aux outliers et à la dispersion
  • MAPE : erreur relative en %, mais explose si y proche de zéro
Anti-pattern : rapporter uniquement l'accuracy sur un problème de fraude (déséquilibre 0,17 %). Un modèle qui prédit toujours "non fraude" obtient 99,83 % d'accuracy et 0 % de Recall. Toujours rapporter F1, PR-AUC ou la matrice de confusion sur la classe minoritaire.

7. Synthèse et points-clés

  • Régression : Ridge en défaut, Lasso pour la sélection de features, ElasticNet pour groupes corrélés
  • Classification linéaire : LogisticRegression L2 en défaut, L1 si sparse, multinomial > OvR
  • SVM RBF : excellent < 50 000 lignes, hyperparams C et gamma en grille log
  • Random Forest : robuste, peu sensible aux hyperparams, baseline solide
  • HistGradientBoosting : meilleur baseline tabulaire 2026 (10-100× > GradientBoostingClassifier)
  • Adapter la métrique au déséquilibre (PR-AUC, F1) et au coût des erreurs
  • Always pipeline + cross-validation

Pour aller plus loin

Continuez le parcours 🚀

Inscrivez-vous pour accéder aux 5 autres leçons + le quiz final.

Créer mon compte
🍪 Nous utilisons des cookies essentiels et, avec ton accord, des cookies analytiques. En savoir plus

⚙️ Préférences cookies

Choisis quels cookies tu acceptes — modifiable à tout moment.

🔐 Essentiels (obligatoires)Authentification, session, sécurité. Toujours actifs.
📊 Analytics anonymesMesure d'audience anonymisée — aucune donnée personnelle.
📣 MarketingPublicités ITAG pertinentes sur d'autres sites.
💬 Contactez-nous sur WhatsApp