Lasso-Regression ist eine beliebte lineare Regressionsmethode, die beim maschinellen Lernen verwendet wird und darauf abzielt, das am besten passende Modell zu finden, indem irrelevante Merkmalsvariablen ignoriert werden. In diesem Artikel wird die Implementierung der Lasso-Regression in Python vorgestellt und ein tatsächlicher Datensatz zur Demonstration bereitgestellt.
Einführung in die Lasso-Regression
Die Lasso-Regression ist eine Methode zur Lösung gewöhnlicher Kleinste-Quadrate-Probleme durch Hinzufügen eines Strafterms zur Zielfunktion. Dieser Strafterm wird mithilfe der L1-Regularisierung (auch Lasso-Strafe genannt) implementiert und hat die folgende Form:
$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}|$
wobei $y$ die Antwortvariable ist, $X$ ist die unabhängige Variablenmatrix, $eta$ ist der Modellkoeffizient, $n$ ist die Anzahl der Stichproben, $p$ ist die Anzahl der Features und $lpha$ ist der Strafparameter. Der schwierige Teil der Lasso-Regression ist das nichtkonvexe Optimierungsproblem des Strafterms.
Eine Möglichkeit, die Lasso-Regression zu implementieren, besteht darin, sie mithilfe des Koordinatenabstiegsalgorithmus (CD) zu lösen. Die Grundidee besteht darin, dass in jeder Iteration nur ein Koeffizient geändert wird. Auf diese Weise umgeht der CD-Algorithmus geschickt das nichtkonvexe Optimierungsproblem des Strafterms.
Python-Lasso-Regressionsimplementierung
Python bietet viele Bibliotheken für maschinelles Lernen, wie z. B. Scikit-learn, mit denen sich die Lasso-Regression problemlos implementieren lässt.
Importieren Sie zunächst die erforderlichen Bibliotheken wie folgt:
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
Als nächstes laden wir den Bostoner Immobilienpreisdatensatz und normalisieren ihn:
boston = load_boston() X = boston.data y = boston.target X = StandardScaler().fit_transform(X)
Dann implementieren wir die Lasso-Regression mit LassoCV in Scikit-learn. Das Modell führt automatisch eine Kreuzvalidierung durch und wählt den optimalen $lpha$-Wert aus.
lasso_reg = LassoCV(alphas=np.logspace(-3, 3, 100), cv=5, max_iter=100000) lasso_reg.fit(X, y)
Abschließend geben wir den resultierenden optimalen $lpha$-Wert und die Modellkoeffizienten aus:
print('Best alpha:', lasso_reg.alpha_) print('Model coefficients:', lasso_reg.coef_)
Vollständiges Codebeispiel:
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_)
Die Ausgabe lautet wie folgt:
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]
Dies zeigt, dass wir durch Lasso-Regression die Genauigkeit von bestimmen können Boston Das beste Modell für die Vorhersage von Immobilienpreisen und zum Extrahieren der Merkmale, die für die Antwortvariable am relevantesten sind.
Fazit
Dieser Artikel stellt die Implementierung der Lasso-Regression in Python vor und demonstriert die Anwendung dieser Methode anhand eines tatsächlichen Datensatzes. Die Lasso-Regression ist eine sehr nützliche lineare Regressionstechnik, die sich besonders für die Verarbeitung hochdimensionaler Daten eignet. Bei praktischen Problemen können Techniken wie Kreuzvalidierung und Standardisierung verwendet werden, um die Modellleistung zu optimieren und die relevantesten Merkmale zu extrahieren.
Das obige ist der detaillierte Inhalt vonBeispiel für eine Lasso-Regression in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!