我正在为多个加性多项式模型运行gbm()函数,每个响应类别在一个大型数据集中(~ 0.5-1 mio )。(每种型号的线)。模型是这样的(基本上是默认的)。
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。在拟合模型后,它在我的个人电脑的极限在14 at左右。清理工作区后,它的容量约为12 at。对我来说,目前唯一的解决方案是重新启动整个R会话,重新加载数据并运行下一个模型。
有没有解决这个问题的方法,这样我就不必总是重新启动会话了?
非常感谢!
发布于 2013-11-01 06:13:24
是的,gbm有内存泄漏。具有讽刺意味的是,修复是在gbm网站上进行的,但是维护人员并没有将其整合到CRAN版本中。
id=443&func=browse
发布于 2016-07-22 14:20:07
gbm()的维护人员修正了Laplace和多项式分布的内存泄漏问题,以及其他bug。此外,他们还增加了cox回归和其他功能。截至2016年7月,这些修补程序尚未被整合到gbm包的新版本中,这些版本可以在CRAN镜像上找到或使用install.packages("gbm")语句安装。然而,这正在进行中,应该出现在未来的版本gbm-2.1.2或gbm-3.0.0的CRAN镜像上。
幸运的是,您现在可以使用bug修复获得最新的工作版本。你是从:https://github.com/gbm-developers/gbm得到的。另见https://github.com/gbm-developers/gbm/issues/16#issuecomment-234054158。
我用来安装最新工作版本的声明如下:
在Linux控制台中:
sudo apt-get -y build-dep libcurl4-gnutls-dev sudo apt-get -y install libcurl4-gnutls-dev sudo apt-get -y build-dep libxml2-dev sudo apt-get -y install libxml2-dev
在R:
remove.packages("gbm") install.packages("devtools", dependencies=TRUE) library(devtools) install_github("gbm-developers/gbm")
我刚刚在Windows、Linux (Gnome)和Linux (薄荷)上测试了上述开发版本,方法是运行gbm与选项distribution="laplace“和distribution=”多项式“。没有像那些困扰gbm版本2.1.1和更早版本那样的内存泄漏。
https://stackoverflow.com/questions/19476457
复制相似问题