磁盘上的模型大小比内存中大得多

4

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

2个回答

3
可能的原因是,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() 报告的大小比 .Rdata 文件小


2
您是在谈论train对象吗? bagging函数没有进行优化,森林中保存了很多冗余的对象(例如每个rpart模型的每个terms对象)。
请查看trainControltrim选项。 如果您只想对该对象进行预测,则这将摆脱模型对象带来的许多额外内容。 在某些情况下,call对象可能包含数据的完整副本。
并非所有模型都实现了trim,但是对于此模型是实现了的。

是的,train对象。而且是的,我使用了trim。但我不认为这是关键点。为什么保存到磁盘时会有如此大的增加?我不认为trainControl参数应该影响这个。 - jtdoud
1
PS...我还使用了returnData = F - jtdoud

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接