我有一个每天都在增长的数据集,我担心的是,它很快会达到内存可能无法容纳的大小。我在我的应用程序中使用随机森林分类器和回归器。我听说过部分拟合,但我不知道是否可以以这种方式完成随机森林。即使数据集超出内存大小,我如何确保应用程序不会中断并继续运行良好。如果使用svm而不是随机森林,情况也会有所不同。
答案 0 :(得分:1)
通常,您应该寻找提供增量或在线培训的方法。在这种情况下,您不必一次向算法提供完整的数据集,而是在新数据可用时。如果数据每天都在增长并且您的计算资源有限,这是必不可少的。 Stochastic gradient descent是一种非常受欢迎的优化方法,可以满足您的要求。
您可以使用名为Mondarian Forest的随机森林变体。引用链接论文的摘要:蒙德里安森林实现了与现有在线随机森林相当的竞争预测性能,并定期重新训练批量随机森林,同时速度提高了一个数量级以上,因此表现出更好的计算效果准确性权衡。代码可以在GitHub找到。
如果不了解您的数据和问题的性质,就无法为您提供比随机森林表现更好的具体指导。如果您想坚持学习scikit,请查看文章Strategies to scale computationally: bigger data。
答案 1 :(得分:-1)
我建议你尝试 H2O 。 H2O是一个开源机器学习平台,公司可以在大型数据集上构建模型(无需采样)并实现准确的预测。它非常快速,可扩展,易于在任何级别实施。
H2O具有干净清晰的功能,可以直接将工具(R或Python)与机器的CPU连接。通过这种方式,我们可以获得更多内存,处理工具的功能,从而实现更快的计算。这将允许计算以100%的CPU容量进行。它还可以与云平台上的集群连接以进行计算。
它在Regression,RandomForest,DeepLearning中提供算法。
访问网站以获取更多信息: - http://www.h2o.ai/