Personnaliser les préférences

Nous utilisons des cookies pour vous aider à naviguer efficacement et à exécuter certaines fonctions. Vous trouverez ci-dessous des informations détaillées sur tous les cookies sous chaque catégorie de consentement.

Les cookies classés comme « Nécessaires » sont stockés sur votre navigateur car ils sont essentiels pour activer les fonctionnalités de base du site.... 

Toujours actif

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

Aucun cookie à afficher.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

Aucun cookie à afficher.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

Aucun cookie à afficher.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Aucun cookie à afficher.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

Aucun cookie à afficher.

Régression Lasso en Python (étape par étape)



La régression Lasso est une méthode que nous pouvons utiliser pour ajuster un modèle de régression lorsque la multicolinéarité est présente dans les données.

En un mot, la régression des moindres carrés tente de trouver des estimations de coefficients qui minimisent la somme des carrés résiduels (RSS) :

RSS = Σ(y je – ŷ je )2

où:

  • Σ : Un symbole grec qui signifie somme
  • y i : la valeur de réponse réelle pour la ième observation
  • ŷ i : La valeur de réponse prédite basée sur le modèle de régression linéaire multiple

À l’inverse, la régression au lasso cherche à minimiser les éléments suivants :

RSS + λΣ|β j |

j va de 1 à p variables prédictives et λ ≥ 0.

Ce deuxième terme de l’équation est connu sous le nom de pénalité de retrait . Dans la régression par lasso, nous sélectionnons une valeur pour λ qui produit le test MSE (erreur quadratique moyenne) le plus bas possible.

Ce didacticiel fournit un exemple étape par étape de la façon d’effectuer une régression lasso en Python.

Étape 1 : Importer les packages nécessaires

Tout d’abord, nous allons importer les packages nécessaires pour effectuer une régression lasso en Python :

import pandas as pd
from numpy import arange
from sklearn.linear_model import LassoCV
from sklearn.model_selection import RepeatedKFold

Étape 2 : Charger les données

Pour cet exemple, nous utiliserons un ensemble de données appelé mtcars , qui contient des informations sur 33 voitures différentes. Nous utiliserons hp comme variable de réponse et les variables suivantes comme prédicteurs :

  • mpg
  • poids
  • merde
  • qsec

Le code suivant montre comment charger et afficher cet ensemble de données :

#define URL where data is located
url = "https://raw.githubusercontent.com/Statology/Python-Guides/main/mtcars.csv"

#read in data
data_full = pd.read_csv(url)

#select subset of data
data = data_full[["mpg", "wt", "drat", "qsec", "hp"]]

#view first six rows of data
data[0:6]

	mpg	wt	drat	qsec	hp
0	21.0	2.620	3.90	16.46	110
1	21.0	2.875	3.90	17.02	110
2	22.8	2.320	3.85	18.61	93
3	21.4	3.215	3.08	19.44	110
4	18.7	3.440	3.15	17.02	175
5	18.1	3.460	2.76	20.22	105

Étape 3 : Ajuster le modèle de régression Lasso

Ensuite, nous utiliserons la fonction LassoCV() de sklearn pour ajuster le modèle de régression lasso et nous utiliserons la fonction RepeatedKFold() pour effectuer une validation croisée k fois afin de trouver la valeur alpha optimale à utiliser pour le terme de pénalité.

Remarque : le terme « alpha » est utilisé à la place de « lambda » en Python.

Pour cet exemple, nous choisirons k = 10 plis et répéterons le processus de validation croisée 3 fois.

Notez également que LassoCV() teste uniquement les valeurs alpha 0,1, 1 et 10 par défaut. Cependant, nous pouvons définir notre propre plage alpha de 0 à 1 par incréments de 0,01 :

#define predictor and response variables
X = data[["mpg", "wt", "drat", "qsec"]]
y = data["hp"]

#define cross-validation method to evaluate model
cv = RepeatedKFold(n_splits=10, n_repeats=3, random_state=1)

#define model
model = LassoCV(alphas=arange(0, 1, 0.01), cv=cv, n_jobs=-1)

#fit model
model.fit(X, y)

#display lambda that produced the lowest test MSE
print(model.alpha_)

0.99

La valeur lambda qui minimise le MSE du test s’avère être de 0,99 .

Étape 4 : Utiliser le modèle pour faire des prédictions

Enfin, nous pouvons utiliser le modèle de régression lasso final pour faire des prédictions sur de nouvelles observations. Par exemple, le code suivant montre comment définir une nouvelle voiture avec les attributs suivants :

  • mpg: 24
  • poids : 2,5
  • prix : 3,5
  • qsec : 18,5

Le code suivant montre comment utiliser le modèle de régression au lasso ajusté pour prédire la valeur hp de cette nouvelle observation :

#define new observation
new = [24, 2.5, 3.5, 18.5]

#predict hp value using lasso regression model
model.predict([new])

array([105.63442071])

Sur la base des valeurs saisies, le modèle prédit que cette voiture aura une valeur ch de 105,63442071 .

Vous pouvez trouver le code Python complet utilisé dans cet exemple ici .

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *