R´egression lin´eaire et polynomiale
Benjamin Monmege
20 f´evrier 2013
On continue le TP sur la r´egression lin´eaire. Pour rappel, on consid`ere un probl`eme de r´egression lin´eaire
pour lequel on fournit un ensemble de NNexemples (xn, yn)1nN(Rd×R)N. Il s’agit donc de trouver
une fonction faffine de Rddans Rqui minimise l’erreur au sens des moindres carr´es
Err(f) = 1
2N
N
X
n=1
(f(xn)yn)2
Durant ce TP, vous aurez besoin des fichiers de l’archive disponible `a l’adresse http://www.lsv.
ens-cachan.fr/~monmege/teach/learning2013/regression.zip
Exercice 1. Une fonction affine f:RdRest enti`erement d´etermin´ee par un vecteur θ= (θ0θ1· · · θd)T
Rd+1. On cherche donc un tel vecteur θRd+1 minimisant
Err(θ) = 1
2N
N
X
n=1
(θ0+θ1xn,1+. . . +θdxn,d yn)2(1)
On se propose d’impl´ementer cette recherche `a l’aide d’une descente de gradient en MATLAB.
1. Ex´ecuter et comprendre le d´ebut du script scriptRegression.
2. Remplir la fonction errorFunction de telle sorte qu’elle calcule la fonction Err ainsi que son gradient,
en fonction de θ, (xn)1nN, (yn)1nN. La suite du script vous permet de visualiser les lignes de
champs de la fonction d’erreur.
3. La descente de gradient peut ˆetre ex´ecut´ee efficacement grˆace `a la fonction fminunc de MATLAB.
Ex´ecuter la suite du script pour observer les param`etres ainsi calcul´es.
4. Comme on l’a vu en cours, il est possible, dans le cas de la r´egression lin´eaire, de trouver une formule
calculant directement le meilleur param`etre θ, `a l’aide d’un calcul matriciel. On note Xla matrice
(xn,j )1nN,0jd, dans laquelle on a ajout´e une colonne xn,0= 1 aux colonnes de param`etres xn,j
avec 1 jd. Rappeler pourquoi le param`etre θminimisant (1) v´erifie l’´equation θ= (XTX)1XTy,
en supposant que la matrice XTXest inversible. Remplir alors la fonction normalEquation calculant
le param`etre θpar cette m´ethode : vous pourrez utiliser la commande pinv de MATLAB.
Exercice 2. On s’ineresse `a un probl`eme de r´egression appliqu´e `a l’estimation de biens immobiliers, en
fonction de certains attributs : longueur et largeur du terrain, ainsi que nombre de pi`eces dans la maison.
Apr`es avoir entrainer un algorithme de r´egression sur un ensemble de 250 exemples, fournissant le prix de
maisons vendues r´ecemment, ainsi que la valeur des diff´erents attributs, l’objectif est d’estimer au mieux
une nouvelle maison dont on fournit les valeurs des attributs.
Grˆace `a l’instruction load, charger le contenu du fichier house.mat dans MATLAB, `a savoir une matrice
Xcontenant les 250 exemples, chacun comptant 3 param`etres (longueur, largeur, nombre de pi`eces), une
matrice ycontenant les 250 valeurs de vente, ainsi que l’exemple de test x0.
1. Appliquer un algorithme de r´egression lin´eaire. ˆ
Etes-vous satisfait du r´esultat ?
1
2. En vous servant de la signification des diff´erents param`etres, cr´eer de nouveaux attributs qui vous
semblent plus appropri´es pour appliquer une r´egression lin´eaire. Appliquer un algorithme de r´egression
lin´eaire `a ces nouveaux attributs et conclure.
Exercice 3 (R´egression polynomiale et surapprentissage).On consid`ere le cas d= 1 dans cet exercice. On
cherche `a approcher les donn´ees par des fonctions polynomiales de degr´e M.
1. G´en´erer des donn´ees artificielles telles que xnest tir´e suivant une loi uniforme dans l’intervalle [0; 1]
et yn= sin(2πxn) + εavec εsuivant une loi Gaussienne de variance σ2= 0,2.
2. Fixer ici, N= 10 et appliquer une r´egression polynomiale sur les donn´ees (r´egression lin´eaire dans la-
quelle on g´en`ere les nouvelles donn´ees xn, x2
n, x3
n, . . .) simultan´ement avec les degr´es M∈ {0,1,...,9}.1
Que remarquez-vous ?
3. Si Err(θ) est la somme des erreurs au carr´e pour un mod`ele θdonn´e, on note ERMS =pErr(θ)
(root-mean-square error). Pour les diff´erentes valeurs de M, calculer et tracer les valeurs de ERMS sur
l’ensemble de donn´ees.
4. Une vertu attendue d’une fonction de r´egression est de pouvoir pr´edire la valeur yd’une nouvelle
donn´ee x. Partant de cette id´ee, g´en´erer un nouvel ensemble de donn´ees, qu’on appellera ensemble
de donn´ees de validation (contrairement `a l’ensemble de donn´ees initial qu’on appelle ensemble de
donn´ees d’apprentissage), comprenant 100 paires de points suivant la mˆeme loi que les points (xn, yn).
Calculer, pour les valeurs de param`etres θpr´ec´edemment calcul´ees, les valeurs des erreurs ERMS de
ce nouvel ensemble de donn´ees et les tracer sur le mˆeme graphique. `
A partir de ce graphique, quelle
semble ˆetre la meilleure valeur de M.
5. Montrer (grˆace `a MATLAB !) que ce ph´enom`ene de surapprentissage (ou overfitting) s’estompe `a
mesure que le nombre Nde paires de points de l’ensemble de donn´ees d’apprentissage croˆıt.
6. En observant les coefficients des polynˆomes g´en´er´es par l’algorithme sur l’ensemble de donn´ees avec
N= 10, proposer une m´ethode permettant d’´eliminer le surapprentissage : elle sera bas´ee sur un
terme de p´enalit´e suppl´ementaire dans la fonction d’erreur Err(θ), param´etr´e par une valeur λ0
(λ= 0 signifiera que le terme de p´enalit´e n’est pas pris en compte). Impl´ementer votre proposition
dans MATLAB. Pour M= 9, appliquer votre algorithme avec diff´erentes valeurs pour le param`etre
λ. Tracer en particulier les courbes de l’erreur ERMS sur les ensembles de donn´ees d’apprentissage et
de validation pour diff´erentes valeurs de λentre 0 et 1. `
A partir de ce graphique, quelle semble ˆetre la
meilleure valeur de M.
7. On consid`ere maintenant un gros ensemble de donn´ees. On peut alors partitionner cet ensemble en
un ensemble d’apprentissage (60% des donn´ees environ) utilis´e pour apprendre les param`etres θpour
diverses valeurs de Met λ, un ensemble de validation (20% des donn´ees environ) utilis´e pour d´eterminer
la meilleure valeur de λpour chaque valeur de M´etudi´ee, puis un ensemble de test (20% des donn´ees
environ) utilis´e pour d´eterminer la meilleur valeur de M. Appliquer cet algorithme pour un ensemble
de donn´ees de taille 1000.
8. La partition d’un ensemble de donn´ees en 3 parties (apprentissage, validation et test) n’est possible que
si l’ensemble de donn´ees est de taille suffisante. Une alternative possible est la validation crois´ee. Pour
cela, on divise l’ensemble de donn´ees en Sparties : V1, . . . , VS. Pour chaque valeur de s∈ {1, . . . , S},
on peut lancer l’algorithme d’apprentissage sur Si6=sVi, puis on valide la valeur de λen utilisant
l’ensemble Vspour calculer l’erreur ERMS. La s´election de la meilleure valeur de Mpeut alors se faire
selon les diff´erentes valeurs de s. Impl´ementer cet algorithme en MATLAB et le tester.
Exercice 4. Quel serait un raisonnement ressemblant `a celui des questions 6, 7 et 8 de l’exercice pr´ec´edent au
cas de la r´egression lin´eaire. Impl´ementer votre solution en MATLAB et commenter. Montrer qu’il est encore
possible de trouver une solution matricielle exacte du probl`eme de r´egression lin´eaire avec r´egularisation par
un param`etre λ.
1. Vous pouvez le faire `a la main, ou bien chercher une fonction MATLAB le faisant pour vous...
2
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !