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 β .
Plus précisément, il s'agit de la norme ℓ2, ou norme euclidienne, c'est-à-dire
Nous avons donc maintenant le problème d'optimisation suivant :
que l'on peut aussi écrire
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 β de la fonction objective :
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 :
Ce qui nous donne
Or si λ>0 , la matrice (λI+X⊤X) est toujours inversible !
La régression ridge admet donc toujours une unique solution explicite :
Importance de la standardisation des variables
Que se passe-t-il si l'on multiplie la variable x1 par une constante α ? 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⊤(y−Xβ)=0.
Maintenant, si j'appelle ˜X la matrice obtenue en remplaçant x1 par αx1 dans X , la solution ˜β de la régression linéaire qui explique y comme une fonction linéaire de αx1,x2,…,xp vérifie ˜X⊤(y−˜X˜β)=0 . On a donc ∑ni=1αXi1(˜β1−∑j≠1Xijβj−αXi1˜β1)=0, ce dont on peut conclure que ˜β1=1αβ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 x1 par une constante dépend aussi du terme de régularisation λβ21 , 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 :
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 λ ? Si λ est très grand, alors la régularisation prend le dessus, le terme d'erreur n'importe plus et la solution est β=0 . À l'inverse, si λ 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 βj en fonction de λ quand λ 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.
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.RidgeCV
permet de déterminer la valeur optimale du coefficient de régularisation par validation croisée.