複数の GLM オブジェクトをリストに保存しようとしています。1 つの GLM オブジェクトが大規模なデータセットでトレーニングされますが、GLM オブジェクト内のすべての不要なデータを NULL に設定することで、オブジェクトのサイズが縮小されます。問題は、R が GLM オブジェクトのサイズよりもはるかに多くの RAM を予約するため、RAM の問題が発生することです。この問題が発生する理由と、これを解決する方法を誰かが知っていますか? この背後で、オブジェクトを保存すると、オブジェクト サイズよりも大きなファイルが生成されます。
例:
> glm_full <- glm(formula = formule , data = dataset, family = binomial(), model = F, y = F)
> glm_full$data <- glm_full$model <- glm_full$residuals <- glm_full$fitted.values <- glm_full$effects <- glm_full$qr$qr <- glm_full$linear.predictors <- glm_full$weights <- glm_full$prior.weights <- glm_full$y <- NULL
> rm(list= ls()[!(ls() %in% c('glm_full'))])
> object.size(glm_full)
172040 bytes
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 944802 50.5 3677981 196.5 3862545 206.3
Vcells 83600126 637.9 503881514 3844.4 629722059 4804.4
> rm(glm_full)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 944208 50.5 2942384 157.2 3862545 206.3
Vcells 4474439 34.2 403105211 3075.5 629722059 4804.4
ここでは、R が GLM オブジェクト用に RAM を予約していることがわかります。複数の GLM オブジェクトを環境に保存すると、RAM 不足の問題が発生します。