Retour au blog

Introduction au machine learning : concepts clés pour étudiants en data science

Ce que veut dire « apprendre » en formules : risque, perte, biais et variance, régularisation, descente de gradient, et trois exercices corrigés.

Cet article a été rédigé à des fins pédagogiques. Les informations présentées peuvent évoluer. Nous t’invitons à vérifier auprès de sources officielles.

Dans un cours de machine learning (apprentissage automatique) de master, apprendre a un sens précis : choisir, dans une famille de modèles fixée d'avance, celui qui se trompe le moins en moyenne sur les exemples, sans trop coller à ces exemples-là. Pour prédire la durée $y$ d'une livraison à partir de la distance $x$ avec $\hat y = wx$, tu cherches la pente $w$ qui minimise la moyenne des $(y_i - w x_i)^2$, quitte à la tirer vers 0 pour qu'elle dépende moins de quelques livraisons atypiques.

Tout le vocabulaire du cours découle de cette phrase.

Apprendre, c'est minimiser un risque

Note $x$ les entrées d'un exemple et $y$ la réponse à prédire. Un modèle $f$ donne une prédiction $f(x)$, et une fonction de perte $\ell\big(y, f(x)\big)$ la juge : un nombre positif, nul si la prédiction est exacte, d'autant plus grand qu'elle se trompe.

Définition : le risque de $f$ est sa perte moyenne sur l'ensemble des cas possibles, $R(f) = \mathbb{E}\big[\ell\big(Y, f(X)\big)\big]$, où le couple $(X,Y)$ suit la loi, inconnue, des données. Sur $n$ exemples $(x_i,y_i)$, on ne peut calculer que le risque empirique $\hat R_n(f) = \dfrac{1}{n}\displaystyle\sum_{i=1}^{n} \ell\big(y_i, f(x_i)\big)$.

Apprendre, c'est chercher le modèle $\hat f$ qui minimise $\hat R_n$ dans une famille fixée $\mathcal{F}$, par exemple les droites ou les arbres de profondeur au plus 3. On parle de minimisation du risque empirique.

Tout le cours tourne autour d'un écart : $\hat R_n(\hat f)$ sous-estime en général $R(\hat f)$, puisque $\hat f$ a été choisi pour réussir sur ces exemples-là. Pour mesurer $R$, il faut des données que l'apprentissage n'a jamais vues : c'est le rôle du jeu de test.

La perte fixe ce que tu prédis

Le choix de $\ell$ décide de ce que ton modèle estime. Pour le voir, prends le modèle le plus pauvre : une constante $c$ prédite pour tout le monde.

Propriété : parmi les constantes, la perte quadratique $(y - c)^2$ donne le plus petit risque empirique en $c = \bar y$, la moyenne des $y_i$ ; la perte absolue $|y - c|$, en leur médiane.

La dérivée de $\sum (y_i - c)^2$ par rapport à $c$ vaut $-2\sum (y_i - c)$, nulle pour $c = \bar y$. Celle de $\sum |y_i - c|$ vaut, entre deux points, le nombre de $y_i$ sous $c$ moins le nombre au-dessus : elle passe du négatif au positif à la médiane, où la somme est donc minimale.

Pour un modèle qui dépend de $x$, la perte quadratique vise l'espérance de $Y$ sachant $X = x$, la perte absolue sa médiane. Avec quelques valeurs extrêmes, les deux cibles s'écartent : en élevant les écarts au carré, la perte quadratique se laisse tirer par elles (exercice 1).

En classification, la perte naturelle (1 si la classe prédite est fausse, 0 sinon) a une dérivée nulle presque partout, donc aucune pente à suivre pour l'optimiser. On minimise à sa place la perte logistique, ou entropie croisée, $-\big(y \ln p + (1 - y)\ln(1 - p)\big)$, où $p$ est la probabilité prédite pour la classe $y = 1$.

Biais, variance et bruit

Un modèle surapprend quand il réussit bien mieux sur ses exemples que sur des données nouvelles. Pour la perte quadratique, la décomposition biais-variance dit pourquoi.

Suppose qu'en un point $x_0$ la réponse soit $Y = f^*(x_0) + \varepsilon$, où $f^*$ est la vraie relation et $\varepsilon$ un bruit de moyenne nulle et de variance $\sigma^2$. Le modèle appris $\hat f$ dépend du jeu d'entraînement, tiré au hasard : un autre jeu donnerait un autre $\hat f$. En moyenne sur les jeux d'entraînement et sur le bruit :

Formule :

$$\mathbb{E}\Big[\big(Y - \hat f(x_0)\big)^2\Big] = \underbrace{\Big(\mathbb{E}\big[\hat f(x_0)\big] - f^*(x_0)\Big)^2}_{\text{biais}^2} + \underbrace{\operatorname{Var}\big(\hat f(x_0)\big)}_{\text{variance}} + \underbrace{\sigma^2}_{\text{bruit}}$$

