我在16核机器上运行glmnet,偏好使用lasso回归。我有一个大约800K行的稀疏矩阵格式数据,包含大约2K列,需要训练以预测第一列的概率。
这个过程变得非常慢。我想知道,是否有办法通过在nfolds上并行化来加速它,或者我是否可以选择更少的行而不影响准确性。这是可能的吗?如果可以,哪种方法更好?
回答:
可以通过使用并行化来加速这个过程,如上面的评论链接中所解释的,在R中并行执行glmnet可以通过在cv.glmnet()函数中设置parallel=TRUE选项来实现,一旦你指定了核心数量,像这样:
library(doParallel)registerDoParallel(5)m <- cv.glmnet(x, y, family="binomial", alpha=0.7, type.measure="auc", grouped=FALSE, standardize=FALSE, parallel=TRUE)
减少行数更多是基于测试集上的AUC值的判断。如果它高于阈值,并且减少行数不影响这一点,那么这无疑是一个好主意。