Régression linéaire simple et multiple
La régression linéaire est un modèle statistique utilisé pour analyser la relation entre une variable dépendante (ou cible) et une ou plusieurs variables indépendantes (ou prédicteurs). Cette méthode est très utilisée en analyse prédictive et en apprentissage automatique.
Régression Linéaire Simple
La régression linéaire simple consiste à modéliser la relation entre une seule variable dépendante
et une seule variable indépendante
. Le modèle linéaire est représenté par l’équation :
où :
-
: variable dépendante (cible),
-
: variable indépendante (prédicteur),
-
: intercept (ordonnée à l’origine),
-
: pente (coefficient de régression),
-
: erreur (terme aléatoire ou bruit).
L’objectif de la régression linéaire simple est de trouver les valeurs des paramètres
et
qui minimisent la somme des carrés des erreurs (SSE, Sum of Squared Errors).
Hypothèses de la Régression Linéaire Simple
-
Linéarité : La relation entre
et
est linéaire.
-
Indépendance : Les observations sont indépendantes.
-
Homoscedasticité : La variance des erreurs est constante pour toutes les valeurs de
.
-
Normalité des erreurs : Les erreurs doivent suivre une distribution normale.
Interprétation des Paramètres
-
(l’intercept) : C’est la valeur de
lorsque
.
-
(la pente) : C’est la variation de
associée à une unité de variation de
. Si
est positif, cela signifie que la relation entre
et
est positive (augmentation de
entraîne une augmentation de
).
Régression Linéaire Multiple
La régression linéaire multiple étend la régression linéaire simple à plusieurs variables indépendantes. Elle est utilisée pour prédire une variable dépendante
à partir de plusieurs variables indépendantes
.
Le modèle de régression linéaire multiple est représenté par l’équation :
où :
-
: variable dépendante,
-
: variables indépendantes,
-
: intercept,
-
: coefficients des variables indépendantes,
-
: erreur.
L’objectif est également de trouver les paramètres
qui minimisent la somme des carrés des erreurs.
Hypothèses de la Régression Linéaire Multiple
Les hypothèses restent similaires à celles de la régression linéaire simple, mais il faut aussi considérer les relations entre les variables indépendantes :
-
Multicolinéarité : Les variables indépendantes ne doivent pas être fortement corrélées entre elles. Si elles le sont, cela peut rendre l’estimation des coefficients peu fiable.
Interprétation des Paramètres
-
(intercept) : C’est la valeur prédite de
lorsque toutes les variables
sont égales à zéro.
-
: Ce sont les effets des variables
sur
, tout en maintenant les autres variables constantes. Par exemple,
représente la variation de
lorsque
change de 1 unité, en gardant les autres variables constantes.
Évaluation de la Régression Linéaire
Voici quelques mesures de performance courantes utilisées pour évaluer la qualité d’un modèle de régression linéaire :
-
(Coefficient de Détermination) : Cette mesure indique la proportion de la variance de la variable dépendante qui est expliquée par les variables indépendantes. Plus
est proche de 1, meilleur est le modèle.
où
est la valeur prédite, et
est la moyenne de
.
-
Erreur quadratique moyenne (RMSE) : Elle mesure la différence entre les valeurs observées et les valeurs prédites. Plus elle est faible, mieux c’est.
-
Erreur absolue moyenne (MAE) : C’est la moyenne des erreurs absolues entre les valeurs observées et les valeurs prédites.
Fonctions :
-
LinearRegression()
La fonction LinearRegression() de scikit-learn permet de réaliser une régression linéaire, c'est-à-dire de modéliser la relation entre une ou plusieurs variables indépendantes et une variable dépendante. Elle ajuste une droite (ou un hyperplan) qui minimise l'erreur quadratique entre les points observés et la droite prédit. La régression linéaire est l'un des modèles les plus utilisés pour la prédiction dans les problèmes de régression.
Importation :
from sklearn.linear_model import LinearRegression
Attributs :
Nom Type Description fit_intercept bool, optionnel Indique si l'algorithme doit calculer l'ordonnée à l'origine (par défaut, True). normalize bool, optionnel Si True, les variables d'entrée sont normalisées avant d'ajuster le modèle (par défaut, False). n_jobs int, optionnel Nombre de jobs à utiliser pour effectuer la régression (par défaut, 1). Utiliser -1 pour utiliser tous les processeurs disponibles. positive bool, optionnel Si True, les coefficients de régression sont contraints à être positifs (par défaut, False). Exemple de code :
from sklearn.linear_model import LinearRegression import numpy as np import matplotlib.pyplot as plt # Création de données d'exemple X = np.array([[1], [2], [3], [4], [5]]) # Variable indépendante y = np.array([1, 2, 1.5, 3.5, 2.5]) # Variable dépendante # Initialisation du modèle de régression linéaire model = LinearRegression() # Entraînement du modèle sur les données model.fit(X, y) # Prédiction y_pred = model.predict(X) # Affichage des résultats plt.scatter(X, y, color='blue', label='Données réelles') plt.plot(X, y_pred, color='red', label='Droite de régression') plt.xlabel('X') plt.ylabel('y') plt.legend() plt.show() # Affichage des coefficients print(f'Coefficient de régression: {model.coef_[0]}') print(f'Ordonnée à l\'origine: {model.intercept_}')
Explication du code :
from sklearn.linear_model import LinearRegression
importe la classe LinearRegression de la bibliothèque scikit-learn, qui permet de créer un modèle de régression linéaire.import numpy as np
importe la bibliothèque numpy, renommée ici ennp
, qui est utilisée pour manipuler des tableaux (arrays) et effectuer des opérations numériques.import matplotlib.pyplot as plt
importe la bibliothèque matplotlib, renommée ici enplt
, utilisée pour créer des graphiques et des visualisations.Création de données d'exemple
X = np.array([[1], [2], [3], [4], [5]])
crée un tableauX
représentant la variable indépendante (ou prédicteur) sous forme de tableau à une seule colonne.y = np.array([1, 2, 1.5, 3.5, 2.5])
crée un tableauy
représentant la variable dépendante (ou cible), que l'on souhaite prédire en fonction deX
.Initialisation du modèle de régression linéaire
model = LinearRegression()
initialise un objetmodel
de la classe LinearRegression, qui est le modèle de régression linéaire utilisé pour ajuster une droite aux données.Entraînement du modèle sur les données
model.fit(X, y)
entraîne le modèle de régression linéaire sur les donnéesX
(variables indépendantes) ety
(variable dépendante). Cela permet de calculer les coefficients de la droite de régression.Prédiction
y_pred = model.predict(X)
effectue une prédiction sur les données d'entréeX
en utilisant le modèle entraîné. Cela génère les valeurs préditesy_pred
.Affichage des résultats
plt.scatter(X, y, color='blue', label='Données réelles')
crée un graphique en nuage de points représentant les données réelles (avecX
sur l'axe des abscisses ety
sur l'axe des ordonnées), affichées en bleu.plt.plot(X, y_pred, color='red', label='Droite de régression')
trace la droite de régression, qui est le modèle prédit pary_pred
, en rouge.plt.xlabel('X')
ajoute un label à l'axe des abscisses.plt.ylabel('y')
ajoute un label à l'axe des ordonnées.plt.legend()
affiche la légende du graphique pour différencier les données réelles de la droite de régression.plt.show()
affiche le graphique final.Affichage des coefficients
print(f'Coefficient de régression: {model.coef_[0]}')
affiche le coefficient de régression (la pente de la droite) du modèle. Il représente le changement dey
pour chaque unité de changement dansX
.print(f'Ordonnée à l\'origine: {model.intercept_}')
affiche l'ordonnée à l'origine de la droite de régression (l'intersection avec l'axe des ordonnées), c'est-à-dire la valeur dey
lorsqueX = 0
.