Maison  >  Article  >  développement back-end  >  Exemple de régression lasso en Python

Exemple de régression lasso en Python

WBOY
WBOYoriginal
2023-06-10 20:52:551810parcourir

La régression Lasso est une méthode de régression linéaire populaire utilisée dans l'apprentissage automatique, qui vise à trouver le modèle le mieux adapté en ignorant les variables de caractéristiques non pertinentes. Cet article présentera comment implémenter la régression Lasso en Python et fournira un ensemble de données réelles à des fins de démonstration.

Introduction à la régression Lasso

La régression Lasso est une méthode de résolution de problèmes de moindres carrés ordinaires en ajoutant un terme de pénalité à la fonction objectif. Ce terme de pénalité est implémenté à l'aide de la régularisation L1 (également appelée pénalité Lasso), et sa forme est la suivante :

$J(eta)= rac{1}{2n}sum_{i=1}^{n}( y_i- sum_{j=1}^{p}X_{ij} eta_j)^2 + lpha sum_{j=1}^{p}| eta_j|$

où, $y$ est la variable de réponse, $X$ est la matrice de variables indépendantes, $eta$ est le coefficient du modèle, $n$ est le nombre d'échantillons, $p$ est le nombre de caractéristiques et $lpha$ est le paramètre de pénalité. La partie difficile de la régression Lasso est le problème d’optimisation non convexe du terme de pénalité.

Une façon d'implémenter la régression Lasso est de la résoudre via l'algorithme de descente de coordonnées (CD). L’idée de base est qu’à chaque itération, un seul coefficient est modifié. De cette manière, l’algorithme CD contourne intelligemment le problème d’optimisation non convexe du terme de pénalité.

Implémentation de la régression Python Lasso

Python fournit de nombreuses bibliothèques d'apprentissage automatique, telles que Scikit-learn, qui peuvent facilement implémenter la régression Lasso.

Tout d'abord, importez les bibliothèques requises comme suit :

import numpy as np
import pandas as pd
from sklearn.linear_model import LassoCV
from sklearn.datasets import load_boston
from sklearn.preprocessing import StandardScaler

Ensuite, nous chargeons l'ensemble de données sur les prix des logements à Boston et le normalisons :

boston = load_boston()
X = boston.data
y = boston.target
X = StandardScaler().fit_transform(X)

Ensuite, nous implémentons la régression Lasso à l'aide de LassoCV dans Scikit-learn. Le modèle effectue automatiquement une validation croisée et sélectionne la valeur $lpha$ optimale.

lasso_reg = LassoCV(alphas=np.logspace(-3, 3, 100), cv=5, max_iter=100000)
lasso_reg.fit(X, y)

Enfin, nous générons la valeur $lpha$ optimale résultante et les coefficients du modèle :

print('Best alpha:', lasso_reg.alpha_)
print('Model coefficients:', lasso_reg.coef_)

Exemple de code complet :

import numpy as np
import pandas as pd
from sklearn.linear_model import LassoCV
from sklearn.datasets import load_boston
from sklearn.preprocessing import StandardScaler

boston = load_boston()
X = boston.data
y = boston.target
X = StandardScaler().fit_transform(X)

lasso_reg = LassoCV(alphas=np.logspace(-3, 3, 100), cv=5, max_iter=100000)
lasso_reg.fit(X, y)

print('Best alpha:', lasso_reg.alpha_)
print('Model coefficients:', lasso_reg.coef_)

Le résultat est le suivant :

Best alpha: 0.10000000000000002
Model coefficients: [-0.89521162  1.08556604  0.14359222  0.68736347 -2.04113155  2.67946138
  0.01939491 -3.08179223  2.63754058 -2.05806301 -2.05202597  0.89812875
 -3.73066641]

Cela montre que grâce à la régression Lasso, nous pouvons déterminer la précision de Boston Le meilleur modèle pour prédire les prix de l'immobilier et extraire les caractéristiques les plus pertinentes pour la variable de réponse.

Conclusion

Cet article présente comment implémenter la régression Lasso en Python et démontre l'application de cette méthode à travers un ensemble de données réel. La régression lasso est une technique de régression linéaire très utile, particulièrement adaptée au traitement de données de grande dimension. Dans des problèmes pratiques, des techniques telles que la validation croisée et la standardisation peuvent être utilisées pour optimiser les performances du modèle et extraire les fonctionnalités les plus pertinentes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn