Lasso-Regression in R

Sheeraz Gul 21 Juni 2023
Lasso-Regression in R

Die Lasso-Regression ist ein Klassifizierungsalgorithmus, der Sparse und Schrumpfung in einfachen Modellen verwendet. Dieses Tutorial zeigt, wie man eine Lasso-Regression in R durchführt.

Lasso-Regression in R

Das LASSO wird als Least Absolute Shrinkage and Selection Operator abgekürzt. Wenn wir bestimmte Teile der Modellauswahl automatisieren möchten, ist die Lasso-Regression eine gute Wahl, da sie ein hohes Maß an Multikollinearität aufweist.

Die Lasso-Regression ist ein quadratisches Programmierproblem, und Sprachen wie R und Matlab bieten Lösungen. Sehen wir uns den schrittweisen Prozess zum Lösen der Lasso-Regression in R an.

Die Gleichung verstehen

Die Lasso-Regression minimiert die folgende Funktion.

RSS + λΣ|βj|

Wobei j der Bereich von 1 bis zur Prädiktorvariablen ist und λ ≥ 0 der zweite Term λΣ|βj| wird als Schrumpfungsstrafe bezeichnet.

Das RSS = Σ(Yi – ŷi)2, wobei Σ die Summe, yi der tatsächliche Response-Wert für die ith-Beobachtung und ŷi der vorhergesagte Response-Wert ist.

Das Lambda wird als niedrigstmöglicher mittlerer Testfehler (MSE) in der Lasso-Regression ausgewählt, sobald wir wissen, was wir in der Lasso-Regression tun werden.

Lassen Sie uns die Daten im nächsten Schritt laden.

Laden Sie die Daten

Nehmen wir für unser Beispiel den Datensatz mtcars. Als Antwortvariable werden hp und als Prädiktoren mpg, drat, wt, qsec verwendet.

Wir können das Paket glmnet verwenden, um die Lasso-Regression durchzuführen. Lassen Sie uns die Daten laden.

# glmnet package requires to define response variable
x <- mtcars$hp

# glmnet package requires to define matrix of predictor variables
y <- data.matrix(mtcars[, c('mpg', 'wt', 'drat', 'qsec')])

Sobald die Daten geladen sind, besteht der nächste Schritt darin, das Lasso-Regressionsmodell anzupassen.

Anpassung des Lasso-Regressionsmodells

In diesem Schritt verwenden wir die Funktion glmnet(), um das Lasso-Regressionsmodell anzupassen; Alpha wird für das Lasso-Regressionsmodell auf 1 gesetzt. Die k-fache Kreuzvalidierung wird durchgeführt, um den Wert von Lambda zu bestimmen, und mit glmnet wird automatisch eine Kreuzvalidierung mit k= 10-Falten durchgeführt.

Möglicherweise müssen wir das Paket glmnet installieren, falls es noch nicht installiert ist. Siehe Beispiel:

# k-fold cross-validation to find lambda value
cv_model <- cv.glmnet(x, y, alpha = 1)

#lambda value that minimizes test MSE
best_lambda <- cv_model$lambda.min
best_lambda

# plot the model
plot(cv_model)

Der obige Code passt zum Lasso-Regressionsmodell und zeigt den besten Lambda-Wert und das Modelldiagramm.

Unten ist der Lambda-Wert, der den Test-MSE minimiert.

[1] 2.01841

Der Plot des Lasso-Regressionsmodells:

Lasso-Regressionsmodell

Analysieren Sie das Lasso-Regressionsmodell

Die Analyse des Modells bedeutet, dass wir zwei Koeffizienten des Modells zeigen können. Die Koeffizienten für unser Modell sind:

# Coefficients of the model
coef(cv_model)

Die Ausgabe für den Code lautet:

5 x 1 sparse Matrix of class "dgCMatrix"
                    s1
(Intercept) 418.277928
mpg          -4.379633
wt            .
drat          .
qsec        -10.286483

Wir kennen den besten Lambda-Wert; Wir können auch das beste Modell erstellen, indem wir den besten Lambda-Wert als Argument für die glmnet-Funktion umgehen, während wir das Modell anpassen.

Wie wir sehen, werden für die Prädiktoren wt und drat keine Koeffizienten angezeigt, weil sie durch die Lasso-Regression auf 0 geschrumpft sind. Deshalb wurden sie aus dem Modell gestrichen.

Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Verwandter Artikel - R Regression