Cours interactif de machine learning

Le machine learning, expliqué par la ligne Metz-Luxembourg

Chaque matin, des milliers de frontaliers se demandent si leur TER Metz-Luxembourg sera à l'heure. On va construire, pas à pas, des modèles de plus en plus riches pour répondre à cette question. À chaque étape, on verra comment le modèle fonctionne, puis pourquoi il ne suffit plus.

Tous les modèles sont entraînés en direct dans votre navigateur. Les données sont simulées, inspirées de la ligne Metz-Luxembourg.

Rappel de cours · le vocabulaire

  • Observation : une ligne du tableau, ici un trajet un jour donné.
  • Variables explicatives (features), notées x : ce qu'on connaît avant le départ.
  • Cible, notée y : ce qu'on veut prédire. Un nombre (minutes de retard) : régression. Une catégorie (à l'heure ou en retard) : classification.
  • Entraînement : régler les paramètres sur des exemples dont on connaît la réponse.
  • Test : mesurer l'erreur sur des exemples jamais vus. C'est la seule note qui compte.

Chapitre 1 · Régression

La moyenne, le modèle à battre

RappelUn modèle transforme des variables x en une prédiction ŷ, et on le juge sur des données de test.

Le modèle le plus simple ignore tout contexte : il prédit toujours la même valeur c. Sur 36 matins de retards de votre train, quel c choisir ? Déplacez le curseur. Chaque trait vertical est une erreur, qu'on appelle un résidu.

L'erreur quadratique moyenne (MSE) fait la moyenne des carrés de ces résidus. Cochez « Voir les carrés » : la MSE est littéralement la surface moyenne des carrés. Le petit graphique dessous montre la MSE pour chaque valeur de c : une parabole, dont le fond tombe pile sur la moyenne.

Si on mesure l'erreur absolue (MAE), c'est la médiane qui gagne. Le choix de la fonction d'erreur change donc la « meilleure » réponse.

Ce modèle naïf s'appelle la baseline. Tout modèle plus compliqué doit faire mieux qu'elle, sinon il ne sert à rien.

Rappel de cours

  • Résidu : e = y − ŷ
  • MSE = (1/n) Σ (yi − ŷi)² et RMSE = √MSE, en minutes.
  • MAE = (1/n) Σ |yi − ŷi|
  • La moyenne minimise la MSE, la médiane minimise la MAE.
  • Le carré punit fort les gros retards ; la MAE résiste mieux aux valeurs extrêmes.

Quiz éclair

Pourquoi la MSE est-elle si sensible à un retard exceptionnel de 45 min ?

Parce que l'erreur est élevée au carré : 45² = 2 025 pèse autant que 225 matins avec 3 minutes d'erreur (3² = 9).

Votre modèle obtient une RMSE de 3,9 min, la baseline 4,0 min. Bonne nouvelle ?

Pas vraiment : le gain est minuscule et peut venir du hasard du découpage. Il faut comparer sur plusieurs découpages (validation croisée) avant de conclure.

Pourquoi ça ne suffit pas

La moyenne prédit min de retard tous les matins, même quand le train précédent sur la ligne a déjà 15 minutes de retard. Il faut un modèle qui utilise une information connue à l'avance. Chapitre 2 : la régression linéaire.

Paillasse · 36 matins, même train

Chapitre 2 · Régression

La droite et la descente de gradient

RappelLa meilleure constante au sens de la MSE est la moyenne. C'est la baseline à battre.

On ajoute une information connue avant le départ : le retard du train précédent sur la ligne. Le modèle devient une droite ŷ = a·x + b. La pente a dit combien de minutes de retard s'ajoutent par minute de retard du train précédent ; b est le retard prévu quand le train précédent est à l'heure.

Réglez a et b à la main pour faire baisser la MSE. La carte de droite montre la MSE pour tous les couples (a, b) : c'est la fonction de coût, une cuvette dont on cherche le fond, marqué d'une étoile. Cliquez n'importe où sur la carte pour y placer le modèle.

La descente de gradient fait ce travail seule. À chaque étape, elle mesure la pente de la cuvette au point actuel et fait un pas vers le bas. La taille du pas est le taux d'apprentissage η. Trop petit, on avance à peine. Trop grand, on rebondit d'un bord à l'autre et l'algorithme diverge : essayez η = 0,02.

