机器学习sklearn中的大型数据集

3
我有一个数据集,它每天都在增长。我很担心,不久之后,这个数据集的规模会变得太大,内存可能无法容纳。我在我的应用程序中使用随机森林分类器和回归器。我听说过部分拟合,但我不知道随机森林是否可以这样做。 我该如何确保应用程序不会崩溃,并且即使数据集超出内存大小,它仍然能够良好运行。如果使用svm代替随机森林,情况会有所不同吗?

你的数据集有多大?你在sklearn中定义作业数量吗?请注意,有不同的优化方法。你总是可以使用不需要将完整的训练集加载到内存中的方法,而是使用批处理。采用随机梯度下降法。 - Lukasz Tracewski
是的,数据最终可能会变得非常大,甚至达到几个太字节。此外,我想知道随机森林是否仍然有效。 - Jibin Mathew
请查看http://scikit-learn.org/stable/modules/scaling_strategies.html。 - Vivek Kumar
1个回答

2
一般来说,您应该寻找提供增量在线训练的方法。在这种情况下,您不必一次向算法呈现完整的数据集,而是在新数据变得可用时进行呈现。如果数据每天增长且计算资源有限,则这是至关重要的。随机梯度下降是一种相当受欢迎的优化方法,符合您的要求。
您可以使用随机森林的一个变种,称为Mondarian Forest。引用链接论文的摘要:“Mondrian forests取得了与现有在线随机森林和定期重新训练批处理随机森林相当的竞争性预测性能,同时速度超过一个数量级,因此代表更好的计算与准确性的权衡。” 代码可以在GitHub上找到。
如果不知道您的数据和问题的性质,就无法为您提供比随机森林更好的具体指导。如果想坚持使用scikit-learn,请查看文章Strategies to scale computationally: bigger data

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接