【问题标题】:Model size on disk way bigger than in memory磁盘上的模型大小比内存大得多
【发布时间】:2015-11-14 22:49:52
【问题描述】:

我使用 R 中的 caret 包创建了袋装树模型method = "treebag",在 R-Studio 中查看时生成的模型大小为 12 Mb。但是当我使用save() 保存到磁盘以供以后使用时,磁盘上的大小增加到 151 Mb!使用不同的压缩方案会使大小有所下降,但仍然比内存大得多。有人成功解决了这个问题吗?

【问题讨论】:

    标签: r r-caret


    【解决方案1】:

    你说的是train 对象吗?

    bagging 函数没有得到很好的优化,并且在森林中保存了许多冗余对象(例如,每个 rpart 模型的每个 terms 对象)。

    参见trainControltrim 选项。如果您只想对该对象进行预测,这将摆脱模型对象携带的许多额外内容。在某些情况下,call 对象可以包含数据的完整副本。

    trim 并不是针对每个模型都实现的,但它适用于这个模型。

    【讨论】:

    • 是的,火车对象。是的,我使用了trim。但我认为这还没有达到目的。 为什么保存到磁盘时会大幅增加? 我认为trainControl 参数不会影响这一点。
    • PS...我也用过returnData = F
    【解决方案2】:

    可能的原因是 object.size() 的结果中没有考虑与对象关联的封闭环境,而是在保存时写入磁盘。使用 pryr::object_size() 函数查看包含环境的对象大小。更多解释可见:http://adv-r.had.co.nz/memory.html#object-size

    > object.size(m1)
    16200200 bytes
    > pryr::object_size(m1)
    215 MB
    > save(m1, file="m1.rda")
    > file.info("m1.rda")$size
    [1] 219475772
    

    另外一个问题也有关于这个问题的讨论:object.size() reports smaller size than .Rdata file

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-13
      • 2014-05-24
      • 2013-07-30
      • 2017-11-11
      • 1970-01-01
      • 1970-01-01
      • 2012-09-13
      相关资源
      最近更新 更多