ich habe einen Datensatz mit einer Vielzahl an Variablen und möchte versuchen die Lasso Regression zu verwenden. Meine Frage ist, wie man die Ergbenisse interpretiert.
Als Beispiel nutze ich den Hitters Datansatz, bei dem die einzelnen Variablen hoch miteinander korrelieren. Ziel ist es den Salary aus den Daten vorherzusagen.
Code: Alles auswählen
library(ISLR)
library(dplyr)
Hitters = Hitters %>%
select_if(is.numeric) %>%
drop_na()
Wenn ich den Ansatz richtig verstanden habe geht es letzendlich darum, dass Modell schlechter and die Daten anzupassen (Underfitting), damit es sich besser auf neue Daten genralisieruen lässt (Vermeidung von Overfitting). Erreicht wird dies über die Abschwächung der Betagewichte, indem Lambda (der Abschwächungsparameter) so gewählt wird, dass das Model in der Kreuzvalisierung einen möglichst niedrigen MSE erzeilt. Redundante Variablen werden aus dem Modell entfernt.
Code: Alles auswählen
x = model.matrix(Salary~., data = Hitters) [,-1]
y = Hitters$Salary
cv_lasso = cv.glmnet(x, y, family = "gaussian", alpha = 1)
lasso_fit = glmnet(x, y, family = "gaussian", alpha = 1, lambda = cv_lasso$lambda.min)
lasso_fit$dev.ratio
[1] 0.4550314
Code: Alles auswählen
coef(cv_lasso, s = "lambda.min")
17 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) 112.92545928
AtBat -2.10738061
Hits 7.11740833
HmRun .
Runs -0.76056943
RBI 0.52165693
Walks 5.57560314
Years -6.26048866
CAtBat -0.08666284
CHits .
CHmRun 0.18596454
CRuns 1.24205851
CRBI 0.57095256
CWalks -0.70280961
PutOuts 0.29323943
Assists 0.30799889
Errors -2.47859590