cv.glmnet 并行和内存问题
cv.glmnet parallel and memory issue
这是我第一次使用一般的并行处理。问题主要是我语法不好
我需要一些帮助来捕获大量 cv.glmnet 迭代的输出,因为我相信我已经将 cv_loop_run 构建得非常低效。这与 10k 的 lambda 数量一起导致了一个巨大的矩阵,它占用了我所有的内存并导致崩溃。本质上,我需要的是每个 运行 的 minimum 和 1se lambda(其中 1000 个,而不是全部 10,000 个)。因此,我不会为 cv_loop_run 捕获一个 1kx10k 的列表,而是得到一个 1k 长的列表。
registerDoParallel(cl=8,cores=4)
cv_loop_run<- rbind( foreach(r = 1:1000,
.packages="glmnet",
.combine=rbind,
.inorder =F) %dopar% {
cv_run <-cv.glmnet(X_predictors,Y_dependent,nfolds=fld,
nlambda = 10000,
alpha = 1, #FOR LASSO
grouped = FALSE,
parallel= TRUE
)
}
)
l_min<- as.matrix(unlist(as.matrix(cv_loop_run[,9 ,drop=FALSE] ))) # matrix #9 is lamda.min
l_1se<- as.matrix(unlist(as.matrix(cv_loop_run[,10 ,drop=FALSE] ))) # matrix #10 is lamda.1se
好的,所以我自己找到了。我所要做的就是限制每个 cv.glmnet 运行 的输出。这样只有最小值和 1se lambda 被从每个 运行 中获取。这意味着:
cv_run <-cv.glmnet(X_predictors,Y_dependent,nfolds=fld,
nlambda = 10000,
alpha = 1, #FOR LASSO
grouped = FALSE,
parallel= TRUE
)
变成这样:
cv_run <-cv.glmnet(X_predictors,Y_dependent,nfolds=fld,
nlambda = 10000,
alpha = 1, #FOR LASSO
grouped = FALSE,
parallel= TRUE
)[9:10]
这是我第一次使用一般的并行处理。问题主要是我语法不好
我需要一些帮助来捕获大量 cv.glmnet 迭代的输出,因为我相信我已经将 cv_loop_run 构建得非常低效。这与 10k 的 lambda 数量一起导致了一个巨大的矩阵,它占用了我所有的内存并导致崩溃。本质上,我需要的是每个 运行 的 minimum 和 1se lambda(其中 1000 个,而不是全部 10,000 个)。因此,我不会为 cv_loop_run 捕获一个 1kx10k 的列表,而是得到一个 1k 长的列表。
registerDoParallel(cl=8,cores=4)
cv_loop_run<- rbind( foreach(r = 1:1000,
.packages="glmnet",
.combine=rbind,
.inorder =F) %dopar% {
cv_run <-cv.glmnet(X_predictors,Y_dependent,nfolds=fld,
nlambda = 10000,
alpha = 1, #FOR LASSO
grouped = FALSE,
parallel= TRUE
)
}
)
l_min<- as.matrix(unlist(as.matrix(cv_loop_run[,9 ,drop=FALSE] ))) # matrix #9 is lamda.min
l_1se<- as.matrix(unlist(as.matrix(cv_loop_run[,10 ,drop=FALSE] ))) # matrix #10 is lamda.1se
好的,所以我自己找到了。我所要做的就是限制每个 cv.glmnet 运行 的输出。这样只有最小值和 1se lambda 被从每个 运行 中获取。这意味着:
cv_run <-cv.glmnet(X_predictors,Y_dependent,nfolds=fld,
nlambda = 10000,
alpha = 1, #FOR LASSO
grouped = FALSE,
parallel= TRUE
)
变成这样:
cv_run <-cv.glmnet(X_predictors,Y_dependent,nfolds=fld,
nlambda = 10000,
alpha = 1, #FOR LASSO
grouped = FALSE,
parallel= TRUE
)[9:10]