2
$\begingroup$

Lasso uses cross-validation to determine both the number of included predictors and the degree of shrinkage to avoid over-fitting. I have used the glmnet package to do this.

    fit=glmnet(x,y)
    cvob1= cv.glmnet(x,y) 
    lambda1=cvob1$lambda.min  
    cvob2=cv.glmnet(x,y)
    lambda2=cvob2$lambda.min

There is a high possibility that lambda1 and lambda2 are different. I need to get a proper lambda.min for the next step to obtain fitted values for the sparse solution to the model:

coef(fit,s=cvob1$lambda.min)

How can I decide which lambda to use? Should I repeat the cv.glmnet() for many times? How many time should I go for?

$\endgroup$
0
$\begingroup$

CV is a random process, which is why you are getting different lambda.mins. But they should be close to eachother. If you want a singular, reproducible lambda, try setting a seed:

set.seed(1234)

$\endgroup$
  • $\begingroup$ would different lambdas affect my next step: coef(fit,s=cvob1$lambda.min) $\endgroup$ – Zen Mar 14 '18 at 19:52
  • $\begingroup$ Yes, since different lambdas would yield different coefficients. (Remember large $\lambda$, small $\|\beta\|$). $\endgroup$ – Tim Atreides Mar 15 '18 at 11:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.