首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么科学-学习的随机森林使用这么多的记忆?

为什么科学-学习的随机森林使用这么多的记忆?
EN

Stack Overflow用户
提问于 2013-12-06 00:03:44
回答 1查看 2.4K关注 0票数 8

我正在使用scikit的随机森林实现:

代码语言:javascript
复制
sklearn.ensemble.RandomForestClassifier(n_estimators=100, 
                                        max_features="auto", 
                                        max_depth=10)

调用rf.fit(...)后,进程的内存使用量增加了80‘s,或每棵树的为0.8MB(我还尝试了许多具有类似结果的其他设置。我使用toppsutil来监视内存的使用)

深度为10的二叉树最多应该有2^11-1 = 2047元素,这些元素都可以存储在一个密集的数组中,这样程序员就可以很容易地找到任何给定元素的父母和子元素。

每个元素都需要在拆分和切断中使用的特性索引,即6-16字节,这取决于程序员的经济性。在我的例子中,这转化为每个树的0.03MB

为什么scikit的实现使用20-60x的内存来存储随机森林的树?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-06 00:56:29

每个决策(非叶)节点存储左、右支路整数索引(2x8字节)、用于拆分的特征索引(8个字节)、决策特征阈值的浮动值(8个字节)、杂质减少(8个字节)。此外,叶节点存储由叶预测的常量目标值。

您可以查看源代码中的Cython class definition以获得详细信息。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20413392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档