大规模机器学习

时间:2010-07-08 23:58:03

标签: java c++ machine-learning mapreduce text-mining

我需要在大数据集上运行各种机器学习技术(10-100亿条记录) 问题主要是文本挖掘/信息提取,包括各种内核技术,但不限于它们(我们使用一些贝叶斯方法,自举,梯度提升,回归树 - 许多不同的问题和解决方法)

什么是最佳实施?我在ML方面经验丰富,但对于如何为庞大的数据集做这些经验并不多 是否有任何可扩展和可定制的机器学习库使用MapReduce基础结构 强烈偏好c ++,但Java和python都可以 亚马逊Azure或自己的数据中心(我们可以负担得起)?

8 个答案:

答案 0 :(得分:20)

除非您尝试学习的分类状态空间非常大,否则我认为以文本挖掘为重点的数据集中存在大量冗余,其中包含10-100亿条记录或训练样本。粗略猜测一下,我怀疑是否需要比1-2%的随机样本子集更多的东西来学习在交叉验证测试中能够很好地保持的可靠分类器。

快速文献检索提出以下相关论文。 Tsang论文声称 n 训练样本的 O(n)时间复杂度,并且有与之相关的软件LibCVM toolkit。 Wolfe论文描述了一种基于MapReduce的分布式EM方法。

最后,在NIPS 2009大会上有一个Large-Scale Machine Learning workshop看起来有很多有趣且相关的演示文稿。

<强>参考

Ivor W. Tsang,James T. Kwok,Pak-Ming Cheung(2005)。 “Core Vector Machines: Fast SVM Training on Very Large Data Sets”,机器学习研究期刊,第6卷,第363-392页。

J Wolfe,A Haghighi,D Klein(2008)。 “Fully Distributed EM for Very Large Datasets”,第25届国际机器学习会议论文集,第1184-1191页。

Olivier Camp,Joaquim B. L. Filipe,Slimane Hammoudi和Mario Piattini(2005)。 “Mining Very Large Datasets with Support Vector Machine Algorithms ”,企业信息系统V,Springer荷兰,第177-184页。

答案 1 :(得分:14)

Apache Mahout正是您要找的。

答案 2 :(得分:3)

答案 3 :(得分:1)

我不知道任何可以支持10到1000亿条记录的ML库,这有点极端,所以我不希望找到任何现成的。我建议你看看NetFlix获奖者:http://www.netflixprize.com//community/viewtopic.php?id=1537

NetFlix奖项有超过1亿条款,因此虽然它不如您的数据集那么大,但您仍然可以找到适用的解决方案。 BelKor团队所做的是组合多种算法(类似于集成学习)并对每种算法的“预测”或输出进行加权。

答案 4 :(得分:1)

我不知道任何使用map / reduce的ML库。也许你有能力一起使用ML库和Map / Reduce库?您可能想要了解Hadoop的Map / Reduce: http://hadoop.apache.org/mapreduce/

你必须实现reduce和map方法。您使用这么多技术的事实可能会使这一点复杂化。

您可以在自己的群集上运行它,或者如果您正在进行研究,也许您可​​以查看BOINC(http://boinc.berkeley.edu/)。

另一方面,也许您可​​以减少数据集。我不知道你在训练什么,但在100亿条记录中必须有一些冗余......

答案 5 :(得分:1)

答案 6 :(得分:0)

我的一位朋友参与了一个类似的项目。他使用perl进行文本挖掘,使用matlab进行贝叶斯方法,潜在语义分析和高斯混合等技术...

答案 7 :(得分:0)