Cochez ensuite « Standardiser x ». En ramenant x à une moyenne de 0 et un écart-type de 1, la cuvette devient ronde et la descente file droit au fond, même avec un grand pas. C'est pour ça qu'on normalise presque toujours les variables.

Rappel de cours

  • Modèle : ŷ = a·x + b
  • Coût : J(a, b) = (1/n) Σ (a·xi + b − yi)²
  • Gradient, avec ei = ŷi − yi : ∂J/∂a = (2/n) Σ ei·xi et ∂J/∂b = (2/n) Σ ei
  • Mise à jour : a ← a − η·∂J/∂a, idem pour b.
  • Standardiser : x' = (x − moyenne) / écart-type
  • Pour la régression linéaire, une formule exacte existe (moindres carrés). La descente de gradient sert là où il n'y en a pas : logistique, réseaux de neurones.

Quiz éclair

Le meilleur modèle trouve a ≈ . Comment le lire ?

Chaque minute de retard du train précédent ajoute en moyenne minute de retard à votre train.

La MSE augmente à chaque étape et finit par exploser. Que faire ?

Diminuer le taux d'apprentissage η, et standardiser les variables pour que la cuvette soit mieux formée.

Pourquoi ça ne suffit pas

Une droite suppose un effet constant. Or le retard dépend de l'heure de départ de façon courbe, avec un pic le matin et un autre le soir. Aucune droite ne suit deux bosses. Chapitre 3 : les polynômes.

Paillasse · votre retard selon le train précédent

Chapitre 3 · Régression

Polynômes, biais et surapprentissage

RappelLa descente de gradient suit la pente du coût ; un pas trop grand la fait diverger, et standardiser les variables l'aide beaucoup.

Ici, x est l'heure de départ et y le retard observé. Pour suivre des courbes, on donne au modèle des puissances de x : ŷ = w0 + w1x + w2x² + … + wd·xd. C'est toujours un modèle linéaire… en ses paramètres w. Le degré d règle sa souplesse.

Augmentez le degré. Au début, l'erreur sur les points d'entraînement (pleins) et celle sur les points de test (cercles) baissent ensemble. Puis la courbe se met à passer par chaque point d'entraînement en ondulant : l'erreur d'entraînement baisse encore, celle de test remonte. Le modèle apprend le bruit par cœur. C'est le surapprentissage.

À degré élevé, cliquez sur « Nouveau tirage » : la courbe change du tout au tout d'un échantillon à l'autre. C'est la variance. À degré 1, elle bouge peu mais rate toujours les pics : c'est le biais.

La régularisation λ pénalise les grands coefficients. Avec un degré 15 et un λ bien choisi, la courbe redevient sage : on garde la souplesse et on limite les excès.

Rappel de cours

  • Sous-apprentissage (biais fort) : modèle trop rigide, erreur élevée partout.
  • Surapprentissage (variance forte) : erreur d'entraînement faible, erreur de test élevée.
  • erreur de test ≈ biais² + variance + bruit, et le bruit ne se réduit pas.
  • Ridge : on minimise MSE + λ Σ wj². Plus λ est grand, plus le modèle est contraint.
  • On choisit d et λ sur un jeu de validation et on garde le test pour la note finale. Ici on regarde le test pour la démonstration.

Quiz éclair

Erreur d'entraînement 0,1, erreur de test 9,3. Diagnostic ?

Surapprentissage. Réduire le degré, augmenter λ ou ajouter des données.

Pourquoi ne pas choisir le degré directement sur le jeu de test ?

Le test deviendrait une donnée d'entraînement déguisée : l'erreur annoncée serait trop optimiste.

Pourquoi ça ne suffit pas

Jusqu'ici on prédisait des minutes. Mais le frontalier veut surtout savoir s'il arrivera avec 5 minutes de retard ou plus. C'est une question oui ou non : une classification. Chapitre 4 : la régression logistique.

Paillasse · retard selon l'heure de départ

Chapitre 4 · Classification

La régression logistique

RappelTrop rigide, le modèle a du biais ; trop souple, de la variance. La régularisation cherche le compromis.

Deux variables cette fois : le retard du train au départ de Metz, et la part de trains en retard sur la ligne. Chaque point est un trajet, bleu s'il est arrivé à l'heure à Luxembourg, orange s'il avait 5 minutes de retard ou plus.

