01 75 60 34 00 | conseil@ensae.fr | Prenez RDV |

Machine learning : bagging, gradient boosting, SVM avec Python

Prochaine session 12 et 13 nov. 2026 Session garantie
S'inscrire
Voir les autres sessions
Machine learning : bagging, gradient boosting, SVM avec Python

Objectifs pédagogiques

  • Connaître et savoir mettre en œuvre les méthodes d’agrégation en régression et classification supervisée : bagging (random forest) et gradient boosting
  • Connaître et savoir mettre en œuvre la méthode SVM en classification supervisée
  • Savoir gérer empiriquement le risque de sur-apprentissage

Programme détaillé

Rappels sur les bases du machine learning 1h

Méthodes d’agrégation – bagging 3h

  • Rappels sur les arbres de régression et de décision (CART)
  • Bagging
  • Random forest
  • Importance des variables
  • Applications sur cas pratiques

Méthodes d’agrégation – gradient boosting 3h

  • Algorithme AdaBoost
  • Principe du gradient boosting
  • Quelques fonctions de coût classiques
  • Applications sur cas pratiques

SVM 3h

  • Cas linéairement séparable
  • Ajout de variables ressort (slack variables)
  • Astuce du noyau
  • Applications sur cas pratiques

Introduction aux réseaux de neurones 2h

  • Neurone formel
  • Perceptron multicouche (MLP)
  • Fonctions d’activation

Public visé

Data analysts, data scientists

Prérequis

Approche pédagogique

Moyens pédagogiques
Exposé théorique de concepts Applications pratiques sur ordinateur Échanges sur les pratiques et expériences des participants Temps de questions / réponses Exercices, quiz, etc.
Méthodes pédagogiques
Méthode expositive Méthode active
Satisfaction globale
★★★★★ ★★★★★
4,5/5

Calculés à partir de 10 avis recueillis depuis 06/12/2023, lors de 4 sessions de cette formation.

Contenu
★★★★★ ★★★★★ 4,5/5
Durée et rythme
★★★★★ ★★★★★ 4,2/5
Formateur
★★★★★ ★★★★★ 4,6/5
Supports et ressources
★★★★★ ★★★★★ 4,2/5

Forêts aléatoires, gradient boosting, SVM : quelle méthode pour des données tabulaires ?

Sur les images, le son ou le texte, le deep learning l’emporte nettement. Sur les données tabulaires, une ligne par client ou par contrat et une colonne par variable, c’est-à-dire l’essentiel des données d’entreprise, la hiérarchie est différente : les ensembles d’arbres y tiennent la corde depuis une quinzaine d’années.

Ce que disent les compétitions et les benchmarks

L’article qui présente la bibliothèque XGBoost (Chen et Guestrin, conférence KDD 2016) relève que, parmi les 29 solutions gagnantes de compétitions Kaggle publiées en 2015 sur le blog de la plateforme, 17 utilisaient XGBoost. En 2022, Léo Grinsztajn, Edouard Oyallon et Gaël Varoquaux (Inria) comparent arbres et réseaux de neurones sur 45 jeux de données tabulaires de taille moyenne, autour de 10 000 observations : forêts aléatoires et gradient boosting restent les meilleurs. Parmi leurs explications, les réseaux de neurones résistent mal aux variables non informatives et peinent à apprendre des fonctions irrégulières, faites de seuils et de ruptures, que les arbres capturent naturellement.

Le débat n’est pas clos : en janvier 2025, un article de Nature présente TabPFN, un modèle pré-entraîné qui dépasse le gradient boosting sur des jeux de moins de 10 000 observations. Ces modèles de fondation tabulaires ne sont pas traités dans cette formation.

Comparer les méthodes par validation croisée

Aucune méthode ne gagne partout : la seule façon de trancher sur un jeu de données est de comparer par validation croisée. Sur un jeu classique de 569 tumeurs décrites par 30 variables :

from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import HistGradientBoostingClassifier, RandomForestClassifier
from sklearn.model_selection import cross_val_score
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC

X, y = load_breast_cancer(return_X_y=True)
modeles = {
    "forêt aléatoire": RandomForestClassifier(random_state=0),
    "gradient boosting": HistGradientBoostingClassifier(random_state=0),
    "SVM brut": SVC(),
    "SVM standardisé": make_pipeline(StandardScaler(), SVC()),
}
for nom, modele in modeles.items():
    print(nom, cross_val_score(modele, X, y, cv=5).mean().round(3))
# forêt aléatoire 0.963 · gradient boosting 0.965 · SVM brut 0.912 · SVM standardisé 0.974

Ici, le SVM fait même un peu mieux que les ensembles, à une condition : standardiser les variables. Le SVM repose sur des distances entre observations, et une variable mesurée en centaines (la surface d’une tumeur) écrase une variable mesurée en dixièmes. Placer la standardisation dans un Pipeline garantit qu’elle est recalculée sur les seules données d’apprentissage de chaque pli. Les arbres, eux, ne dépendent que de l’ordre des valeurs : l’échelle ne change rien.

Le gradient boosting de scikit-learn

HistGradientBoostingClassifier, inspiré de la bibliothèque LightGBM, regroupe chaque variable en au plus 255 intervalles avant de chercher les découpages, ce qui le rend rapide sur de gros volumes, et il accepte les valeurs manquantes sans imputation préalable. XGBoost et LightGBM restent des bibliothèques séparées, très utilisées en compétition.

Les bases (validation croisée, régression pénalisée, arbres CART) sont l’objet des Fondamentaux du machine learning avec Python ; les réseaux de neurones, introduits en fin de programme, sont approfondis dans Les fondamentaux du Deep learning avec Python.