【发布时间】:2015-03-02 21:35:21
【问题描述】:
我正在使用 scikit-learn Random Forest 来拟合训练数据 (~30mb),而我的笔记本电脑因应用程序内存不足而不断崩溃。测试数据比训练数据大几倍。使用 Macbook Air 2GHz 8GB 内存。
有什么方法可以解决这个问题?
rf = RandomForestClassifier(n_estimators = 100, n_jobs=4)
print "20 Fold CV Score: ", np.mean(cross_validation.cross_val_score(rf, X_train_a, y_train, cv=20, scoring='roc_auc'))
【问题讨论】:
-
您使用的是哪个版本的 scikit-learn? 0.15 版在森林中的内存消耗方面有一些重大改进。
-
'0.15.2'。我尝试切换到按顺序构建的 GBRT,但不知何故它也耗尽了内存。这是否意味着我真的需要尝试在 EC2 集群上运行或进行随机抽样?
-
@AndreasMueller:感谢关于 Advanced Sklearn 的有用演讲。也许我可以从那里尝试一些想法。我没有机会阅读 ogrisel 的 EC2 并行 ML 教程。我想知道我们还需要考虑旋转 EC2 集群吗?
-
很高兴你喜欢它。正如@Timo 建议的那样,您需要调整参数才能在此框上工作。我会推荐一些正则化,例如“max_depth”或“max_leaf_nodes”。这应该会大大减少内存消耗,或者减少 n_estimators。另一种选择是切换到 GradientBoostingClassifier,您可能需要更少或更少的深度估计器,但它在训练中是连续的。
-
什么时候去ec2?如果您从较低的“max_depth”和“n_estimators”开始,它将在您的笔记本电脑上运行。绘制更多估计器或更深的树如何提高准确性。如果看起来它会随着内存的增加而改善更多,或者如果需要很长时间,请考虑 ec2。顺便说一句,尝试 ec2 既便宜又容易。
标签: scikit-learn random-forest