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

che*_*ren 17 python machine-learning scikit-learn

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

ogr*_*sel 40

HashingVectorizer 如果您将数据迭代地分块到适合内存的10k或100k文档批处理中,它们将起作用.

然后,您可以将批量转换后的文档传递给支持该partial_fit方法的线性分类器(例如SGDClassifierPassiveAggressiveClassifier),然后迭代新批次.

您可以在保持验证集(例如10k文档)上开始对模型进行评分,以便在不等待看到所有样本的情况下监控部分训练模型的准确性.

你也可以这样做并行上的数据的分区,几台机器,然后平均得到的coef_intercept_属性来获取所有数据集最后的线性模型.

我在2013年3月在PyData上发表的演讲中对此进行了讨论:http://vimeo.com/63269736

教程中提供了使用IPython.parallel对scrakit-learn进行瘫痪的示例代码:https://github.com/ogrisel/parallel_ml_tutorial