Aller au contenu

Apprentissage automatique

Un cabinet médical aimerait savoir, la veille, quels patients risquent de ne pas venir à leur rendez-vous. Un club de tennis voudrait prévoir s’il y aura des joueurs selon la météo. Un médecin cherche à repérer les patients à examiner en priorité. Dans les trois cas, personne ne connaît la règle exacte, mais on dispose d’exemples passés. L’apprentissage automatique (machine learning) consiste à tirer de ces exemples une règle qui fonctionne sur des cas nouveaux, et à mesurer honnêtement à quel point elle fonctionne.

Ce cours part de zéro : ce que veut dire « apprendre » pour une machine, pourquoi un modèle qui récite ses exemples ne vaut rien, et comment l’évaluer sans se mentir. Il présente ensuite les modèles classiques, des arbres de décision aux réseaux de neurones, en calculant à la main ce qui peut l’être, puis se termine par un projet complet, relu d’un œil critique.

À la fin de ce cours, vous serez capable de :

  • Identifier le type d’un problème d’apprentissage (supervisé ou non, classification ou régression) et le vocabulaire associé.
  • Diagnostiquer un surapprentissage ou un sous-apprentissage et agir sur le compromis biais-variance.
  • Évaluer un modèle avec un protocole sans fuite (apprentissage, validation, test, validation croisée) et choisir une métrique adaptée au besoin métier.
  • Expliquer et calculer le fonctionnement des modèles classiques : arbres de décision, Bayes naïf, k plus proches voisins, modèles linéaires et SVM, méthodes d’ensemble, réseaux de neurones.
  • Mettre en œuvre ces modèles en Python avec scikit-learn et PyTorch, dans des pipelines reproductibles.
  • Critiquer les résultats d’un projet réel et présenter la démarche en entretien.
  • Les bases des probabilités : probabilité conditionnelle, loi normale, espérance et variance.
  • Un peu d’algèbre linéaire : vecteurs, produit scalaire, matrices.
  • La notion de dérivée et de gradient, pour les chapitres 7 et 9.
  • Python et, si possible, une première pratique de NumPy et de pandas.

Les cours de Probabilités, de Statistiques et d’Optimisation numérique de ce site, en préparation, couvriront ces bases.

  1. Découvrez ce que signifie « apprendre » pour une machine : les familles d’apprentissage, classification et régression, les grandes catégories de modèles.
  2. Comprenez pourquoi un modèle doit généraliser : erreur empirique et erreur réelle, surapprentissage, biais inductif, compromis biais-variance.
  3. Évaluez honnêtement un modèle : découpage des données, validation croisée, matrice de confusion, ROC, baseline et fuite de données.
  1. Construisez un arbre de décision : entropie, gain d’information, Gini et élagage.
  2. Raisonnez avec les probabilités grâce à Bayes : règle MAP, erreur de Bayes, Bayes naïf et lissage de Laplace.
  3. Classez par voisinage avec les k plus proches voisins : distances, normalisation, choix de k et fléau de la dimension.
  4. Séparez les classes avec les modèles linéaires : moindres carrés, Ridge et Lasso, régression logistique, perceptron et SVM.
  1. Combinez des modèles pour mieux prédire : bagging, forêts aléatoires, boosting et importance des variables.
  2. Découvrez les réseaux de neurones : perceptron multicouche, rétropropagation, descente de gradient et PyTorch.
  3. Menez un projet de bout en bout : une étude de cas sur les rendez-vous médicaux manqués, et son analyse critique.

Chaque chapitre se termine par un résumé et des exercices corrigés, de difficulté croissante.

Ce cours reprend l’enseignement d’apprentissage automatique suivi en 3e année du cycle ingénieur de l’INSA Rennes, en spécialité informatique (second semestre) : cours magistraux sur les généralités, les arbres de décision et l’apprentissage bayésien, et travaux pratiques en Python avec scikit-learn. Les exemples marqués « en TP » proviennent de nos deux notebooks : le premier sur les k plus proches voisins, les arbres de décision et le Bayes naïf, le second sur le projet des rendez-vous médicaux manqués, mené en groupe. Leurs chiffres sont ceux qui s’affichent dans les sorties des notebooks.

Le texte, les exemples et les exercices ont été entièrement réécrits. Certaines notions ont été complétées à partir de sources standard du domaine (la documentation de scikit-learn et de PyTorch, et des ouvrages de référence en apprentissage statistique), en particulier le gradient boosting, l’importance par permutation, les pipelines et la gestion du déséquilibre entre classes.