【问题标题】:R gbm() function - RAM not released? memory leak?R gbm() 函数 - RAM 未释放?内存泄漏?
【发布时间】: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个类别,解释变量是度量和因子。 datadata.table。这段代码运行良好。预测很好。完成后,我保存预测并使用以下命令清理工作区:rm(list=ls(all=TRUE)) 并另外运行gc(),但它不会释放内存。我希望在清理所有工作区时,我的内存使用量应该与 R 会话开始时大致相同。

在我的具体情况下,加载数据后的 RAM 使用量约为 1.5GB。拟合模型后,它在我的电脑的极限处约为 14GB。清理工作区后,它的大小约为 12GB。目前对我来说唯一的解决方案是重新启动整个 R 会话,重新加载数据并运行下一个模型。

是否有解决方案,这样我就不必一直重新启动会话?

非常感谢!

【问题讨论】:

  • 如果你只是运行下一个模型,你真的有问题吗?垃圾收集只使内存可供操作系统回收;它不会强制操作系统回收它。
  • 这是 R 的常见问题,而不是使用 gbm() 包所特有的问题。

标签: r memory-leaks multinomial gbm


【解决方案1】:

是的,gbm 存在内存泄漏。具有讽刺意味的是,修复程序在 gbm 网站上,但维护人员未能将其合并到 CRAN 版本中。

http://r-forge.r-project.org/tracker/?atid=1813&group_id=443&func=browse

【讨论】:

    【解决方案2】:

    gbm() 的维护者已经修复了 Laplace 和多项分布的内存泄漏问题,以及其他错误。此外,他们还添加了 cox 回归和其他功能。截至 2016 年 7 月,这些修复程序尚未合并到 gbm 包的新版本中,该版本可在 CRAN 镜像上找到或使用 install.packages("gbm") 语句安装。但是,这正在开发中,应该会出现在 CRAN 镜像上的未来版本 gbm-2.1.2 或 gbm-3.0.0 中。

    幸运的是,您现在可以获得带有错误修复的最新工作版本。你可以从: 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 Debian (Gnome) 和 Linux Ubuntu (Mint) 上测试了上述开发版本,方法是运行 gbm 适合选项 distribution="laplace" 和 distribution="multinomial"。没有像 gbm 2.1.1 和更早版本那样的内存泄漏。

    【讨论】:

      猜你喜欢
      • 2020-07-22
      • 2012-06-08
      • 1970-01-01
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多