我正在研究一个涉及使用机器学习技术的TREC任务,其中数据集由超过5tb的web文档组成,计划从中提取词袋向量。scikit-learn
有一组很好的功能,似乎符合我的需求,但我不知道它是否能够很好地扩展到处理大数据。例如,HashingVectorizer
是否能够处理5tb的文档,是否可以并行化它?此外,对于大规模机器学习任务,有哪些替代方案?
HashingVectorizer
将工作,如果你迭代你的数据块成批10k或100k的文档适合内存为例。
你可以将这批转换后的文档传递给支持partial_fit
方法的线性分类器(例如SGDClassifier
或PassiveAggressiveClassifier
),然后在新批次上迭代。
当你开始监控部分训练模型的准确性时,你可以开始在一个保留的验证集(例如10k文档)上对模型进行评分,而不必等待看到所有的样本。
您也可以在数据分区上的几台机器上并行执行此操作,然后平均结果coef_
和intercept_
属性,以获得所有数据集的最终线性模型。
我在2013年3月PyData: http://vimeo.com/63269736
的演讲中讨论了这个问题。本教程中还有关于使用IPython麻痹scikit-learn的示例代码。平行取自:https://github.com/ogrisel/parallel_ml_tutorial