20

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

4

1 回答 1

44

HashingVectorizer例如,如果您将数据迭代地分成适合内存的 10k 或 100k 文档批次,那么它将起作用。

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

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

您还可以在数据分区上的多台机器上并行执行此操作,然后平均结果coef_intercept_属性以获得所有数据集的最终线性模型。

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

教程中还有关于使用 IPython.parallel 瘫痪 scikit-learn 的示例代码,取自:https ://github.com/ogrisel/parallel_ml_tutorial

于 2013-06-10T07:24:44.403 回答