【发布时间】:2014-03-09 00:53:46
【问题描述】:
我的训练数据集有大约 200,000 条记录,我有 500 个特征。 (这些是来自零售组织的销售数据)。大多数特征是 0/1,并存储为稀疏矩阵。
目标是预测购买大约 200 种产品的概率。因此,我需要使用相同的 500 个特征来预测 200 种产品的购买概率。由于 glmnet 是创建模型的自然选择,因此我考虑为 200 种产品并行实施 glmnet。 (因为所有 200 个模型都是独立的)但是我坚持使用 foreach。我执行的代码是:
foreach(i = 1:ncol(target)) %dopar%
{
assign(model[i],cv.glmnet(x,target[,i],family="binomial",alpha=0,type.measure="auc",grouped=FALSE,standardize=FALSE,parallel=TRUE))
}
model 是一个列表 - 包含 200 个模型名称的列表,我想在其中存储相应的模型。
以下代码有效。但它没有利用并行结构,大约需要一天才能完成!
for(i in 1:ncol(target))
{ assign(model[i],cv.glmnet(x,target[,i],family="binomial",alpha=0,type.measure="auc",grouped=FALSE,standardize=FALSE,parallel=TRUE))
}
有人可以指点我在这种情况下如何利用并行结构吗?
【问题讨论】:
-
第二种情况你注册了并行后端吗?哪一个?您想在单台多核计算机上运行还是在集群上运行?
-
第二个 - 我在 glmnet 中使用了并行选项。据我了解,它使用它来并行化 CV。我正在一台多核计算机上运行(四核,16 GB 内存)
标签: r foreach parallel-processing glmnet