La régression logistique calcule un score linéaire z = w0 + w1x + w2y puis le transforme en probabilité avec la sigmoïde. La frontière où p = 0,5 est une droite. Cliquez sur « Regarder l'apprentissage » pour voir la droite trouver sa place par descente de gradient.

Le seuil décide à partir de quelle probabilité on annonce « retard ». En le baissant, on rate moins de retards (le rappel monte) mais on crie plus souvent au loup (la précision baisse). Suivez la matrice de confusion.

Passez maintenant aux jeux « Cercles » ou « XOR » : aucune droite ne sépare les classes et l'exactitude plafonne. Cochez « Ajouter x², y², x·y » : avec ces nouvelles variables, la frontière peut se courber. Fabriquer les bonnes variables à la main, c'est le feature engineering.

Rappel de cours

  • Sigmoïde : σ(z) = 1 / (1 + e−z), toujours entre 0 et 1.
  • Coût (log-loss) : J = −(1/n) Σ [yi·log pi + (1 − yi)·log(1 − pi)]
  • Précision = VP / (VP + FP) : quand j'annonce un retard, ai-je raison ?
  • Rappel = VP / (VP + FN) : parmi les vrais retards, combien j'en détecte ?
  • Exactitude = (VP + VN) / n, trompeuse quand une classe est rare.

Quiz éclair

10 % des trains sont en retard. Quelle exactitude pour un modèle qui répond toujours « à l'heure » ?

90 %, avec un rappel de 0. C'est pour ça qu'on regarde la précision et le rappel.

Pourquoi la logistique échoue-t-elle sur XOR ?

Sa frontière est une droite dans l'espace des variables d'entrée ; XOR demande au moins deux droites.

Pourquoi ça ne suffit pas

Ajouter x², y², x·y marche pour des cercles, mais il faut deviner la bonne forme à l'avance. Sur la spirale, quelles variables inventer ? On veut des modèles qui trouvent la forme seuls. Chapitre 5 : les k plus proches voisins.

Paillasse · arrivera-t-il à l'heure ?

Un clic sur le graphique ajoute un point

Chapitre 5 · Classification

Les k plus proches voisins

RappelLa régression logistique trace une frontière droite ; pour la courber, il faut inventer des variables à la main.

Ce modèle ne cherche aucune formule. Pour un nouveau trajet, il regarde les k trajets les plus proches parmi les données d'entraînement et les fait voter. Survolez le graphique : les traits relient le point survolé aux voisins consultés.

Avec k = 1, chaque point d'entraînement impose sa couleur autour de lui : 100 % de réussite à l'entraînement, des îlots partout, et une erreur de test qui en souffre. En augmentant k, la frontière se lisse. k joue le même rôle que le degré du polynôme : il règle la souplesse, mais à l'envers.

Rappel de cours

  • Distance euclidienne : d = √((x1 − x2)² + (y1 − y2)²)
  • Prédiction : p = part des k voisins de la classe 1
  • k petit : variance forte. k grand : biais fort.
  • Toujours normaliser les variables, sinon une variable en minutes écrase une variable en pourcentage.
  • Aucun entraînement, mais chaque prédiction parcourt tous les points. En grande dimension, tous les points deviennent « loin » : c'est le fléau de la dimension.

Quiz éclair

Pourquoi l'exactitude d'entraînement vaut-elle 100 % avec k = 1 ?

Chaque point d'entraînement est son propre plus proche voisin.

Que se passe-t-il si k égale le nombre de points d'entraînement ?

Le modèle prédit toujours la classe majoritaire : on retombe sur la baseline.

Pourquoi ça ne suffit pas

Le kNN n'explique rien : aucune règle lisible. Il devient lent et peu fiable quand les variables se multiplient. On voudrait un modèle souple qui produise des règles. Chapitre 6 : l'arbre de décision.

Paillasse · vote des voisins

Un clic sur le graphique ajoute un point

Chapitre 6 · Classification

L'arbre de décision

RappelLe kNN fait voter les k voisins les plus proches ; k règle la souplesse et les variables doivent être normalisées.

Un arbre pose des questions successives, du type « retard au départ ≤ 6 min ? ». À chaque nœud, il choisit la question qui sépare le mieux les classes, celle qui rend les deux groupes obtenus les plus purs possible. Les frontières sont donc faites de segments horizontaux et verticaux.

