Python >> Tutoriel Python >  >> Python

Régression Lasso en Python

Bonjour, lecteurs ! Dans notre dernier article, nous nous sommes concentrés sur Ridge Regression dans la programmation Python, en détail. Maintenant, nous parlerions de régression au lasso en Python.

Alors, commençons !


Tout d'abord, qu'est-ce que la régression au lasso ?

Dans le domaine de la science des données et de l'apprentissage automatique, notre objectif principal est de faire des prédictions sur des problèmes réels grâce à divers algorithmes basés sur le type de valeurs de données.

La régression linéaire est l'un de ces algorithmes. Avec cet algorithme, nous pouvons définir la meilleure ligne d'ajustement pour notre modèle, c'est-à-dire comprendre la corrélation entre les variables de l'ensemble de données.

Cela nous aide à comprendre la relation entre la variable dépendante et les variables indépendantes de l'ensemble de données pour construire un modèle estimé pour les prédictions.

Problèmes liés à la régression linéaire :

  • Comme nous le savons tous, la régression linéaire calcule les coefficients de chaque variable du modèle. À mesure que la complexité des données augmente, la valeur des coefficients s'avère être une valeur plus élevée, ce qui rend le modèle sensible aux entrées supplémentaires qui lui sont transmises.
  • Cela rend le modèle un peu instable !

Solution – Régression au lasso

Donc, nous y voilà avec la solution. Régression Lasso, également connue sous le nom de L1 regression suffit le but. Avec la régression Lasso, on a tendance à pénaliser le modèle par rapport à la valeur des coefficients. Ainsi, il manipule la fonction de perte en incluant des coûts supplémentaires pour les variables du modèle qui se trouvent avoir une grande valeur de coefficients.

Il pénalise le modèle par rapport au coefficient absolu valeurs. Par cela, il laisse la valeur des coefficients (qui ne contribuent pas à la variable prédictive) devenir nulle. De plus, il supprime ces caractéristiques d'entrée du modèle .

Ainsi, nous pouvons dire,

Lasso =perte + (lambda * l1_penalty)

Ici, lambda est l'hyperparamètre qui vérifie la pondération des valeurs de pénalité.


Régression au lasso – Une approche pratique

Dans cet exemple, nous avons utilisé le jeu de données Bike Rental Count Prediction. Vous pouvez trouver l'ensemble de données ici !

Initialement, nous chargeons le jeu de données dans l'environnement Python à l'aide de la fonction read_csv(). De plus, nous effectuons la division de l'ensemble de données en données d'apprentissage et de test à l'aide de la fonction train_test_split().

Pour cet exemple, nous avons défini MAPE comme métrique d'erreur pour évaluer le modèle de pénalité de régression au lasso.

Le sklearn.linear_model library de Python, nous fournit lasso() fonction pour construire un modèle sur l'ensemble de données.

Exemple :

import os
import pandas

#Changing the current working directory
os.chdir("D:/Ediwsor_Project - Bike_Rental_Count")
BIKE = pandas.read_csv("day.csv")

bike = BIKE.copy()
categorical_col_updated = ['season','yr','mnth','weathersit','holiday']
bike = pandas.get_dummies(bike, columns = categorical_col_updated)
#Separating the depenedent and independent data variables into two dataframes.
from sklearn.model_selection import train_test_split 
X = bike.drop(['cnt'],axis=1) 
Y = bike['cnt']

import numpy as np
def MAPE(Y_actual,Y_Predicted):
    mape = np.mean(np.abs((Y_actual - Y_Predicted)/Y_actual))*100
    return mape

from sklearn.linear_model import Lasso
lasso_model = Lasso(alpha=1.0)
lasso=lasso_model.fit(X_train , Y_train)
lasso_predict = lasso.predict(X_test)
Lasso_MAPE = MAPE(Y_test,lasso_predict)
print("MAPE value: ",Lasso_MAPE)
Accuracy = 100 - Lasso_MAPE
print('Accuracy of Lasso Regression: {:0.2f}%.'.format(Accuracy))

Sortie :

MAPE value:  16.55305612241603
Accuracy of Lasso Regression: 83.45%.

Conclusion

Par là, nous sommes arrivés à la fin de ce sujet. N'hésitez pas à commenter ci-dessous si vous rencontrez une question.

Nous vous recommandons d'essayer le concept de régression au lasso avec d'autres ensembles de données et faites-nous part de votre expérience à ce sujet dans la section des commentaires !

Pour plus d'articles de ce type liés à Python, restez à l'écoute et jusque-là, bon apprentissage !! 🙂