我正在开展一项涉及机器学习技术的TREC任务,其中数据集包含超过5TB的Web文档,计划从中提取词袋向量。 scikit-learn
有一套很好的功能,似乎符合我的需要,但我不知道它是否能够很好地处理大数据。例如,HashingVectorizer
是否能够处理5TB的文档,并行化它是否可行?此外,还有哪些替代方案可用于大规模机器学习任务?
答案 0 :(得分:39)
HashingVectorizer
将起作用。
然后,您可以将批量转换后的文档传递给支持partial_fit
方法的线性分类器(例如SGDClassifier
或PassiveAggressiveClassifier
),然后迭代新批次。
您可以开始在保留的验证集(例如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