Régularisation
Introduction :
Dans cet exercice, vous allez implémenter une régression linéaire régularisée et l'utiliser
pour étudier des modèles avec différentes propriétés biais-variance.
1. Régression linéaire régularisée :
Dans la première moitié de l'exercice, vous implémenterez une régression linéaire régularisée
pour prédire la quantité d'eau sortant d'un barrage en utilisant le changement de niveau d'eau
dans un réservoir. Au cours de la deuxième moitié, vous passerez en revue certains diagnostics
d'algorithmes d'apprentissage de débogage et examinerez les effets du biais par rapport à la
variance.
1.1 Visualisation du DATASET
Nous commencerons par visualiser l'ensemble de données contenant des enregistrements
historiques sur le changement du niveau d'eau, x, et la quantité d'eau qui s'écoule du barrage, y.
Ce jeu de données est divisé en trois parties :
• Un ensemble d'apprentissage sur lequel votre modèle apprendra : X, y
• Un jeu de validation croisée pour déterminer le paramètre de régularisation : Xval, yval
• Un jeu de test pour évaluer les performances. Ce sont des exemples "inédits" que votre
modèle n'a pas vu pendant l'entraînement : Xtest, ytest
La prochaine étape de tracera les données de formation (Figure 1). Dans le parties suivantes, vous
implémenterez la régression linéaire et l'utiliserez pour ajuster un ligne droite vers les données et
tracer les courbes d'apprentissage. Suite à cela, vous allez mettre en œuvre la régression
polynomiale pour trouver un meilleur ajustement aux données.
1.2 Fonction de coût de régression linéaire régularisée
Rappelons que la régression linéaire régularisée a la fonction de coût suivante :
où λ est un paramètre de régularisation qui contrôle le degré de régularisation (ainsi, aide à
prévenir le surapprentissage). Le terme de régularisation pénalise le coût global J. À mesure
que les grandeurs des paramètres du modèle θj augmentent, la pénalité augmente également.
Notez qu'il ne faut pas régulariser le terme θ0.
Vous devez maintenant compléter le code dans le notebook. Votre tâche consiste à écrire une
fonction pour calculer la fonction de coût de régression linéaire régularisée. Si possible,
essayez de vectoriser votre code et évitez d'écrire des boucles.
Lorsque vous terminez, exécutez votre fonction de coût en utilisant thêta initialisé à [1 ; 1].
Vous devriez vous attendre à voir une sortie de 303.993.
De même, la dérivée partielle du coût de la régression linéaire régularisée pour θj est définie
comme
1.3 Ajustement de la régression linéaire
Dans cette partie, nous fixons le paramètre de régularisation λ à zéro. Parce que la régression
linéaire tente d'ajuster un θ bidimensionnel, et par la suite la régularisation ne sera pas
incroyablement utile pour un θ d'une dimension aussi faible. Dans les dernières parties de
l'exercice, vous utiliserez la régression polynomiale avec régularisation :
Enfin, on doit également tracer la meilleure ligne d'ajustement, ce qui entraîne une image
similaire à la figure 2. La ligne de meilleur ajustement nous indique que le modèle n’est pas
un bon ajustement aux données parce que les données ont un modèle non linéaire. Bien que
la visualisation du meilleur ajustement comme indiqué soit un moyen possible de déboguer
votre algorithme d'apprentissage, il n'est pas toujours facile de visualiser les données et le
modèle. Dans la section suivante, vous implémenterez une fonction pour générer des courbes
d'apprentissage qui peuvent vous aider à déboguer votre algorithme d'apprentissage même
s'il n'est pas facile de visualiser les données.
2. Biais-Variance :
Un concept important dans l'apprentissage automatique est le compromis biais-variance. Les
modèles à fort biais ne sont pas assez complexes pour les données et ont tendance à être
sous-ajustés, tandis que les modèles à forte variance sur-ajustent les données
d'apprentissage.
Dans cette partie de l'exercice, vous allez tracer les erreurs d'entraînement et de test sur une
courbe d'apprentissage pour diagnostiquer les problèmes de biais-variance.
2.1 Courbes d'apprentissage
Vous allez maintenant implémenter du code pour générer les courbes d'apprentissage qui
seront utiles au débogage des algorithmes d'apprentissage. Rappelez-vous qu'une courbe
d'apprentissage trace l’entrainement et l'erreur de validation croisée en fonction de la taille
de l'ensemble de l’entrainement. Votre travail consiste à remplir la fonction learningCurve d,
afin qu'elle renvoie un vecteur d'erreurs pour l'ensemble d'apprentissage et l'ensemble de
validation croisée.
Pour tracer la courbe d'apprentissage, nous avons besoin d'une erreur d'ensemble
d'apprentissage et de validation croisée pour différentes tailles d'ensemble d'apprentissage.
Pour obtenir différentes tailles d'ensembles d'apprentissage, vous devez utiliser différents
sous-ensembles de l'ensemble d'apprentissage d'origine X. Plus précisément, pour une taille
d'ensemble d'apprentissage i, vous devez utiliser les premiers exemples (c'est-à-dire X[:i, :] et
y[:i] ).
Notez que le lambda est passé en paramètre à la fonction learningCurve. Après avoir appris
les paramètres θ, vous devez calculer l'erreur sur les ensembles d'apprentissage et de
validation croisée. Rappelez-vous que l'erreur d'apprentissage pour un ensemble de données
est définie comme
En particulier, notez que l'erreur d'apprentissage n'inclut pas le terme de régularisation. Une
façon de calculer l'erreur d’entrainement consiste à utiliser votre fonction de coût existante
et à définir λ sur 0 uniquement lorsque vous l'utilisez pour calculer l'erreur d’apprentissage et
l'erreur de validation croisée. Lorsque vous calculez l'erreur de l'ensemble d'apprentissage,
assurez-vous de le calculer sur le sous-ensemble d'apprentissage (c'est-à-dire X(1:n,:) et
y(1:n)) (au lieu de l'ensemble d'apprentissage complet). Cependant, pour l'erreur de validation
croisée, vous devez la calculer sur l'ensemble de l'ensemble de validation croisée. Vous devriez
stocker les erreurs calculées dans les vecteurs error train et error val.
Dans la figure 3, vous pouvez observer que l'erreur de l’apprentissage et l'erreur de validation
croisée sont élevées lorsque le nombre d'exemples d’entrainement est augmenté. Cela reflète
un problème de biais élevé dans le modèle - le modèle de régression linéaire est trop simple
et ne peut pas bien s'adapter à notre ensemble de données. Dans la section suivante, vous
implémenterez la régression polynomiale pour adapter un meilleur modèle à cet ensemble de
données
3. Regréssion polynomiale
Le problème avec notre modèle linéaire était qu'il était trop simple pour les données et par
la suite a entraîné un sous-apprentissage (biais élevé). Dans cette partie de l'exercice, vous
allez résoudre ce problème en ajoutant d'autres fonctionnalités.
Pour utiliser la régression polynomiale, notre hypothèse a la forme :
Notez qu'en définissant x1 = (waterLevel), x2 = (waterLevel)2, . . . , xp = (waterLevel)p, nous
obtenons un modèle de régression linéaire où les caractéristiques sont les différentes
puissances de la valeur d'origine (waterLevel). Maintenant, vous allez ajouter plus d'entités en
utilisant les puissances supérieures de l'entité existante x dans le jeu de données. Votre tâche
dans cette partie consiste implémenter polyFeatures afin que la fonction mappe l'ensemble
d'apprentissage d'origine X de taille m × 1 dans ses puissances supérieures. Plus précisément,
lorsqu'un ensemble d'apprentissage X de taille m × 1 est transmis à la fonction, la fonction
doit renvoyer une matrice (m×p) X_poly.