我需要在一个非常大的数据集(10-100亿条记录)上运行多种机器学习技术,主要问题围绕文本挖掘/信息提取展开,包括各种核技术,但不仅限于此(我们使用了一些贝叶斯方法、自助法、梯度提升、回归树——许多不同的问题和解决方法)。
哪种是最好的实现方式呢?我在机器学习方面有经验,但对如何处理巨大数据集没有太多经验。有没有可扩展和可定制的机器学习库,利用MapReduce基础架构?我很偏爱C++,但Java和Python也可以。亚马逊、Azure或自己的数据中心(我们负担得起)都可以。
我需要在一个非常大的数据集(10-100亿条记录)上运行多种机器学习技术,主要问题围绕文本挖掘/信息提取展开,包括各种核技术,但不仅限于此(我们使用了一些贝叶斯方法、自助法、梯度提升、回归树——许多不同的问题和解决方法)。
哪种是最好的实现方式呢?我在机器学习方面有经验,但对如何处理巨大数据集没有太多经验。有没有可扩展和可定制的机器学习库,利用MapReduce基础架构?我很偏爱C++,但Java和Python也可以。亚马逊、Azure或自己的数据中心(我们负担得起)都可以。
J Wolfe, A Haghighi, D Klein (2008). "非常大的数据集的完全分布式EM算法", 机器学习国际会议第25届会议论文集, pp 1184-1191.
Olivier Camp, Joaquim B. L. Filipe, Slimane Hammoudi和Mario Piattini (2005). "使用支持向量机算法挖掘非常大的数据集", 企业信息系统V, Springer Netherlands, pp 177-184.
我不知道有哪些机器学习库可以支持1000亿至1万亿条记录,那是非常极端的情况,所以我不指望能找到现成的解决方案。但我建议你看一下 NetFlix 奖项获得者的代码:http://www.netflixprize.com//community/viewtopic.php?id=1537
NetFlix 奖项有超过1亿个参赛作品,虽然没有你的数据集那么庞大,但你可能会发现他们的解决方案适用。BelKor 团队所做的是将多个算法进行组合(类似于集成学习),并对每个算法的"预测"或输出进行加权。
我不知道有任何使用map/reduce的机器学习库。也许您可以使用机器学习库和Map/Reduce库一起?您可能需要研究一下Hadoop的Map/Reduce: http://hadoop.apache.org/mapreduce/
您将不得不实现reduce和map方法。您使用了这么多技术可能会使这个过程变得复杂。
您可以在自己的群集上运行它,或者如果您正在进行研究,可以看看BOINC(http://boinc.berkeley.edu/)。
另一方面,也许您可以减少数据集。我不知道您正在进行什么训练,但是100亿条记录中必定存在一些冗余...