TP 4 – Master Informatique Ann´ee 1
Objectifs du TP :
– impl´ementer et analyser l’algorithme de r´egression lin´eaire par moindres carr´es,
– utiliser scikit-learn pour tester et comparer deux algorithmes de r´egression r´egularis´ee, Ridge et
Lasso, extension de la r´egression par moindres carr´es,
– tester les algorithmes sur des donn´ees simul´ees et des donn´ees r´eelles.
1 R´egression lin´eaire par moindres carr´es
L’algorithme de r´egression par moindres carr´es, dans sa version standard, est un algorithme de
r´egression lin´eaire. Les donn´ees d’apprentissage utilis´ees dans cette section s’´ecrivent sous la forme
S={(xi, yi)}n
i=1 avec xi∈Rd(dest le nombre d’attributs des donn´ees d’entr´ee) et yi∈R.
A partir des donn´ees {(xi, yi)}n
i=1, l’objectif est d’apprendre un vecteur w∈Rdet un biais b∈Rtel
que yi≈ hw, xii+bpour tout xi∈S.hw, xi:= Pd
j=1 w(j)x(j)est le produit scalaire entre les deux
vecteurs wet x, avec w(j)et x(j)les j-`emes composantes des vecteurs wet x.
L’id´ee de l’algorithme du r´egression lin´eaire par moindres carr´es est de r´esoudre le probl`eme d’opti-
misation suivant :
arg min
w∈Rd,b∈R
n
X
i=1
yi− hw, xii − b2.
Une forme analytique de la solution de ce probl`eme est donn´ee par la formule suivante :
¯w= ( ¯
X>¯
X)−1¯
X>y,
avec ¯w= (w, b)>∈Rd+1 et ¯
X= (X,1)∈Rn×(d+1)o`u X∈Rn×dest la matrice contenant les
donn´ees (xi)n
i=1 et 1∈Rnest le vecteur dont toutes les composantes sont ´egales `a 1. y∈Rnest le
vecteur contenant les labels (yi)n
i=1.
Algorithme R´egression lin´eaire par moindres carr´es
Entr´ee : une liste Sde donn´ees d’apprentissage, (x1, y1),...,(xn, yn) o`u xi∈Rdet yi∈R,
Sortie : le vecteur de pond´eration w.
1. Construire ¯
Xen ajoutant le vecteur 1`a la matrice X∈Rn×dcontenant les donn´ees (xi)n
i=1,
2. Calculer ¯w= ( ¯
X>¯
X)−1¯
X>y, avec y= (yi)n
i=1 ∈Rn,
3. Retourner ¯w.
1) Impl´ementez l’algorithme de r´egression lin´eaire par moindres carr´es d´ecrit ci-dessus.
2) Le fichier dataRegLin2D contient un jeu de donn´ees bi-dimensionnelles. Chaque exemple de ce
jeu de donn´ees est constitu´e de deux valeurs r´eelles (2D) associ´ees `a une ´etiquette de valeur r´eelle
aussi. Utilisez la commande loadtext de numpy pour acc´eder aux donn´ees sous python. Affichez les
donn´ees sur un graphique 3D (trois axes : x(1),x(2) et y). La d´ependance entre les ´etiquettes yiet
les donn´ees xiest-elle lin´eaire ? Repr´esentez aussi sur deux graphiques 2D les points yiet x(1)
iet yi
et x(2)
i. Que remarquez-vous ?
3) Appliquez l’algorithme de r´egression lin´eaire par moindres carr´es avec les diff´erentes configurations
d’entr´ee/sortie d´ecrites dans 2) et repr´esentez sur les mˆemes graphiques les donn´ees et les solutions
de r´egression obtenues.
4) Ecrivez une fonction qui permet de pr´edire le label ytest d’une donn´ee xtest utilisant un vecteur
de pond´eration wappris avec l’algorithme de r´egression par moindres carr´es et calculez l’erreur de
pr´ediction sur les donn´ees d’apprentissage.
Universit´e d’Aix-Marseille – 2015-2016