【问题标题】:Use specific alpha parameters for multiple elastic net in R在 R 中为多个弹性网使用特定的 alpha 参数
【发布时间】:2021-04-01 14:00:20
【问题描述】:

我正在尝试在 R 中同时执行多个弹性网络。我有一个 10x15 矩阵,每列称为 Xi,例如X1,X2,...,X15 并执行弹性网络以获得最佳alphalambda 参数。然后我将alpha 值保存在我的环境中名为alphas 的数据框中,如下所示

alpha
1  0.001
2  0.000
3  0.000
4  0.064
5  0.729
6  0.729
7  1.000
8  0.001
9  0.000
10 0.000
11  0.001
12  0.000
13  0.000
14  0.064
15  0.729

我的目标是执行多个cv.glmnet(每个 Xi 一个)以及我已经找到的相应 alpha。例如将alpha=0.001 用于Xi 等的cv.glmnet 模型。如何替换下面代码中的alpha 值以使用所有获得的alpha 值?

data<-matrix(rnorm(36),nrow=10,ncol = 15)
colnames(data) <- c("X1", "X2", "X3", "X4", "X5", "X6","X7","X8","X9","X10","X11","X12","X13","X14","X15")
data #random data
library(glmnet)
library(coefplot)

A <- as.matrix(data)
set.seed(1234)
results <- lapply(seq_len(ncol(A)), function(i) {
  list(
    cvfit = cv.glmnet(A[, -i] , A[, i] , standardize = TRUE , type.measure = "mse" , nfolds = 10 , alpha = 1)
  )
})

【问题讨论】:

    标签: r parameters apply glmnet regularized


    【解决方案1】:

    另一种选择是使用for 循环。

    alpha <- c(0.001, 0.000, 0.000, 0.064, 0.729, 0.729, 1.000, 0.001, 0.000, 0.000, 0.001, 0.000, 0.000, 0.064, 0.729)
    
    cvfit <- vector("list", length(alpha))
    names(cvfit) <- paste0("cvfit for alpha=", alpha)
    
    for(k in 1:length(alpha))
      for(i in 1:ncol(A))
        cvfit[[k]][[i]] <- list(cv.glmnet(A[, -i] , A[, i] , standardize = TRUE , type.measure = "mse" , nfolds = 10 , alpha = alpha[k]))
    

    【讨论】:

      【解决方案2】:

      如果我们想做多个集合,使用相同的列索引序列对 alpha 进行子集化,因为 alphaset 的 lengthmatrix 'A' 的列数相同

      alphaset  <- c( 0.001, 0, 0, 0.064, 0.729, 0.729, 1.0, 
                 0.001, 0, 0, 0.001, 0, 0,  0.064, 0.729)
      lst_out <- lapply(seq_len(ncol(A)), function(i) {
        list(
           cvfit = cv.glmnet(A[, -i] , A[, i] , standardize = TRUE , 
            type.measure = "mse" , nfolds = 10 , alpha = alphaset[i])
          )
              })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-20
        • 1970-01-01
        • 1970-01-01
        • 2021-05-05
        • 1970-01-01
        • 2023-02-05
        • 1970-01-01
        相关资源
        最近更新 更多