Lasso-regression in python (schritt für schritt)
Die Lasso-Regression ist eine Methode, mit der wir ein Regressionsmodell anpassen können, wenn in den Daten Multikollinearität vorhanden ist.
Kurz gesagt versucht die Regression der kleinsten Quadrate, Koeffizientenschätzungen zu finden, die die verbleibende Quadratsumme (RSS) minimieren:
RSS = Σ(y i – ŷ i )2
Gold:
- Σ : Ein griechisches Symbol für Summe
- y i : der tatsächliche Antwortwert für die i-te Beobachtung
- ŷ i : Der vorhergesagte Antwortwert basierend auf dem multiplen linearen Regressionsmodell
Umgekehrt versucht die Lasso-Regression Folgendes zu minimieren:
RSS + λΣ|β j |
wobei j von 1 zu p Prädiktorvariablen geht und λ ≥ 0 ist.
Dieser zweite Term in der Gleichung wird als Auszahlungsstrafe bezeichnet. Bei der Lasso-Regression wählen wir einen Wert für λ, der den niedrigstmöglichen MSE-Test (mittlerer quadratischer Fehler) ergibt.
Dieses Tutorial bietet ein schrittweises Beispiel für die Durchführung einer Lasso-Regression in Python.
Schritt 1: Importieren Sie die erforderlichen Pakete
Zuerst importieren wir die notwendigen Pakete, um die Lasso-Regression in Python durchzuführen:
import pandas as pd
from numpy import arange
from sklearn. linear_model import LassoCV
from sklearn. model_selection import RepeatedKFold
Schritt 2: Daten laden
Für dieses Beispiel verwenden wir einen Datensatz namens mtcars , der Informationen zu 33 verschiedenen Autos enthält. Wir werden hp als Antwortvariable und die folgenden Variablen als Prädiktoren verwenden:
- mpg
- Gewicht
- Scheisse
- qsec
Der folgende Code zeigt, wie dieser Datensatz geladen und angezeigt wird:
#define URL where data is located
url = "https://raw.githubusercontent.com/Statorials/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
Schritt 3: Passen Sie das Lasso-Regressionsmodell an
Als Nächstes verwenden wir die LassoCV()- Funktion von sklearn, um das Lasso-Regressionsmodell anzupassen, und verwenden die RepeatedKFold()- Funktion, um eine k-fache Kreuzvalidierung durchzuführen, um den optimalen Alpha-Wert für den Strafterm zu finden.
Hinweis: In Python wird der Begriff „Alpha“ anstelle von „Lambda“ verwendet.
Für dieses Beispiel wählen wir k = 10-fach und wiederholen den Kreuzvalidierungsprozess dreimal.
Beachten Sie außerdem, dass LassoCV() standardmäßig nur die Alphawerte 0,1, 1 und 10 testet. Wir können jedoch unseren eigenen Alpha-Bereich in Schritten von 0,01 von 0 bis 1 festlegen:
#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
Der Lambda-Wert, der den MSE des Tests minimiert, beträgt 0,99 .
Schritt 4: Verwenden Sie das Modell, um Vorhersagen zu treffen
Schließlich können wir das endgültige Lasso-Regressionsmodell verwenden, um Vorhersagen über neue Beobachtungen zu treffen. Der folgende Code zeigt beispielsweise, wie ein neues Auto mit den folgenden Attributen definiert wird:
- MPG: 24
- Gewicht: 2,5
- Preis: 3,5
- qsec: 18,5
Der folgende Code zeigt, wie das angepasste Lasso-Regressionsmodell verwendet wird, um den HP- Wert dieser neuen Beobachtung vorherzusagen:
#define new observation
new = [24, 2.5, 3.5, 18.5]
#predict hp value using lasso regression model
model. predict ([new])
array([105.63442071])
Basierend auf den eingegebenen Werten prognostiziert das Modell, dass dieses Auto einen PS- Wert von 105,63442071 haben wird.
Den vollständigen Python-Code, der in diesem Beispiel verwendet wird, finden Sie hier .