~/teaching · machine learning · séance 1, mercredi 14 octobre 2026
Cadrer avant de modéliser, puis les moindres carrés : décision, fuites de données, équations normales et conditionnement
Séance 1 du cours de Machine Learning : écrire la décision d'abord, puis résoudre la régression comme une projection.
Résumé
Cette séance ouvre le cours de Machine Learning de Centrale Méditerranée (option DDEFI, 2026-2027). Elle a deux moitiés qui semblent sans lien et ne le sont pas. La première cadre un projet avant toute ligne de code : quelle décision le modèle sert, ce que la colonne cible enregistre vraiment, quelles deux métriques sont lues et par qui, quelles limites le modèle doit respecter, et comment les données peuvent faire entrer le futur dans l'apprentissage. La seconde prend le modèle le plus simple qui soit, la droite ajustée par moindres carrés, et la lit de quatre façons : comme une minimisation, comme un système linéaire, comme une projection orthogonale et comme un calcul sur une machine qui arrondit.
Le fil rouge du cours est un score de défaut de crédit construit sur les données UCI Default of Credit Card Clients (Taïwan, 2005, licence CC BY 4.0). La partie moindres carrés travaille sur cinq clients fictifs, assez peu nombreux pour vérifier chaque nombre à la main, puis sur California Housing en travaux pratiques.
À la fin de la séance, on sait écrire en cinq lignes la décision, la cible, les métriques et un garde-fou d'un projet, dresser une carte des fuites avant d'ouvrir le fichier, établir les équations normales, montrer pourquoi le résidu est perpendiculaire à chaque colonne de la matrice des variables, et expliquer pourquoi aucune bibliothèque sérieuse ne calcule l'inverse de .
Plan du deck
- Cadrer un projet de ML. La décision, la question, la cible, les deux métriques, les garde-fous, la boucle de travail et la chaîne de données.
- Activité en équipe, sur papier. Chaque équipe de trois écrit cinq lignes signées qui cadrent le projet fil rouge et ouvriront ensuite son dépôt.
- Le critère et les équations normales. De la somme des écarts au carré à son gradient, puis à un système linéaire , vérifié sur cinq clients.
- Projection, matrice chapeau et R². Les valeurs ajustées sont la projection orthogonale des observations, et Pythagore donne la décomposition de la variance.
- Gauss-Markov. Pourquoi les moindres carrés plutôt qu'une autre droite sans biais, et d'où vient l'écart-type d'un coefficient.
- SVD, conditionnement et colinéarité. La même solution écrite pour une machine qui arrondit, et ce qui arrive quand deux colonnes se ressemblent presque.
- Histoire et usage en 2026. De Legendre et Gauss à Golub et Kahan, et pourquoi la droite reste le premier modèle de tout projet.
- TP : ols(X, y) de trois façons. Équations normales, SVD et scikit-learn doivent coïncider, avec des contrôles géométriques et un conditionnement noté.
Partir de la décision, pas des données
Un modèle ne vaut la peine que si quelqu'un agira autrement après avoir lu sa sortie, donc on écrit la décision avant tout le reste.
Le réflexe, quand un CSV arrive, est de l'ouvrir et d'y chercher des motifs. Le cours demande l'ordre inverse. On écrit d'abord qui décide, entre quelles options, et ce que coûte chaque type d'erreur. Sur le projet fil rouge, un analyste crédit accepte, refuse ou envoie un dossier en revue manuelle, un comité fixe le seuil, et accepter un client qui fera défaut coûte plus cher que d'écarter un bon client. Cette asymétrie fixera la métrique et, plus tard dans le cours, le seuil.
Un objectif flou comme prédire le défaut est un verbe et une colonne, pas une question. Une question exploitable nomme quatre éléments : une décision, une mesure du succès, un périmètre (ce portefeuille, ce mois-ci) et un responsable qui agira sur la réponse. S'il en manque un, le projet finit souvent par optimiser un chiffre que personne ne lit.
La cible est une trace datée
La variable cible (target) est la colonne que le modèle apprend, et ce n'est jamais le phénomène lui-même. Dans les données de crédit, c'est un retard de paiement le mois suivant, enregistré selon la règle de la banque pour octobre 2005. Un client en retard en octobre qui régularise en novembre compte comme un défaut ; un client qui disparaît avec toute sa ligne de crédit en décembre, non. La cible n'est donc ni un « mauvais client » ni une perte en euros. La première question à poser au métier : comment la colonne a été construite, par qui, et à quelle date sa valeur est connue.
Deux métriques, le piège de l'exactitude et les garde-fous
Un chiffre aide l'équipe data à choisir entre deux modèles, un autre dit au métier s'il faut déployer, et aucun des deux n'est l'exactitude.
Le cours sépare une métrique de modèle et une métrique métier, parce qu'elles n'ont pas les mêmes lecteurs. La métrique de modèle (log-loss, AUC, score de Brier) se calcule à chaque entraînement sur la partie validation et doit réagir aux petites améliorations. La métrique métier s'exprime en euros perdus ou en bons clients refusés, et le comité de crédit la lit après déploiement. Les deux sont fixées dans le journal des décisions avant le premier entraînement.
| Portefeuille | Part de défauts | Exactitude du modèle constant | Défauts détectés |
|---|---|---|---|
| Exemple de crédit à la consommation | 2 % | 98 % | 0 % |
| Projet du cours (UCI Default) | 22,1 % | 77,9 % | 0 % |
Dès qu'une classe est rare, l'exactitude flatte un modèle qui n'a rien appris. Ce modèle constant reste utile : il devient le premier modèle de référence (baseline) du projet, et sa log-loss, égale à l'entropie de la cible, est le plancher que tout vrai modèle doit battre.
Les garde-fous, écrits avant l'entraînement
Un garde-fou (guard-rail) est une limite posée au modèle avant qu'il existe. Le cours en retient quatre.
- Ce que le modèle ne fait jamais. Il ne refuse pas un client seul, et il n'utilise pas le sexe, ni directement ni par une variable qui le trahit. La situation matrimoniale reste en entrée, sous audit : on la garde seulement si elle apporte quelque chose au-delà de l'historique de paiement et si l'écart de traitement qu'elle crée se justifie.
- Qui signe. Une personne nommée valide le seuil et le déploiement.
- Quand on arrête. Les critères d'arrêt (AUC sous la référence, dérive des entrées, réclamation étayée) sont écrits avant le modèle, pour qu'on ne puisse pas les ajuster au résultat.
- La réglementation. La notation de crédit des personnes physiques est un usage à haut risque au sens de l'annexe III, point 5(b), du règlement européen sur l'IA (règlement (UE) 2024/1689), avec des obligations de documentation, de contrôle humain et de journalisation.
Fuites de données : jointure datée, coupe gelée, carte des fuites
Un modèle qui a vu des informations postérieures à la date de prédiction brille en développement et échoue en production, d'où un ordre strict de préparation.
Le cours présente le projet comme une boucle plutôt qu'une chaîne : une évaluation peut révéler une fuite de données (data leakage), la fuite modifie la carte des données, la carte modifie la question. Chaque tour est consigné dans un journal des décisions, avec la date, l'option écartée, la raison et un chiffre qu'une commande reproduit. À l'intérieur d'un tour, en revanche, l'ordre des étapes est fixé.
Les étapes de données, dans l'ordre
- Sources. Lister chaque table avec sa licence et la définition exacte de chaque colonne.
- Jointure datée. Une jointure à date de validité (point-in-time join) : pour prédire à la date , ne garder que les enregistrements datés . Dans les données de crédit, les variables s'arrêtent fin septembre 2005 et la cible porte sur octobre ; tout ce qui est connu après est interdit.
- Coupe gelée. Découper apprentissage, validation et test, en stratifiant sur la cible pour que chaque partie garde 22,1 % de défauts, et figer la coupe par une graine aléatoire et l'empreinte SHA-256 du fichier. Le jeu de test ne s'ouvre qu'une fois, au jalon.
- Carte des fuites. La carte des fuites (leakage map) compte une ligne par colonne : quand elle est connue, si on peut l'utiliser, et pourquoi. Elle se rédige à partir des définitions des colonnes, donc avant même de regarder les données.
- Modèle. Seulement maintenant, et le premier modèle est une constante.
Remarque (La fuite la plus fréquente en pratique). Joindre naïvement plusieurs tables prend la version actuelle de chaque ligne au lieu de celle connue à la date de prédiction. Le modèle a alors vu le futur, et aucun score de validation ne le révélera.
Moindres carrés et équations normales
On cherche la droite qui rend la somme des écarts verticaux au carré la plus petite possible, et annuler la pente de cette somme donne un petit système linéaire.
On range les observations dans un vecteur et les variables dans une matrice dont la première colonne ne contient que des 1, pour la constante. Le modèle s'écrit , et les moindres carrés ordinaires (ordinary least squares, OLS) choisissent le qui minimise la norme au carré du résidu.
Le développement n'utilise que deux faits : la transposée d'un produit inverse l'ordre, et un scalaire est égal à sa transposée, si bien que les deux termes croisés fusionnent. La dérivation utilise deux règles : le gradient de vaut , celui de vaut quand est symétrique.
En annulant ce gradient, on obtient les équations normales (normal equations), un système de équations à inconnues :
Un gradient nul suffit parce que est convexe : sa hessienne est semi-définie positive (la preuve vient avec l'optimisation convexe). est inversible exactement quand aucune colonne de n'est combinaison des autres, ce qui exclut par exemple le même montant en euros et en milliers d'euros.
Exemple chiffré : cinq clients
Le cours prend cinq clients fictifs : une ancienneté ans et un solde moyen en milliers d'euros. Une droite tracée à la main, , laisse une somme des carrés de 2,0. Une autre droite fait-elle mieux ?
Pas à pas
- Quatre sommes. , , , , ; donc a pour lignes et , et .
- Deux équations. et . En retranchant trois fois la première de la seconde, il reste .
- Solution. , puis . La droite laisse 1,9, moins que 2,0.
- Vérification. En , le gradient vaut et non zéro : la droite tracée à la main n'était pas le minimum.
Les valeurs ajustées sont une projection : matrice chapeau, Xᵀe = 0, R²
La meilleure droite est le point du plan engendré par les colonnes le plus proche des données, donc l'erreur restante forme un angle droit avec ce plan.
En reportant dans , une matrice apparaît devant : la matrice chapeau (hat matrix), ainsi nommée parce qu'elle pose le chapeau sur . Elle est de taille , alors que n'est que .
Les deux identités de droite disent que est un projecteur orthogonal (orthogonal projection) : projeter deux fois ne change rien, et la projection n'est pas oblique. Tout vit dans l'espace engendré par les colonnes de ; le observé, non. Le point le plus proche de cet espace est le pied de la perpendiculaire, , et le résidu est perpendiculaire à chaque colonne. C'est la condition de gradient nul, lue comme de la géométrie.
La seconde formule prouve les moindres carrés sans dérivée : l'écart à n'importe quelle autre droite est le résidu plus un morceau situé dans le plan, et Pythagore fait disparaître le terme croisé.
| Client | x | y | ŷ | e | x · e |
|---|---|---|---|---|---|
| 1 | 1 | 2 | 2,2 | −0,2 | −0,2 |
| 2 | 2 | 3 | 3,1 | −0,1 | −0,2 |
| 3 | 3 | 5 | 4,0 | 1,0 | 3,0 |
| 4 | 4 | 4 | 4,9 | −0,9 | −3,6 |
| 5 | 5 | 6 | 5,8 | 0,2 | 1,0 |
| Somme | 15 | 20 | 20,0 | 0,0 | 0,0 |
Sur les mêmes nombres, Pythagore tombe juste : , et pour la droite tracée à la main . La trace de vaut , un contrôle rapide.
Le R² exige la constante
Avec les cinq clients, prédire la moyenne 4 pour tout le monde laisse , la droite laisse , d'où un coefficient de détermination (coefficient of determination, R²) de 0,81. Le partage de la variance totale repose sur des résidus de somme nulle, ce qui n'est garanti que si la colonne de 1 est dans le modèle. Sans elle, la formule usuelle peut devenir négative : le cours montre un ajustement à deux points passant par l'origine qui donne . Un R² négatif dans un rapport signale presque toujours une constante oubliée, ou un score de test calculé après une fuite.
Remarque (Gauss-Markov, en bref). Si le bruit est centré, de covariance (sans hypothèse de normalité), est sans biais, de variance , et aucun autre estimateur linéaire sans biais n'a une variance plus petite. Sur les cinq clients, la pente des moindres carrés a une variance de , contre pour la pente qui relie le premier et le dernier client. Avec , cela donne un écart-type de 0,252 contre 0,281.
Conditionnement et SVD : pourquoi on n'inverse jamais XᵀX
Un ordinateur arrondit chaque nombre, et former XᵀX élève au carré l'amplification possible de ces arrondis, donc les bibliothèques résolvent autrement.
La décomposition en valeurs singulières (singular value decomposition, SVD) écrit : a des colonnes orthonormées qui engendrent le même plan que , porte les valeurs singulières , et est une rotation des coefficients. Dans cette base, la solution ne demande aucune inversion de matrice, seulement des divisions, et la matrice chapeau devient .
Chaque composante de selon est divisée par : une petite valeur singulière amplifie tout ce qui tombe dans sa direction, bruit compris. Le nombre de conditionnement (condition number) borne cette amplification : une erreur relative sur les données peut être multipliée jusqu'à sur les coefficients. Former l'élève au carré. Avec , la machine travaille à , ce qui consomme déjà la moitié des chiffres significatifs d'un double. C'est pourquoi np.linalg.lstsq passe par la SVD et d'autres solveurs par QR, jamais par .
| Unité de l'ancienneté | κ(X) | κ(XᵀX) |
|---|---|---|
| Années (1 à 5) | 8,4 | 70 |
| Mois (12 à 60) | 93 | 8 721 |
La réponse pratique : standardiser les colonnes et noter np.linalg.cond(X) avant de livrer un modèle. En TP, sur California Housing brut, avoisine ; après standardisation il tombe vers 7 et les trois implémentations coïncident à près.
La colinéarité
Quand deux colonnes sont presque parallèles, la colinéarité (multicollinearity) fait que la direction qui les sépare est à peine présente dans les données : sa valeur singulière est minuscule et la variance le long de cette direction explose. Le cours ajoute aux cinq clients une seconde mesure de l'ancienneté, un peu bruitée, corrélée à 0,998 avec la première. Les coefficients sautent à et , avec des écarts-types proches de 5, et passe de 8,4 à 85. Leur somme, 0,97, reste proche de la pente initiale 0,9, et la prédiction du client 3 ne bouge que de 4,00 à 4,23 : les données fixent l'effet total, pas son partage. Les remèdes : retirer une colonne, ou la régularisation ridge, qui ajoute à chaque .
import numpy as np x = np.array([1, 2, 3, 4, 5.]) y = np.array([2, 3, 5, 4, 6.]) X = np.column_stack([np.ones(5), x]) # Par la SVD, des divisions, aucune inverse U, s, Vt = np.linalg.svd(X, full_matrices=False) beta = Vt.T @ ((U.T @ y) / s) # [1.3, 0.9] e = y - X @ beta print(X.T @ e) # ~[0, 0], résidu orthogonal print(s[0] / s[-1]) # conditionnement, environ 8,4
À retenir
- Écrire la décision, son responsable et le coût de chaque erreur avant de toucher aux données ; la cible, la métrique et le seuil en découlent.
- La cible est un enregistrement daté produit par une règle, pas le phénomène, et l'exactitude trompe dès qu'une classe est rare.
- Protéger l'évaluation dans un ordre fixe : jointure datée, coupe gelée par graine et empreinte du fichier, carte des fuites, puis une référence constante.
- Les moindres carrés résolvent les équations normales ; géométriquement, est une projection orthogonale et .
- Le R² ne partage proprement la variance que si le modèle contient la constante, et un R² négatif signale en général une constante oubliée ou une fuite.
- Vérifier avant de livrer, standardiser les colonnes, et résoudre par SVD ou QR, jamais par .
Glossaire
- moindres carrés ordinaires (ordinary least squares, OLS)
- Estimation d'un modèle linéaire par minimisation de la somme des carrés des résidus.
- équations normales (normal equations)
- Le système , , que vérifie la solution des moindres carrés.
- matrice chapeau (hat matrix)
- , qui envoie les observations sur les valeurs ajustées .
- projecteur orthogonal (orthogonal projection)
- Application linéaire telle que ; elle envoie un vecteur sur le point le plus proche d'un sous-espace.
- coefficient de détermination (coefficient of determination, R²)
- Part de la variance autour de la moyenne retirée par le modèle, .
- décomposition en valeurs singulières (singular value decomposition, SVD)
- Factorisation en colonnes orthonormées, valeurs singulières et rotation.
- nombre de conditionnement (condition number)
- Rapport de la plus grande à la plus petite valeur singulière ; il borne l'amplification des erreurs relatives.
- colinéarité (multicollinearity)
- Dépendance presque linéaire entre colonnes, qui gonfle la variance de chaque coefficient pris seul.
- fuite de données (data leakage)
- Information indisponible au moment de prédire qui atteint les données d'apprentissage et gonfle les scores.
- jointure à date de validité (point-in-time join)
- Jointure qui ne garde, pour une prédiction à la date , que les enregistrements connus à ou avant.
- carte des fuites (leakage map)
- Tableau d'une ligne par colonne : quand elle est connue, si on peut l'utiliser, et pourquoi.
- modèle de référence (baseline)
- Le modèle le plus simple, ici une prédiction constante, que tout modèle utile doit battre.
- variable cible (target)
- La colonne que le modèle apprend : une trace datée du phénomène, enregistrée selon une règle.
- garde-fou (guard-rail)
- Limite posée au modèle avant l'entraînement : variables exclues, signataire, critères d'arrêt.
Les autres fiches du cours
Un résumé public par deck, dans l'ordre du cours.
Précédent : Kaggle, GitHub, Python : les outilsSuivant : Vraisemblance et régression logistique
- IntroductionHivers de l'IA, emploi et méthode
- OutilsKaggle, GitHub, Python : les outils
- Séance 1Cadrage de projet et moindres carrés
- Séance 2Vraisemblance et régression logistique
- Séance 3Descente de gradient, ridge et lasso
- Séance 4Seuil de décision et ML reproductible
- DevoirUn modèle de référence défendable
- Séance 5Noyaux, SVM et arbres de décision
- Séance 6Forêts, boosting, comparaison honnête
- Séance 7SHAP, équité, ACP et partitionnement
- DevoirUn modèle champion documenté
- Séance 8Réseaux de neurones, dérive, prédiction conforme
- DevoirUn projet de machine learning livré
- Séance 9Soutenir un projet de machine learning
- RéférenceProjet de score de défaut de crédit
- RéférenceRendements boursiers : XGBoost et sentiment
- RéférenceLe code Python de chaque modèle
- RéférenceDeep learning, l'essentiel
- RéférenceDonnées ouvertes et projets par secteur
- RéférenceManuel de l'expert data et IA
- RéférenceData engineering, SRE et cloud
- RéférencePanorama des modèles de machine learning
À propos de ces fiches
Écrites par l'enseignant à partir des slides du deck, comme un résumé public : les idées clés, les formules et un exemple calculé. Les exercices, leurs corrigés, les contrôles et la notation restent dans le deck, pour les élèves du cours.
Révision : .