TP 1 A Rendre
TP 1 A Rendre
TP 1 A Rendre
ŷ = hθ (x) = θT .x = θ0 + θ1 x1 + ... + θn xn
y = 4 + 3x + bruit gaussien
(a) Péréliminaires
i. Tester le segment de code qui suit
x=2
z= np.c_[1,x]
#z-> ?
x=np.rand(3,1)
X=np.c_[np.ones((3,1)),x]
#X-> ?
ii. Quelle est la valeur de z,
iii. En déduire le rôle de la fonction c_ de Numpy,
iv. Générez deux vecteurs aléatoires et faite la concaténation à
l’aide de la fonction c_.
v. L’équation de régression lorsque les entrées sont composées
d’une seule valeur x est donnée par
(
θ0
ŷ = θ0 + θ1 x = [1, x] = [1, x] θT
θ1
DIC1-2022-GIT-ML- NFN
y = 4x2
(b) Ecrire une fonction qui permet de calculer la dérivée partielle des
paramètres theta0 et theta1 .
def de r i ve e s_ p a rt i el l es ( ancien_theta0 , ancien_theta1 ):
derivee_theta0 = float (0)
derivee_theta1 = float (0)
for i in range (0 , len ( X )):
derivee_theta0 += float ((( ancien_theta0 +
( ancien_theta1 * X [ i ]))
- float ( Y [ i ])))
derivee_theta1 += ((( ancien_theta0 +
( ancien_theta1 * X [ i ])))
- float ( Y [ i ])) * float ( X [ i ])
derivee_theta0 = (1/ M ) * derivee_theta0
derivee_theta1 = (1/ M ) * derivee_theta1
return [ derivee_theta0 , derivee_theta1 ]
print ( " After {0} iterations theta0 = {1} , theta1 = {2} " . format (
nombre_iterations , final_theta0 , final_theta1 ))
# Numpy
X_norm =( X - X . mean ( axis =0))/ X . std ( axis =0)
# StandardScaler de ScikitLearn
from sklearn . preprocessing import StandardScaler
scaler = StandardScaler ()
X_norm = scaler . fit_transform ( X )
où
m
∂ 2 X T i
θ .x − y i xij
M SE (θ) =
∂θj m
i=1
Une fois que l’on a le vecteur de gradient, il suffit d’aller dans la direc-
tion opposée pour descendre. Ainsi le pas de descente de gradient est
donnée par
θEtapeSuivante = θ − η∇θ M SE (θ)
où η est le taux d’apprentissage.
(a) Implémenter l’algorithme de descente de gradient ordinaire avec
un nombre d’itération de l’algorithme fixé à 1000.
(b) En vous basant sur les graphes et les temps de calcul, interpréter
les résultats obtenus avec les taux d’apprentissage suivantes : η =
0.02, η = 0.1 et η = 0.5.
(c) En testant plusieurs nombre d’itération différentes, interpréter
l’impact du nombre d’itération sur le résultat obtenu.
(d) Modifier l’algorithme de manière à choisir un très grand nombre
d’itérations, et interrompre l’algorithme lorsque le vecteur de gra-
dient devient très petit ie quand sa norme devient inférieure à
une tolérance epsilon ; ce qui signifie que la descente de gradient
atteint presque son minimum.
(e) Rappeler les avantages et inconvénient, puis implémenter et tester
les méthodes de descente de gradient suivantes
i. Descente de gradient stochastique,
ii. Descente de gradient par mini-lots.