Python scikit learn是否适合大数据任务?

Python scikit learn是否适合大数据任务?,python,machine-learning,scikit-learn,Python,Machine Learning,Scikit Learn,我正在从事一项涉及使用机器学习技术的TREC任务,其中数据集由超过5 TB的web文档组成,计划从中提取一袋单词向量scikit learn有一套很好的功能,似乎适合我的需要,但我不知道它是否能够很好地扩展以处理大数据。例如,HashingVectorizer是否能够处理5 TB的文档,并行化是否可行?此外,对于大规模机器学习任务,还有哪些替代方案?HashingVectorizer如果您迭代地将数据分块成10k或100k个适合内存的文档批,则可以使用 然后,您可以将转换后的文档批传递给支持部分

我正在从事一项涉及使用机器学习技术的TREC任务,其中数据集由超过5 TB的web文档组成,计划从中提取一袋单词向量
scikit learn
有一套很好的功能,似乎适合我的需要,但我不知道它是否能够很好地扩展以处理大数据。例如,
HashingVectorizer
是否能够处理5 TB的文档,并行化是否可行?此外,对于大规模机器学习任务,还有哪些替代方案?

HashingVectorizer
如果您迭代地将数据分块成10k或100k个适合内存的文档批,则可以使用

然后,您可以将转换后的文档批传递给支持
部分拟合
方法的线性分类器(例如
sgdclassizer
PassiveAggressiveClassifier
),然后迭代新批

在监控部分训练模型的准确性时,您可以开始在保留的验证集(例如10k文档)上对模型进行评分,而无需等待看到所有样本

您还可以在数据分区上的多台计算机上并行执行此操作,然后对生成的
coef_
intercept_
属性进行平均,以获得所有数据集的最终线性模型

我在2013年3月在PyData的演讲中讨论了这一点:


这其中还有一个示例代码取自:

是的,scikit learn将为您提供最佳答案…逻辑回归应该能够满足您的需要,而在scikit learn中实现的逻辑回归在如此大的数据集上不起作用:这是liblinear的包装器,需要在拟合之前将数据加载到内存中。@ogrisel,sklearn中的LogisticRegression使用二阶优化方法,因此不适合大规模数据。SGDClassizer也可以,但如何在如此大规模的数据集上进行功能扩展呢?