Rapport de la séance de travail du 20/04/2025
Introduction
Le cours a commencé à 12h30. L’objectif principal était de construire et comprendre notre
premier modèle de machine learning : la régression linéaire, puis de l’améliorer à l’aide
d’un algorithme d’optimisation — la descente du gradient.
Étape 1 : Préparation des données (Indispensable)
Génération des données
Nous avons généré un jeu de données synthétique simulant une relation linéaire :
from sklearn . datasets import make_regression
X , Y = make_regression ( n_samples =100 , n_features =1 , noise =10)
Y = Y . reshape ( Y . shape [0] , 1)
Analogie : imaginez que vous observez la relation entre la température extérieure (X) et la
consommation d’énergie d’un chauffage (Y). Vous prenez 100 mesures pour voir s’il existe une
tendance linéaire.
Ajout du biais
Ajout d’une colonne de 1 à X pour introduire un biais (ordonnée à l’origine) :
X = np . hstack (( X , np . ones ( X . shape ) ) )
Cela permet de modéliser une fonction de la forme :
ŷ = a · x + b
où a est la pente et b le biais.
Étape 2 : Modélisation de la régression linéaire
Définition du modèle
def model (x , theta ) :
return x . dot ( theta )
Formellement :
ŷ = X · θ
a
où X ∈ Rm×2 , θ = .
b
Analogie : on utilise une règle pour estimer où tombera une bille si elle roule — la pente de
la règle représente a, et sa hauteur initiale b.
1
Étape 3 : Calcul de la fonction coût (MSE)
Fonction coût
def cost_function (x , y , theta ) :
m = len ( y )
return 1/(2* m ) * np . sum (( model (x , theta ) - y ) **2)
Formule mathématique :
m
1 X (i) 2
J(θ) = ŷ − y (i)
2m
i=1
Analogie : comme mesurer l’écart entre des fléchettes et le centre d’une cible.
Étape 4 : Calcul du gradient
def gradient (x , y , theta ) :
m = len ( y )
return 1/ m * x . T . dot ( model (x , theta ) - y )
Formule mathématique :
1 T
∇J(θ) = X (ŷ − y)
m
Analogie : le gradient indique la direction dans laquelle descendre une pente pour atteindre
le minimum.
Étape 5 : Descente du gradient
def gradient_descent (x , y , theta , learning_rate , n_iterations ) :
cost_history = []
for i in range ( n_iterations ) :
theta = theta - learning_rate * gradient (x , y , theta )
cost_history . append ( cost_function (x , y , theta ) )
return theta , cost_history
Mise à jour :
θ := θ − α · ∇J(θ)
où α est le learning rate.
Analogie : c’est comme freiner ou accélérer en vélo sur une pente. Trop vite = danger, trop
lent = inefficace.
Étape 6 : Visualisation
Visualisation des données et du modèle :
plt . scatter ( X [: , 0] , Y . ravel () , label = " Data " )
plt . plot ( X [: , 0] , model (X , theta ) , color = " red " , label = " Model " )
plt . xlabel ( " x " )
plt . ylabel ( " y " )
plt . legend ()
plt . show ()
2
On observe ainsi la droite de régression ajustée aux données.
Conclusion et Recommandations
Cette séance nous a permis de :
— Comprendre la structure d’un modèle de régression linéaire
— Implémenter chaque étape : données, coût, gradient, apprentissage
— Visualiser la convergence du modèle
Recommandation : Relire attentivement les formules et exécuter les cellules du notebook
pour bien assimiler chaque concept.