Le biais est l'erreur que garde en moyenne une famille trop rigide : une droite ne suivra jamais une parabole. La variance mesure combien $\hat f$ bouge d'un jeu d'entraînement à l'autre : un polynôme de haut degré ajusté sur peu de points change du tout au tout. Le bruit ne dépend d'aucun modèle, c'est le plancher de l'erreur (documentation de scikit-learn).

Quand la famille s'assouplit, le biais baisse et la variance monte : l'erreur de test dessine une cuvette, sous-apprentissage à gauche, surapprentissage à droite. Plus d'exemples font baisser la variance ; le biais d'une famille trop rigide, lui, reste.

Piège classique : ce « biais » n'est ni le biais discriminatoire d'un modèle injuste, ni la constante $b$ d'un modèle linéaire, qu'on appelle aussi biais. Dans une copie, précise duquel tu parles.

Régularisation et hyperparamètres

Pour réduire la variance sans changer de famille, on pénalise les modèles trop compliqués. Pour un modèle linéaire de coefficients $w_1, \dots, w_p$, la régression ridge minimise :

$$\sum_{i=1}^{n}\big(y_i - \hat y_i\big)^2 + \lambda \sum_{j=1}^{p} w_j^2$$

où $\hat y_i$ est la prédiction pour l'exemple $i$ et $\lambda \geqslant 0$ règle la force de la pénalité. Le lasso remplace $\sum w_j^2$ par $\sum |w_j|$. Plus $\lambda$ grandit, plus les coefficients sont tirés vers 0 : le modèle perd de la variance et gagne du biais. Le lasso va plus loin et annule exactement certains coefficients, ce qui écarte des variables. Dans scikit-learn, $\lambda$ s'appelle alpha, et le lasso y divise en plus la somme des carrés par $2n$.

Le réglage $\lambda$ ne s'apprend pas comme les $w_j$ : c'est un hyperparamètre, fixé avant l'apprentissage, comme la profondeur d'un arbre. Les $w_j$ minimisent le risque empirique sur l'entraînement ; $\lambda$ se choisit sur des données à part, un jeu de validation ou une validation croisée (documentation de scikit-learn).

Piège classique : régler $\lambda$ sur l'erreur d'entraînement. Celle-ci est toujours la plus petite pour $\lambda = 0$, puisque la pénalité ne fait qu'éloigner les $w_j$ du minimum de la seule somme des carrés.

La descente de gradient

La ridge se résout par une formule, la régression logistique ou un réseau de neurones non. On minimise alors $\hat R_n$ pas à pas. Le gradient $\nabla \hat R_n(w)$, vecteur des dérivées partielles, pointe là où le risque monte le plus vite ; on avance dans l'autre sens :

$$w_{t+1} = w_t - \eta\, \nabla \hat R_n(w_t)$$

Le pas $\eta > 0$, ou taux d'apprentissage, est un hyperparamètre de plus. Trop petit, la descente traîne. Trop grand, chaque pas saute par-dessus le minimum et peut s'en éloigner de plus en plus (exercice 3).

Sur de gros jeux de données, la descente de gradient stochastique calcule chaque pas sur un mini-lot d'exemples tirés au hasard : un pas plus bruité, mais bien moins coûteux.

Exercices corrigés

Les données sont fictives. Cherche chaque exercice sur ta feuille avant d'ouvrir sa correction.

Exercice 1 : Une application doit afficher une durée unique pour le trajet d'un étudiant jusqu'à son campus. Elle a relevé cinq trajets, en minutes : 12, 15, 18, 20 et 85 (un train supprimé). Quelle constante minimise le risque empirique avec la perte quadratique ? Avec la perte absolue ? Calcule le risque empirique absolu de chacune, puis choisis celle à afficher.

Correction :

Perte quadratique : la moyenne, $\dfrac{12 + 15 + 18 + 20 + 85}{5} = \dfrac{150}{5} = 30$ min. Perte absolue : la médiane, valeur du milieu une fois les durées rangées, soit 18 min.

Risque absolu en 18 : $\dfrac{6 + 3 + 0 + 2 + 67}{5} = 15{,}6$ min. En 30 : $\dfrac{18 + 15 + 12 + 10 + 55}{5} = 22$ min.

Un seul trajet raté tire la moyenne à 30 min, plus que quatre trajets sur cinq. Pour annoncer un trajet typique, affiche la médiane : 18 min.

Exercice 2 : Un coursier relève trois livraisons, distance $x$ en km et durée $y$ en minutes : $(1\,;2)$, $(2\,;4)$ et $(3\,;5)$. Le modèle est $\hat y = wx$, et la ridge minimise $J(w) = \displaystyle\sum_{i=1}^{3}(y_i - w x_i)^2 + \lambda w^2$.

a) Montre que $\hat w = \dfrac{\sum x_i y_i}{\sum x_i^2 + \lambda}$.

