• 10 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 02/08/2023

Réduisez l’amplitude des poids affectés à vos variables

Dans le chapitre précédent, nous avons vu que la régularisation permet d'éviter le sur-apprentissage d'une régression linéaire en rajoutant à la fonction objective (la somme des carrés des erreurs) un terme de régularisation qui mesure la complexité du modèle.

Régularisation de Tykhonov

 La régularisation de Tykhonov est un cas particulier de régularisation, dans lequel on utilise pour régulariser la régression linéaire le carré de la norme du vecteur de poids $\(\beta\)$ .

Plus précisément, il s'agit de la norme $\(\ell_2\)$, ou norme euclidienne, c'est-à-dire

$\[||\beta||_2^2 = \sum_{j=0}^p \beta_j^2.\]$

 Nous avons donc maintenant le problème d'optimisation suivant :

$\[\arg \min_{\beta \in \mathbb{R}^{p+1}} (y - X\beta)^\top (y-X\beta) + \lambda ||\beta||_2^2,\]$

 que l'on peut aussi écrire

$\[\arg \min_{\beta \in \mathbb{R}^{p+1}} ||y - X\beta||_2^2 + \lambda ||\beta||_2^2\]$

 

Le modèle linéaire que l'on apprend en résolvant cette équation est appelé régression ridge, ou ridge regression en anglais.

Solution de la régression ridge

 La fonction à minimiser est encore une fois une forme quadratique. Comme dans le cas de la méthode des moindres carrés (régression linéaire non régularisée), nous pouvons résoudre ce problème d'optimisation en annulant le gradient en $\(\beta\)$ de la fonction objective : 

$\[\nabla_\beta \left( ||y - X\beta||_2^2+\lambda ||\beta||_2^2 \right) = 0\]$

Encore une fois, il s'agit du gradient d'une forme quadratique, qui se calcule de manière analogue à la dérivée d'un polynôme de degré 2 :

$\[- 2 X^\top (y - X\beta) + 2 \lambda \beta = 0\]$

 Ce qui nous donne

$\[(\lambda I + X^\top X) \beta = X^\top y.\]$

 Or si $\(\lambda > 0\)$ , la matrice $\((\lambda I + X^\top X) \)$ est toujours inversible !

La régression ridge admet donc toujours une unique solution explicite :

$\[\beta = ( \lambda I + X^\top X)^{-1} X^\top y.\]$

 

Importance de la standardisation des variables

Que se passe-t-il si l'on multiplie la variable $\(x_1\)$ par une constante $\(\alpha\)$ ? Regardons tout d'abord le cas de la régression linéaire sans régularisation. La solution de la régression linéaire vérifie  $\(X^\top (y − X \beta)=0.\)$

Maintenant, si j'appelle  $\(\tilde X\)$ la matrice obtenue en remplaçant  $\(x_1\)$ par  $\(\alpha x_1\)$ dans  $\(X\)$ , la solution $\(\tilde \beta\)$ de la régression linéaire qui explique $\(y\)$ comme une fonction linéaire de $\(\alpha x_1, x_2, \dots, x_p\)$ vérifie $\(\tilde X^\top (y− \tilde X \tilde \beta)=0\)$ . On a donc $\(\sum_{i=1}^n \alpha X_{i1} \left( \tilde \beta_1 - \sum_{j \neq 1} X_{ij} \beta_j - \alpha X_{i1} \tilde \beta_1 \right) = 0,\)$ ce dont on peut conclure que $\(\tilde \beta_1 = \frac{1}{\alpha} \beta_1.\)$ Ainsi, multiplier une variable par une constante équivaut à diviser le poids correspondant par la même constante.

Dans le cas de la régression ridge, cependant, l'effet de la multiplication de  $\(x_1\)$ par une constante dépend aussi du terme de régularisation $\(\lambda \beta_1^2\)$ , et est bien moins clair.

Pour cette raison, l'échelle de la plage des valeurs prises par les différentes variables a un impact sur le résultat de la régression ridge (mais pas sur celui de la régression non régularisée). Pour cette raison, je vous recommande fortement de standardiser les variables avant d'apprendre une régression ridge. Il s'agit de faire en sorte que chaque variable ait un écart-type de 1, en leur appliquant la transformation suivante :

$\[X_j^i \leftarrow \frac{X_j^i}{\sqrt{\frac{1}{n} \sum_{i=1}^n (X_j^i - \frac{1}{n} \sum_{i=1}^n X_j^i )^2}}.\]$

 Cette transformation est implémentée dans sklearn.preprocessing.StandardScaler.

Chemin de régularisation

Comment la solution de la régression ridge évolue-t-elle en fonction du coefficient de régularisation  $\(\lambda\)$ ? Si  $\(\lambda\)$ est très grand, alors la régularisation prend le dessus, le terme d'erreur n'importe plus et la solution est $\(\beta=0\)$ . À l'inverse, si $\(\lambda\)$ est très faible, le terme de régularisation n'est plus utilisé, et on retrouve la solution de la régression linéaire non régularisée.

On peut visualiser l'effet que la valeur du coefficient de régularisation a sur chaque variable en affichant la valeur des différents coefficients $\(\beta_j\)$ en fonction de  $\(\lambda\)$ quand $\(\lambda\)$ décroît. Le résultat s'appelle le chemin de régularisation.

En pratique, on choisira la valeur optimale du coefficient de régularisation entre ces deux extrêmes (solution nulle et solution de la régression non régularisée) par validation croisée.

Exemple de chemin de régularisation pour 4 variables.
Exemple de chemin de régularisation pour 4 variables.

Un des effets de la régression ridge, que l'on peut observer sur le schéma entre les variables j=2 et j=4, est de grouper les variables corrélées, en leur affectant des coefficients similaires. Là où la régression non régularisée peut « répartir » le poids affecté à un groupe de variable corrélées de plusieurs façons, la régression régularisée les répartit de manière homogène.

 

 Conclusion

  • La norme ℓ2 du vecteur de poids peut être utilisée comme terme de régularisation de la régression linéaire.

  • Cela s'appelle la régularisation de Tykhonov, ou régression ridge.

  • La régression ridge admet toujours une solution analytique unique.

  • La régression ridge permet d'éviter le surapprentissage en restraignant l'amplitude des poids.

  • La régression ridge a un effet de sélection groupée : les variables corrélées ont le même coefficient.

 La régression ridge est implémentée dans scikit-learn : linear_model.Ridge.

linear_model.RidgeCVpermet de déterminer la valeur optimale du coefficient de régularisation par validation croisée.

Exemple de certificat de réussite
Exemple de certificat de réussite