La profondeur maximale règle la souplesse. À profondeur 1, une seule question. À profondeur 10, l'arbre découpe de petites boîtes autour de chaque point isolé. Les règles apprises s'affichent sous le graphique.

Cliquez plusieurs fois sur « Rééchantillonner » : l'arbre est reconstruit sur un tirage avec remise des mêmes données. Les règles changent beaucoup pour une petite variation des données. Un arbre profond est instable.

Rappel de cours

  • Impureté de Gini d'un groupe : G = 2p(1 − p), nulle quand le groupe est pur.
  • On choisit la coupure qui minimise l'impureté moyenne, pondérée par la taille des deux enfants.
  • On s'arrête à une profondeur maximale ou à un nombre minimal de points par feuille.
  • Forces : lisible, aucune normalisation nécessaire.
  • Faiblesse : forte variance.

Quiz éclair

Faut-il standardiser les variables avant un arbre ?

Non : une coupure « x ≤ seuil » ne dépend pas de l'échelle de x.

Pourquoi la frontière est-elle en escalier ?

Chaque question ne porte que sur une variable à la fois.

Pourquoi ça ne suffit pas

Un arbre seul est lisible mais instable. Idée : en construire beaucoup et les faire voter. Chapitre 7 : forêts et boosting.

Paillasse · questions successives

Un clic sur le graphique ajoute un point

    

Chapitre 7 · Classification

Forêts aléatoires et boosting

RappelUn arbre profond suit les données de près mais change beaucoup d'un échantillon à l'autre.

Une forêt aléatoire entraîne des dizaines d'arbres, chacun sur un rééchantillon différent et avec une part de hasard dans le choix des variables. Leurs erreurs ne sont pas les mêmes : en faisant la moyenne, elles se compensent. Augmentez le nombre d'arbres : la frontière se lisse et l'erreur de test baisse.

Le boosting procède autrement. Les arbres sont petits et construits l'un après l'autre, chacun corrigeant les erreurs laissées par les précédents. Il réduit surtout le biais. C'est la famille de XGBoost, LightGBM et CatBoost, souvent la meilleure sur des données en tableau.

Comparez : une forêt avec 1 arbre retrouve l'arbre instable du chapitre 6 ; avec 100 arbres, elle devient stable. Un boosting avec beaucoup d'arbres profonds finit, lui, par apprendre le bruit.

Rappel de cours

  • Bagging (forêt) : moyenne d'arbres profonds et différents. Réduit la variance.
  • Boosting : somme d'arbres faibles, chacun ajusté sur les erreurs restantes. Réduit le biais.
  • Fm(x) = Fm−1(x) + η·hm(x), avec hm ajusté sur yi − pi.
  • Ajouter des arbres à une forêt ne fait pas surapprendre ; ajouter des étapes de boosting, si. D'où l'arrêt anticipé.
  • Prix à payer : on perd la lisibilité d'un arbre unique.

Quiz éclair

Pourquoi la moyenne de plusieurs arbres se trompe-t-elle moins ?

Leurs erreurs sont en partie indépendantes : la moyenne de prédictions bruitées est moins bruitée que chacune d'elles.

Boosting avec 100 arbres de profondeur 8 : quel risque ?

Le surapprentissage : le boosting s'acharne sur le bruit. On préfère des arbres peu profonds et un taux η modeste.

Pourquoi ça ne suffit pas

Les ensembles d'arbres excellent sur les tableaux. Pour des images, du son, du texte ou des formes très tordues, il faut un modèle qui fabrique lui-même ses variables. Chapitre 8 : le réseau de neurones.

Paillasse · beaucoup d'arbres

Un clic sur le graphique ajoute un point

Chapitre 8 · Classification

Le réseau de neurones

RappelLe bagging réduit la variance, le boosting réduit le biais ; les deux combinent beaucoup d'arbres.

Un neurone, c'est une régression logistique : une somme pondérée suivie d'une fonction d'activation. Un réseau empile des couches de neurones. Le schéma montre ce que « voit » chaque neurone caché : ceux de la première couche tracent chacun une frontière droite, ceux de la couche suivante les combinent en formes courbes.

Le réseau apprend donc ses propres variables, là où il fallait les inventer à la main au chapitre 4. Sur la spirale, essayez 2 neurones puis 8 : avec trop peu de neurones, la forme est impossible à tracer.

