glmnet パッケージを使用して、並列化されたロジスティック リッジ回帰を実行したいと考えています。私のデータは大きな疎行列です (1,000 万の観測値と約 60,000 列)。
データのサブセット (観測と列サブセットの両方) に対して小さな試行を行ったところ、うまくいきました。次のコードは、私がやっていることと同等です:
library(Matrix)
library(glmnet)
library(doMC)
#for reproducibility
set.seed(18)
#initialise cores
registerDoMC(cores=2)
sparseMat<-sparseMatrix(i=rep(1:50,4),j=sample(20,200,replace=TRUE),x=rep(1,200))
y<-as.factor(sample(2,50,replace=TRUE))
cvfit<-cv.glmnet(x=sparseMat,y=y,standardize=FALSE,family="binomial",alpha=0,parallel=TRUE)
ただし、マトリックス全体を入力すると、プロセスがクラッシュし、次のエラー メッセージが表示されます。
Error in max(sapply(outlist, function(obj) min(obj$lambda))) :
invalid 'type' (list) of argument
エラーの原因がわかりません。また、エラー メッセージが何を指しているのかわかりません。
8 コアの RStudio Linux サーバーで r を使用しています。
sessionInfo()
:
R version 3.1.2 (2014-10-31)
Platform: x86_64-pc-linux-gnu (64-bit)
attached base packages:
[1] parallel stats graphics grDevices utils datasets methods base
other attached packages:
[1] doMC_1.3.3 iterators_1.0.7 glmnet_2.0-2 foreach_1.4.2 Matrix_1.1-5
更新I:
エラー (機密性の問題) を生成するデータを共有できないため、示されているエラーではなく、メモリ オーバーフローを生成しようとした再現を試みたので、質問を再定式化します。
私が得たエラーメッセージはメモリに関連していますか、それとも何か他のものに関連していますか?
データセットのサイズを考えると、メモリ関連のエラーはオプションです。ただし、エラー メッセージは、ラムダ値内に複数の最小値があることに関連する内部の問題を示しています。メモリの問題ではない場合、どうすればよいですか?回避策はありますか?