How does glmnet compute the maximal lambda value?

前端 未结 4 1245
迷失自我
迷失自我 2020-12-29 14:15

The glmnet package uses a range of LASSO tuning parameters lambda scaled from the maximal lambda_max under which no predi

4条回答
  •  轮回少年
    2020-12-29 14:29

    It seems lambda_max for a logistic regression is calculated similarly, with weights based on class proportions:

    set.seed(1)
    library("glmnet")
    x <- matrix(rnorm(100*20),100,20)
    y <- rnorm(100)
    
    mysd <- function(y) sqrt(sum((y-mean(y))^2)/length(y))
    sx <- scale(x, scale=apply(x, 2, mysd))
    sx <- as.matrix(sx, ncol=20, nrow=100)
    
    y_bin <- factor(ifelse(y<0, -1, 1))
    prop.table(table(y_bin)) 
    # y_bin
    #   -1    1 
    # 0.62 0.38 
    fitGLM_log <- glmnet(sx, y_bin, family = "binomial")
    max(fitGLM_log$lambda)
    # [1] 0.1214006
    max(abs(colSums(sx*ifelse(y<0, -.38, .62))))/100
    # [1] 0.1214006
    

提交回复
热议问题