我需要在一个大数据集(10-1000 亿条记录)上运行各种机器学习技术问题主要围绕文本挖掘/信息提取,包括各种内核技术但不限于它们(我们使用一些贝叶斯方法、引导、梯度boosting,回归树——许多不同的问题和解决它们的方法)
最好的实现是什么?我有 ML 经验,但没有太多经验如何处理大型数据集 是否有任何可扩展和可定制的机器学习库利用 MapReduce 基础设施 强烈偏好 c++,但 Java 和 python 都可以 Amazon Azure 或自己的数据中心(我们可以买得起)?
我需要在一个大数据集(10-1000 亿条记录)上运行各种机器学习技术问题主要围绕文本挖掘/信息提取,包括各种内核技术但不限于它们(我们使用一些贝叶斯方法、引导、梯度boosting,回归树——许多不同的问题和解决它们的方法)
最好的实现是什么?我有 ML 经验,但没有太多经验如何处理大型数据集 是否有任何可扩展和可定制的机器学习库利用 MapReduce 基础设施 强烈偏好 c++,但 Java 和 python 都可以 Amazon Azure 或自己的数据中心(我们可以买得起)?
除非您尝试学习的分类状态空间非常大,否则我预计在具有 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。
Apache Mahout是您正在寻找的。
迟到的答案,但这里是大规模数据挖掘和机器学习的一个很好的链接: GraphLab 项目由一个核心 C++ GraphLab API 和一组构建在 GraphLab API 之上的高性能机器学习和数据挖掘工具包组成。此外,我们正在积极开发新接口,以允许用户利用其他语言和技术的 GraphLab API。
我不知道有任何 ML 库可以支持 10 到 1000 亿条记录,这有点极端,所以我不希望找到现成的任何东西。我建议您看看 NetFlix 获奖者: http: //www.netflixprize.com//community/viewtopic.php?id= 1537
NetFlix 奖有超过 1 亿个条目,因此虽然它没有您的数据集那么大,但您可能仍然会发现他们的解决方案是适用的。BelKor团队所做的是将多种算法(类似于集成学习)结合起来,并对每个算法的“预测”或输出进行加权。
我不知道任何使用 map/reduce 的 ML 库。也许您有能力同时使用 ML 库和 Map/Reduce 库?您可能想查看 Hadoop 的 Map/Reduce: http ://hadoop.apache.org/mapreduce/
您必须实现 reduce 和 map 方法。您使用了如此多的技术这一事实可能会使这一点复杂化。
您可以在自己的集群上运行它,或者如果您正在进行研究,也许您可以查看 BOINC(http://boinc.berkeley.edu/)。
另一方面,也许你可以减少你的数据集。我不知道你在训练什么,但 100 亿条记录中肯定有一些冗余......
查看http://hunch.net/?p=1068了解有关 Vowpal Wabbit 的信息;它是一个用于大规模应用的随机梯度下降库。
我的一个朋友从事过类似的项目。他将 perl 用于文本挖掘,将 matlab 用于贝叶斯方法、潜在语义分析和高斯混合等技术……
请参阅此大型机器学习资源(课程、论文等)列表:http ://www.quora.com/Machine-Learning/What-are-some-introductory-resources-for-learning-about-large-scale -机器学习