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:
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 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