27

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

最好的实现是什么?我有 ML 经验,但没有太多经验如何处理大型数据集 是否有任何可扩展和可定制的机器学习库利用 MapReduce 基础设施 强烈偏好 c++,但 Java 和 python 都可以 Amazon Azure 或自己的数据中心(我们可以买得起)?

4

8 回答 8

21

除非您尝试学习的分类状态空间非常大,否则我预计在具有 10-1000 亿条记录或训练样本的以文本挖掘为重点的数据集中存在显着冗余。作为一个粗略的猜测,我怀疑一个人需要的不仅仅是 1-2% 的随机样本子集来学习可靠的分类器,这些分类器在交叉验证测试中也能很好地支持。

通过快速文献搜索,我们找到了以下相关论文。Tsang 论文声称n 个训练样本的时间复杂度为O(n),并且有与之相关的软件可用作LibCVM 工具包。Wolfe 论文描述了一种基于 MapReduce 的分布式 EM 方法。

最后,在 NIPS 2009 会议上有一个大型机器学习研讨会,看起来有很多有趣和相关的演讲。

参考

Ivor W. Tsang、James T. Kwok、Pak-Ming Cheung (2005)。“核心向量机:超大数据集上的快速 SVM 训练”,机器学习研究杂志,第 6 卷,第 363-392 页。

J Wolfe、A Haghighi、D Klein (2008)。“用于超大数据集的完全分布式 EM ”,第 25 届机器学习国际会议论文集,第 1184-1191 页。

Olivier Camp、Joaquim BL Filipe、Slimane Hammoudi 和 Mario Piattini (2005)。“使用支持向量机算法挖掘超大型数据集”,Enterprise Information Systems V,Springer Netherlands,pp 177-184。

于 2010-07-09T04:43:44.183 回答
14

Apache Mahout是您正在寻找的。

于 2010-07-09T02:57:33.363 回答
1

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

NetFlix 奖有超过 1 亿个条目,因此虽然它没有您的数据集那么大,但您可能仍然会发现他们的解决方案是适用的。BelKor团队所做的是将多种算法(类似于集成学习)结合起来,并对每个算法的“预测”或输出进行加权

于 2010-07-09T02:33:10.807 回答
1

我不知道任何使用 map/reduce 的 ML 库。也许您有能力同时使用 ML 库和 Map/Reduce 库?您可能想查看 Hadoop 的 Map/Reduce: http ://hadoop.apache.org/mapreduce/

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

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

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

于 2010-07-09T02:52:31.230 回答
1

查看http://hunch.net/?p=1068了解有关 Vowpal Wabbit 的信息;它是一个用于大规模应用的随机梯度下降库。

于 2010-07-26T17:19:07.567 回答
0

我的一个朋友从事过类似的项目。他将 perl 用于文本挖掘,将 matlab 用于贝叶斯方法、潜在语义分析和高斯混合等技术……

于 2010-07-09T00:27:17.667 回答
0

请参阅此大型机器学习资源(课程、论文等)列表:http ://www.quora.com/Machine-Learning/What-are-some-introductory-resources-for-learning-about-large-scale -机器学习

于 2011-06-15T01:18:23.187 回答