b) Calcule $\hat w$ pour $\lambda = 0$, puis pour $\lambda = 6$.

c) Calcule dans les deux cas la somme des carrés des erreurs sur ces trois livraisons. Faut-il en conclure que $\lambda = 0$ est le meilleur réglage ?

Correction :

a) $J'(w) = -2\sum x_i(y_i - w x_i) + 2\lambda w$ s'annule quand $\sum x_i y_i = w\big(\sum x_i^2 + \lambda\big)$, d'où la formule. Comme $J''(w) = 2\big(\sum x_i^2 + \lambda\big) > 0$, c'est bien un minimum.

b) $\sum x_i y_i = 2 + 8 + 15 = 25$ et $\sum x_i^2 = 1 + 4 + 9 = 14$. Pour $\lambda = 0$ : $\hat w = \dfrac{25}{14} \approx 1{,}79$ min/km. Pour $\lambda = 6$ : $\hat w = \dfrac{25}{20} = 1{,}25$ min/km. La pénalité tire la pente vers 0.

c) Pour $\hat w = \dfrac{25}{14}$, les écarts valent $\dfrac{3}{14}$, $\dfrac{6}{14}$ et $-\dfrac{5}{14}$ min, d'où une somme des carrés de $\dfrac{9 + 36 + 25}{196} = \dfrac{5}{14} \approx 0{,}36$ min². Pour $\hat w = 1{,}25$, ils valent $0{,}75$, $1{,}5$ et $1{,}25$ min, d'où $0{,}5625 + 2{,}25 + 1{,}5625 = 4{,}375$ min².

Sur l'entraînement, $\lambda = 0$ gagnera toujours, puisqu'il minimise justement cette somme. Le bon réglage se juge sur des livraisons que le modèle n'a pas vues.

Exercice 3 : Mêmes livraisons, sans pénalité, avec le risque empirique $\hat R(w) = \dfrac{1}{3}\displaystyle\sum_{i=1}^{3}(y_i - w x_i)^2$.

a) Montre que $\hat R'(w) = \dfrac{2}{3}(14w - 25)$.

b) En partant de $w_0 = 0$, calcule $w_1$ par descente de gradient avec $\eta = 0{,}03$, puis avec $\eta = 0{,}25$.

c) On note $\hat w = \dfrac{25}{14}$ le minimum. Montre que $w_{t+1} - \hat w = \left(1 - \dfrac{28\eta}{3}\right)(w_t - \hat w)$, puis dis ce que devient la descente pour chacun des deux pas.

Correction :

a) $\hat R'(w) = -\dfrac{2}{3}\sum x_i(y_i - w x_i) = \dfrac{2}{3}\big(w\sum x_i^2 - \sum x_i y_i\big) = \dfrac{2}{3}(14w - 25)$.

b) $\hat R'(0) = -\dfrac{50}{3}$. Avec $\eta = 0{,}03$ : $w_1 = 0 - 0{,}03 \times \left(-\dfrac{50}{3}\right) = 0{,}5$ min/km. Avec $\eta = 0{,}25$ : $w_1 = 0{,}25 \times \dfrac{50}{3} \approx 4{,}17$ min/km, bien au-delà de $\hat w \approx 1{,}79$.

c) Comme $14\hat w = 25$, on a $\hat R'(w_t) = \dfrac{28}{3}(w_t - \hat w)$ : on reporte dans $w_{t+1} = w_t - \eta\,\hat R'(w_t)$, puis on retranche $\hat w$.

Pour $\eta = 0{,}03$, le facteur vaut $0{,}72$ : l'écart au minimum fond de 28 % à chaque pas, la descente converge. Pour $\eta = 0{,}25$, il vaut $1 - \dfrac{7}{3} = -\dfrac{4}{3}$ : l'écart change de signe et grossit d'un tiers à chaque pas, la descente diverge. Elle ne converge que si $\left|1 - \dfrac{28\eta}{3}\right| < 1$, soit $0 < \eta < \dfrac{3}{14} \approx 0{,}21$.

À retenir

À retenir :

  • Apprendre, c'est minimiser le risque empirique $\hat R_n$ dans une famille fixée ; le vrai but reste le risque $R$.
  • La perte fixe la cible : la moyenne pour la perte quadratique, la médiane pour la perte absolue.
  • En perte quadratique, $\text{erreur} = \text{biais}^2 + \text{variance} + \text{bruit}$ : assouplir le modèle échange du biais contre de la variance.
  • Ridge et lasso tirent les coefficients vers 0, le lasso en annule certains.
  • Un hyperparamètre se règle sur une validation, jamais sur l'erreur d'entraînement.
  • Descente de gradient : $w_{t+1} = w_t - \eta\,\nabla \hat R_n(w_t)$, et un pas trop grand diverge.

Sources

Tu peux partager cette page librement, en citant ORBITECH AI Academy avec son lien.