【发布时间】:2013-10-28 21:05:39
【问题描述】:
我正在为多个加法多项式模型运行 gbm() 函数,每个模型在一个大型数据集上具有 6 个响应类别(每个模型约 0.5-1 条线)。模型是这样的(几乎是默认值)。
gbm <-
gbm(Y ~ A + B + C + D + E + F,
data=data,
var.monotone=c(0,0,0,0,0,0),
distribution="multinomial",
n.trees=500,
shrinkage=0.1,
interaction.depth=1,
bag.fraction = 0.5,
train.fraction = 0.5,
n.minobsinnode = 5,
cv.folds = 0,
keep.data=TRUE,
verbose=FALSE,
weights=sampleWeight)
Y是一个因子,有6个类别,解释变量是度量和因子。 data 是 data.table。这段代码运行良好。预测很好。完成后,我保存预测并使用以下命令清理工作区:rm(list=ls(all=TRUE)) 并另外运行gc(),但它不会释放内存。我希望在清理所有工作区时,我的内存使用量应该与 R 会话开始时大致相同。
在我的具体情况下,加载数据后的 RAM 使用量约为 1.5GB。拟合模型后,它在我的电脑的极限处约为 14GB。清理工作区后,它的大小约为 12GB。目前对我来说唯一的解决方案是重新启动整个 R 会话,重新加载数据并运行下一个模型。
是否有解决方案,这样我就不必一直重新启动会话?
非常感谢!
【问题讨论】:
-
如果你只是运行下一个模型,你真的有问题吗?垃圾收集只使内存可供操作系统回收;它不会强制操作系统回收它。
-
这是 R 的常见问题,而不是使用
gbm()包所特有的问题。
标签: r memory-leaks multinomial gbm