【发布时间】:2013-12-23 04:25:07
【问题描述】:
我正在使用 scikit 的随机森林实现:
sklearn.ensemble.RandomForestClassifier(n_estimators=100,
max_features="auto",
max_depth=10)
调用rf.fit(...)后,进程的内存使用量增加了80MB,即每棵树0.8MB(我也尝试了许多其他设置,结果相似。我使用top和psutil来监控内存使用)
深度为 10 的二叉树最多应该有 2^11-1 = 2047 个元素,这些元素都可以存储在一个密集数组中,从而使程序员可以轻松找到任何给定元素的父级和子级。
每个元素都需要一个用于分割和截断的特征的索引,或者 6-16 个字节,这取决于程序员的经济性。在我的例子中,这意味着每棵树 0.01-0.03MB。
为什么 scikit 的实现使用 20-60 倍的内存来存储随机森林的树?
【问题讨论】:
标签: machine-learning classification scikit-learn decision-tree random-forest