Une Carte des Familles d'Algorithmes ML
Le machine learning va bien au-delà de la classification supervisée. Ce guide couvre chaque grande famille d'algorithmes — de l'apprentissage par renforcement au calcul évolutionnaire — avec les intuitions, les compromis et des indications pratiqués pour savoir quand chacune excelle.
Familles d'Algorithmes en un Coup d'Œil
| Famille | Signal d'Apprentissage | Cas d'Usage Clés |
|---|---|---|
| Supervisé | Exemples étiquetés (X → Y) | Classification, régression, prévision |
| Non supervisé | Pas d'étiquettes — trouver la structuré | Clustering, réduction de dimension, détection d'anomalies |
| Auto-supervisé | Pseudo-labels générés depuis les données | Modèles de langage, pré-entraînement vision |
| Apprentissage par renforcement | Récompenses de l'environnement | Robotique, jeux, optimisation de ressources |
| Évolutionnaire / Génétique | Fonction de fitness + sélection | Optimisation, recherché d'architecture, ordonnancement |
| Probabiliste / Bayésien | Distributions a priori + observations | Quantification d'incertitude, peu de données |
| Méta-apprentissage | Apprentissage à travers les tâches | Few-shot learning, AutoML |
Apprentissage Supervisé
La famille la plus déployée. Vous fournissez des données d'entraînement étiquetées ; le modèle apprend la correspondance.
Algorithmes de classification
| Algorithme | Fonctionnement | Idéal pour |
|---|---|---|
| Régression Logistique | Frontière de décision linéaire via sigmoïde | Classification binaire, baseline interprétable |
| Arbres de Décision | Divisions récursives sur les features | Règles interprétables, importance des variables |
| Random Forest | Ensemble d'arbres décorrélés (bagging) | Données tabulaires, robuste au surapprentissage |
| Gradient Boosting (XGBoost, LightGBM, CatBoost) | Arbres séquentiels corrigeant les erreurs | Compétitions sur données tabulaires, ML en production |
| SVM | Maximiser la marge entre classes | Datasets petits à moyens, espaces de haute dimension |
| k-NN | Vote majoritaire des plus proches voisins | Baselines simples, recommandation |
| Naive Bayes | Théorème de Bayes + indépendance des features | Classification de texte, filtrage de spam |
| Réseaux de Neurones | Features hiérarchiques apprises | Images, texte, audio, multimodal |
Algorithmes de régression
La plupart des algorithmes de classification ont des variantes de régression : Régression Linéaire, Ridge/Lasso, Arbre de Décision Régresseur, Random Forest Régresseur, Gradient Boosting Régresseur, SVR, k-NN Régresseur.
Insight clé : quand utiliser quoi
Données tabulaires ?
/ \
Oui Non
/ \
< 100K lignes ? Images/Texte/Audio ?
/ \ |
Oui Non Oui
/ \ |
Régression XGBoost/ Deep Learning
Logistique LightGBM (CNN, Transformer)
Random Forest (performance)
(interprétable)
Le gradient boosting (XGBoost, LightGBM, CatBoost) domine les données tabulaires. Le deep learning gagné sur les données non structurées. N'utilisez pas de réseaux de neurones sur du tabulaire sans avoir d'abord essayé le boosting.
Apprentissage Non Supervisé
Pas d'étiquettes. L'objectif est de découvrir des structurés, des patterns ou des représentations compressées.
Clustering
Regrouper les points de données similaires.
| Algorithme | Fonctionnement | Forces | Faiblesses |
|---|---|---|---|
| k-Means | Assigner les points au centroïde le plus proche, mettre à jour | Rapide, scalable | Doit spécifier k, supposé des clusters sphériques |
| DBSCAN | Basé densité — les clusters sont des régions denses | Formes arbitraires, détecte les outliers | Difficultés avec des densités variables |
| HDBSCAN | DBSCAN hiérarchique | Pas besoin de spécifier eps, densités variables | Plus lent sur très grands datasets |
| Modèles de Mélange Gaussien | Clustering souple via distributions de probabilité | Assignations probabilistes, clusters elliptiques | Doit spécifier k, peut surapprendre |
| Agglomératif | Fusion hiérarchique ascendante | Visualisation en dendrogramme, toute métrique de distance | O(n³) mémoire, ne passé pas à l'échelle |
| Clustering Spectral | Laplacien du graphe + k-Means sur les vecteurs propres | Formes de clusters complexes | Coûteux pour grand n, doit spécifier k |
from sklearn.cluster import HDBSCAN
import numpy as np
clusterer = HDBSCAN(min_cluster_size=15, min_samples=5)
labels = clusterer.fit_predict(X)
# labels == -1 signifie bruit/outlier
Réduction de Dimensionnalité
Compresser des données haute dimension en préservant la structuré.
| Algorithme | Type | Idéal pour |
|---|---|---|
| PCA | Projection linéaire | Décorrélation de features, réduction de bruit, rapide |
| t-SNE | Embedding non linéaire | Visualisation 2D/3D de clusters |
| UMAP | Embedding non linéaire | Plus rapide que t-SNE, préserve mieux la structuré globale |
| Auto-encodeurs | Compression par réseau de neurones | Représentations apprises, détection d'anomalies |
| SVD Tronquée | Linéaire (données creuses) | Données texte (LSA), systèmes de recommandation |
| ICA | Composantes indépendantes | Séparation de signaux (ex. EEG, audio) |
Détection d'Anomalies
Trouver les points de données qui ne correspondent pas au pattern normal.
| Algorithme | Approche |
|---|---|
| Isolation Forest | Partitionnement aléatoire — les anomalies sont isolées plus vite |
| Local Outlier Factor | Comparer la densité locale aux voisins |
| One-Class SVM | Apprendre une frontière autour des données normales |
| Auto-encodeurs | Erreur de reconstruction élevée = anomalie |
| Statistique | Z-score, IQR, distance de Mahalanobis |
Apprentissage Auto-Supervisé
Le modèle crée ses propres étiquettes à partir des données brutes — aucune annotation manuelle nécessaire. C'est ainsi que les modèles de fondation modernes (LLMs, vision transformers) sont pré-entraînés.
Techniques
| Technique | Domaine | Fonctionnement |
|---|---|---|
| Masked Language Modeling | NLP | Masquer des tokens, les prédire (BERT) |
| Prédiction du Token Suivant | NLP | Prédire le mot suivant (GPT) |
| Masked Image Modeling | Vision | Masquer des patches, les reconstruire (MAE) |
| Apprentissage Contrastif | Vision/Multi | Rapprocher les paires similaires, éloigner les différentes (SimCLR, CLIP) |
| DINO / DINOv2 | Vision | Auto-distillation sans étiquettes |
| JEPA | Vision | Prédire des représentations latentes, pas les pixels |
Pourquoi c'est important
Pré-entraînement auto-supervisé sur des données massives non étiquetées → fine-tuning sur un petit dataset étiqueté. C'est le paradigme dominant de l'IA moderne : pré-entraîner une fois, fine-tuner pour de nombreuses tâches.
Apprentissage par Renforcement (RL)
Un agent apprend en interagissant avec un environnement, en recevant des récompenses et en ajustant sa politique pour maximiser la récompense cumulative.
Concepts fondamentaux
┌───────────────┐
│ Environnement│
└───┬───────┬───┘
état s │ │ récompense r
▼ │
┌───────────┴───┐
│ Agent │
│ π(a|s) │──── action a ────►
└───────────────┘
| Terme | Signification |
|---|---|
| État (s) | Observation courante de l'environnement |
| Action (a) | Ce que fait l'agent |
| Récompense (r) | Signal de feedback scalaire |
| Politique (π) | Stratégie : correspondance état → action |
| Fonction de valeur V(s) | Récompense cumulative future attendue depuis l'état s |
| Fonction Q Q(s,a) | Récompense cumulative future attendue en prenant l'action a dans l'état s |
| Épisode | Un parcours complet du début à l'état terminal |
Familles d'algorithmes
Méthodes basées sur la valeur
Apprennent Q(s,a) et choisissent l'action avec le Q le plus élevé.
| Algorithme | Idée clé |
|---|---|
| Q-Learning | Off-policy, tabulaire, met à jour Q via l'équation de Bellman |
| DQN (Deep Q-Network) | Q-Learning avec approximation par réseau de neurones, expérience replay |
| Double DQN | Corrige le biais de surestimation du DQN |
| Dueling DQN | Sépare les flux de valeur et d'avantage |
| Rainbow | Combine 6 améliorations du DQN en un seul agent |
Méthodes basées sur la politique
Apprennent la politique π(a|s) directement.
| Algorithme | Idée clé |
|---|---|
| REINFORCE | Gradient de politique Monte Carlo — simple mais haute variance |
| PPO (Proximal Policy Optimization) | Objectif clippé empêchant les mises à jour destructrices. Le cheval de bataille du RL moderne |
| TRPO | Contrainte de région de confiance sur les mises à jour de politique |
| A2C / A3C | Acteur (politique) + Critique (valeur) — réduit la variance |
| SAC (Soft Actor-Critic) | RL à entropie maximale — encourage l'exploration |
Méthodes basées sur un modèle
Apprennent un modèle de l'environnement et planifient dedans.
| Algorithme | Idée clé |
|---|---|
| Dyna-Q | Alterner entre expérience réelle et expérience simulée |
| MuZero | Modèle du monde appris — a maîtrisé les Échecs, le Go, Atari sans connaître les règles |
| Dreamer (v3) | Apprendre un modèle du monde en espace latent, imaginer des trajectoires |
| MBPO | Optimisation de politique basée sur un modèle avec rollouts courts |
Applications du RL
| Domaine | Exemple |
|---|---|
| Jeux | AlphaGo, OpenAI Five (Dota 2), AlphaStar (StarCraft) |
| Robotique | Manipulation dextre, locomotion, contrôle de drones |
| Alignement des LLMs | RLHF — fine-tuning des modèles de langage avec les préférences humaines |
| Gestion de ressources | Refroidissement de datacenters (DeepMind), routage réseau |
| Finance | Optimisation de portefeuille, exécution d'ordres |
| Véhicules autonomes | Prise de décision dans un trafic complexe |
Démarrer avec le RL
import gymnasium as gym
# Problème de contrôle classique
env = gym.make("CartPole-v1")
obs, info = env.reset()
for _ in range(1000):
action = env.action_space.sample() # politique aléatoire
obs, reward, terminated, truncated, info = env.step(action)
if terminated or truncated:
obs, info = env.reset()
Bibliothèques clés : Gymnasium (environnements), Stable-Baselines3 (algorithmes), CleanRL (implémentations mono-fichier), RLlib (RL distribué scalable), TorchRL (natif PyTorch).
Algorithmes Évolutionnaires & Génétiques
Inspirés de l'évolution biologique : population → évaluation du fitness → sélection → croisement → mutation → répéter.
Concepts fondamentaux
Génération 0 : [A] [B] [C] [D] [E] ← population aléatoire
↓ évaluer le fitness
Fitness : 7 3 9 5 8
↓ sélection (les plus aptes survivent)
Parents : [A] [C] [E]
↓ croisement + mutation
Génération 1 : [AC'] [CE'] [CA'] [EA'] [EC']
↓ répéter...
Variantes d'algorithmes
| Algorithme | Particularité |
|---|---|
| Algorithme Génétique (AG) | Encodage binaire/discret, croisement + mutation |
| Programmation Génétique (PG) | Fait évoluer des programmés/arbres plutôt que des vecteurs de taille fixé |
| Stratégies d'Évolution (ES) | Paramètres continus, perturbations gaussiennes, pas de croisement |
| CMA-ES | Adaptation de la Matrice de Covariance — adapté la distribution de recherche. Référence pour l'optimisation continue |
| NEAT | Neuroévolution — fait évoluer la topologie et les poids des réseaux de neurones |
| Évolution Différentielle (DE) | Mutation via différences vectorielles entre membres de la population |
| Optimisation par Essaim Particulaire (PSO) | Intelligence en essaim — les particules suivent le meilleur personnel et global |
| Optimisation par Colonies de Fourmis | Optimisation de chemin basée sur les phéromones (problèmes combinatoires) |
Quand l'évolutionnaire bat la descente de gradient
- Objectifs non différentiables — structurés discrètes, problèmes combinatoires
- Paysages multimodaux — nombreux optima locaux où les méthodes de gradient se bloquent
- Recherche d'architecture — faire évoluer les structurés de réseaux de neurones (NAS)
- IA de jeux — faire évoluer des stratégies pour les PNJ
- Ordonnancement/routage — job shop, tournées de véhicules, emplois du temps
- Conception matérielle — optimisation de circuits, conception d'antennes
Exemple pratiqué : CMA-ES
import cma
# Minimiser une fonction avec CMA-ES
def objective(x):
return sum((xi - 3)**2 for xi in x) # minimum en [3, 3, 3, ...]
es = cma.CMAÉvolutionStrategy([0] * 10, 0.5) # 10 dim, sigma initial=0.5
es.optimize(objective)
print(es.result.xbest) # → proche de [3, 3, 3, ...]
Bibliothèques clés
| Bibliothèque | Langage | Focus |
|---|---|---|
| DEAP | Python | Calcul évolutionnaire généraliste |
| PyGAD | Python | Algorithmes génétiques, API simple |
| pycma | Python | Implémentation de référence CMA-ES |
| Optuna | Python | Optimisation d'hyperparamètres (inclut des samplers évolutionnaires) |
| ECJ | Java | Framework de calcul évolutionnaire mature |
| Nevergrad | Python | Optimisation sans gradient (Meta) |
Méthodes Probabilistes & Bayésiennes
Modélisent l'incertitude explicitement en utilisant des distributions de probabilité.
Approches principales
| Méthode | Ce qu'elle fait |
|---|---|
| Régression Linéaire Bayésienne | Régression linéaire avec distributions postérieures sur les poids |
| Processus Gaussiens (GP) | Non paramétrique — définit une distribution sur les fonctions. Parfait pour peu de données avec incertitude |
| Réseaux de Neurones Bayésiens | Réseaux de neurones avec distributions sur les poids — quantifie l'incertitude de prédiction |
| Inférence Variationnelle | Approximer les postérieures intractables avec des distributions plus simples |
| MCMC (Monte Carlo par chaînes de Markov) | Échantillonner depuis la postérieure — Metropolis-Hastings, MC Hamiltonien, NUTS |
| Optimisation Bayésienne | Utiliser un surrogate GP pour optimiser des fonctions boîte noire coûteuses |
| Modèles de Markov Cachés | Données séquentielles avec états cachés — parole, génomique |
| Programmation Probabiliste | Écrire des modèles comme des programmés, laisser le framework faire l'inférence |
Optimisation Bayésienne pour les hyperparamètres
from skopt import gp_minimize
def train_and_evaluate(params):
learning_rate, n_estimators = params
# Entraîner le modèle, retourner l'erreur de validation
model = XGBClassifier(learning_rate=learning_rate,
n_estimators=int(n_estimators))
model.fit(X_train, y_train)
return -accuracy_score(y_val, model.predict(X_val))
result = gp_minimize(
train_and_evaluate,
[(1e-4, 1.0, "log-uniform"), # learning_rate
(50, 500)], # n_estimators
n_calls=50
)
Bibliothèques clés
| Bibliothèque | Focus |
|---|---|
| PyMC | Programmation probabiliste, MCMC/VI |
| Stan / CmdStanPy | MCMC haute performance (sampler NUTS) |
| NumPyro | Programmation probabiliste basée sur JAX |
| GPyTorch | Processus Gaussiens scalables sur GPU |
| BoTorch | Optimisation Bayésienne (construit sur GPyTorch) |
| scikit-optimize | Optimisation séquentielle basée sur un modèle |
Méta-Apprentissage (« Apprendre à Apprendre »)
Algorithmes qui améliorent leur capacité d'apprentissage à travers les tâches.
| Approche | Fonctionnement | Exemple |
|---|---|---|
| MAML (Model-Agnostic Meta-Learning) | Apprendre des poids d'initialisation qui s'adaptent en quelques étapes de gradient | Classification d'images few-shot |
| Prototypical Networks | Classifier par distance aux prototypes de classe dans l'espace d'embedding | Few-shot learning |
| Matching Networks | Comparaison basée sur l'attention avec le support set | One-shot learning |
| Neural Architecture Search (NAS) | Rechercher l'architecture réseau optimale | EfficientNet, DARTS |
| Optimiseurs Appris | Méta-apprendre l'optimiseur lui-même | L2L, VeLO |
| Apprentissage en Contexte | Les grands modèles apprennent à partir d'exemples dans le prompt | GPT-4, Claude |
Approches Hybrides & Émergentes
IA Neuro-symbolique
Combiner les réseaux de neurones (reconnaissance de patterns) avec le raisonnement symbolique (logique, règles).
- Démonstration Automatique de Théorèmes Neurale — utiliser des réseaux de neurones pour guider la recherche de preuves
- Programmation Différentiable avec Logique — DeepProbLog, Scallop
- LLM + Graphes de Connaissances — ancrer les sorties des modèles de langage dans des connaissances structurées
Réseaux de Neurones sur Graphes (GNN)
Apprendre directement sur des données structurées en graphes.
| Variante | Mécanisme |
|---|---|
| GCN | Agréger les features des voisins (spectral) |
| GraphSAGE | Échantillonner et agréger (inductif, passé à l'échelle) |
| GAT | Agrégation des voisins pondérée par attention |
| GIN | Maximalement expressif sous le test d'isomorphisme WL |
Applications : prédiction de propriétés moléculaires, analyse de réseaux sociaux, détection de fraude, systèmes de recommandation.
Modèles de Diffusion
Apprennent à débruiter les données — le socle de l'IA générative moderne.
- Processus direct : Ajouter progressivement du bruit aux données
- Processus inverse : Un réseau de neurones apprend à retirer le bruit étape par étape
- Génération : Partir de bruit pur, débruiter itérativement
Utilisés dans : Stable Diffusion, DALL-E 3, Sora (vidéo), génération de structurés protéiques.
Choisir la Bonne Famille
| Votre situation | Commencez ici |
|---|---|
| Données tabulaires étiquetées | Gradient Boosting (XGBoost/LightGBM) |
| Images/texte/audio étiquetés | Fine-tuner un modèle pré-entraîné (transfer learning) |
| Pas d'étiquettes, trouver des groupes | HDBSCAN ou Modèles de Mélange Gaussien |
| Pas d'étiquettes, réduire les dimensions | UMAP pour la visualisation, PCA pour le prétraitement |
| Décisions séquentielles avec récompenses | PPO (RL basé politique) |
| Optimiser un objectif non différentiable | CMA-ES ou Algorithme Génétique |
| Peu de données, besoin d'incertitude | Processus Gaussiens ou méthodes Bayésiennes |
| Très peu d'exemples étiquetés | Méta-apprentissage (Prototypical Networks) ou apprentissage en contexte |
| Générer des images/texte/audio | Modèles de diffusion, Transformers |
| Données structurées en graphe | GNN (GraphSAGE, GAT) |
Ressources
- [Reinforcement Learning: An Introduction](�0� — Sutton & Barto (gratuit en ligne)
- Spinning Up in Deep RL — Ressource éducative RL d'OpenAI
- Introduction to Évolutionary Computing — Eiben & Smith
- [Probabilistic Machine Learning](�0� — Kevin Murphy (gratuit en ligne)
- Dive into Deep Learning — Manuel interactif de deep learning
- Papers With Code — Benchmarks état de l'art pour toutes les familles ML
:::