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

时间:2013-06-10 06:19:16

标签: python machine-learning scikit-learn

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

1 个答案:

答案 0 :(得分:39)

如果您将数据迭代地分块为适合内存的10k或100k文档批处理,那么

HashingVectorizer将起作用。

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

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

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

我在2013年3月在PyData上发表的演讲中讨论过这个问题:http://vimeo.com/63269736

tutorial on paralyzing scikit-learn with IPython.parallel中的示例代码取自:https://github.com/ogrisel/parallel_ml_tutorial