某些设置对您的机器来说可能过于激进:
正如其他人指出的那样,n_jobs利用多核处理器上可能提供的 openMP 线程可能会有所帮助。
但让我们也看看文档中的一些其他参数:
RandomForestRegressor(n_estimators=10, criterion='mse', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', max_leaf_nodes=None, bootstrap=True, oob_score=False, n_jobs=1, random_state=None, verbose=0, warm_start=False)
- 为什么不设置
n_estimators为 10,然后慢慢增加。
- max_depth 可能应该同时设置,这样你的树就不会太计算密集,所以你不会过度拟合你的模型(你在交叉验证吗?)
- 您已设置
max_features为autowhich 指定它使用n_features,但您尚未设置n_features。您可以考虑将其降低到您的全部功能集的某个百分比。
通常,您需要交叉验证您的模型并修改参数,以便使用可用内存在有限时间内在您的盒子上运行并充分执行。您还可以考虑调整和交叉验证更简单的决策树,然后使用该洞察力来调整随机森林的参数。
采样数据:
大数据集通常需要大量的计算能力。我有时会在将最佳模型归零时大幅减少训练数据的大小,然后在增加数据集时对缩放进行计时。这将使您更好地了解完整的问题应该花费多少时间。
其他型号:
最后,也许你有一个不适合“引导聚合”的问题。也许另一种类型的聚合会更好地工作,例如“增强”,在这种情况下,“随机丛林”或“ada-boost”算法可能会更好。或者,您可能希望转向一种计算强度较低的方法,该方法不需要像“支持向量回归器”这样的聚合。 Scikit-learn有一个很大的好处是可以非常简单地换出不同的模型并尝试不同的管道。
云计算:
我不确定您在什么机器或笔记本电脑上运行它,但启动 AWS (Google/MS/IBM) 实例并在云中功能强大的机器上运行它可能会更容易。AWS 现货市场在周末或深夜的价格非常实惠,因此您可以在一些非常强大的 8 核机器上工作.50perhour,soa24hourjobisonly12.
希望这可以帮助!