L'apprentissage reprend la descente de gradient du chapitre 2. Le calcul du gradient couche par couche, de la sortie vers l'entrée, s'appelle la rétropropagation. Sur le schéma, les liens orange sont des poids positifs, les bleus des poids négatifs ; leur épaisseur suit leur force.

Rappel de cours

  • Neurone : a = f(w · x + b), avec f = tanh ou ReLU.
  • Sortie : p = σ(z), et le même coût log-loss qu'au chapitre 4.
  • Rétropropagation : la dérivation en chaîne, appliquée couche par couche.
  • Adam : une descente de gradient qui adapte le pas de chaque paramètre.
  • Beaucoup de paramètres : il faut beaucoup de données et un réglage soigneux, et le modèle est peu lisible.

Quiz éclair

Un réseau de 10 couches sans fonction d'activation, f(z) = z : que vaut-il ?

Rien de plus qu'un modèle linéaire : une composition de fonctions linéaires reste linéaire.

La perte d'entraînement baisse, mais l'exactitude de test aussi. Que se passe-t-il ?

Du surapprentissage : réduire la taille du réseau, régulariser, ou arrêter l'entraînement plus tôt.

Pourquoi ça ne suffit pas

Plus puissant ne veut pas dire meilleur partout. Comparons tous les modèles sur les mêmes données. Chapitre 9 : le match.

Paillasse · un petit réseau

Chapitre 9 · Synthèse

Le match

RappelUn réseau de neurones apprend ses propres variables, au prix de nombreux paramètres.

Huit modèles, entraînés sur les mêmes points et notés sur les mêmes points de test. Changez de jeu de données. Sur « Trains (réaliste) », presque tout le monde se vaut et la régression logistique, simple et lisible, suffit. Sur la spirale, seuls les modèles souples s'en sortent. Le cadre vert désigne le meilleur score de test.

ModèleFrontièreLisibilitéDonnées nécessairesPoint de vigilance
Moyenne, classe majoritaireaucunetotaletrès peune sert qu'à comparer
Régression linéaire ou logistiquedroitecoefficients lisiblespeubiais si la relation est courbe
Polynôme, variables fabriquéescourbe choisie à la mainmoyennepeu à moyensurapprentissage si le degré est élevé
k plus proches voisinslibrefaiblemoyennormalisation, lenteur, grande dimension
Arbre de décisionescalierrègles lisiblesmoyeninstabilité
Forêt, boostingescalier lisséfaible (importance des variables)moyen à beaucoupréglages, temps de calcul
Réseau de neuroneslibretrès faiblebeaucoupréglages, surapprentissage, coût

Et pour les vrais trains ?

Le site trains-lux utilise volontairement un modèle très simple : une moyenne régionale qu'on rapproche peu à peu de l'historique de chaque train. C'est une cousine de la baseline du chapitre 1, avec une dose de régularisation du chapitre 3.

Avec quelques jours d'observations seulement, un modèle complexe surapprendrait. Quand des mois de données seront disponibles, un boosting sur l'heure, le jour, la météo et l'état de la ligne deviendra le candidat naturel.

La règle d'or

  • Commencer par la baseline.
  • Ajouter de la complexité une marche à la fois.
  • Ne garder un modèle plus complexe que si l'erreur de validation baisse vraiment.
  • Garder le test pour la toute fin.

Terminus

Fiche mémo

RappelTout ce qu'il faut retenir du parcours, sur une seule page.

Évaluer

  • MSE = (1/n) Σ (yi − ŷi)²
  • MAE = (1/n) Σ |yi − ŷi|
  • Précision, rappel, exactitude, matrice de confusion.
  • Entraînement pour apprendre, validation pour régler, test pour noter.

Optimiser

  • Coût J à minimiser.
  • θ ← θ − η·∇J(θ)
  • η trop grand : divergence. Trop petit : lenteur.
  • Standardiser les variables accélère la descente.

Régler la complexité

  • Biais : trop rigide. Variance : trop souple.
  • Leviers : degré, k, profondeur, nombre de neurones.
  • Régularisation : + λ Σ wj²
  • Plus de données réduit la variance.

Les modèles en une ligne

  • Logistique : p = σ(w · x + b)
  • kNN : vote des k voisins.
  • Arbre : questions qui minimisent Gini.
  • Forêt : moyenne d'arbres. Boosting : somme corrective.
  • Réseau : couches de neurones, rétropropagation.