Getting glmnet coefficients at 'best' lambda
Try this:
fit = glmnet(as.matrix(mtcars[-1]), mtcars[,1],
lambda=cv.glmnet(as.matrix(mtcars[-1]), mtcars[,1])$lambda.1se)
coef(fit)
Or you can specify a specify a lambda value in coef
:
fit = glmnet(as.matrix(mtcars[-1]), mtcars[,1])
coef(fit, s = cv.glmnet(as.matrix(mtcars[-1]), mtcars[,1])$lambda.1se)
You need to pick a "best" lambda, and lambda.1se
is a reasonable, or justifiable, one to pick. But you could use cv.glmnet(as.matrix(mtcars[-1]), mtcars[,1])$lambda.min
or any other value of lambda that you settle upon as "best" for you.
To extract the optimal lambda, you could type fit$lambda.min
To obtain the coefficients corresponding to the optimal lambda, use coef(fit, s = fit$lambda.min)
- please reference p.6 of the Glmnet vignette.
I think the coefficients are produced by a model fitted to the full data, not just testing sets, as mentioned in this page.