Durée : 50 minutes
y = wx + b) et son interprétation.
La régression linéaire est un modèle permettant de prédire une variable continue en établissant une relation linéaire entre les variables d’entrée et la variable cible. On modélise généralement par l’équation y = wx + b.
La fonction de coût (souvent l’erreur quadratique moyenne, MSE) mesure l’écart entre les prédictions du modèle et les données réelles. La descente de gradient est une méthode itérative pour minimiser cette fonction en ajustant les paramètres w et b.
Objectif : Générer un jeu de données simulé, appliquer la descente de gradient pour ajuster un modèle de régression linéaire et visualiser le résultat.
import numpy as np
import matplotlib.pyplot as plt
# Génération d'un jeu de données simulé
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
# Ajout de la colonne de biais
X_b = np.c_[np.ones((100, 1)), X]
# Paramètres de la descente de gradient
eta = 0.1 # Taux d'apprentissage
n_iterations = 1000 # Nombre d'itérations
m = 100 # Nombre d'exemples
theta = np.random.randn(2, 1)
for iteration in range(n_iterations):
gradients = 2/m * X_b.T.dot(X_b.dot(theta) - y)
theta = theta - eta * gradients
print("Paramètres trouvés (theta) :", theta)
# Visualisation
plt.plot(X, y, "b.")
X_new = np.array([[0], [2]])
X_new_b = np.c_[np.ones((2, 1)), X_new]
y_predict = X_new_b.dot(theta)
plt.plot(X_new, y_predict, "r-", linewidth=2)
plt.xlabel("x")
plt.ylabel("y")
plt.title("Régression linéaire par descente de gradient")
plt.show()
numpy et matplotlib sont installés (pip install numpy matplotlib).X_b.Le code génère un jeu de données simulé, puis initialise aléatoirement les paramètres. La boucle de descente de gradient ajuste ces paramètres pour minimiser la MSE.
eta) sur la convergence ?