大规模机器学习 [关闭]

Posted

技术标签:

【中文标题】大规模机器学习 [关闭]【英文标题】:Large scale Machine Learning [closed] 【发布时间】:2011-03-13 15:25:36 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

迟到的答案,但这里是大规模数据挖掘和机器学习的一个很好的链接: The GraphLab project consists of a core C++ GraphLab API and a collection of high-performance machine learning and data mining toolkits built on top of the GraphLab API. In addition, we are actively developing new interfaces to allow users to leverage the GraphLab API from other languages and technologies.

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

【讨论】:

只使用一个系统并不能算作大规模,这也不是 OP 要求的。【参考方案5】:

除非您尝试学习的分类状态空间非常大,否则我预计在包含 10-1000 亿条记录或训练样本的以文本挖掘为重点的数据集中存在大量冗余。作为一个粗略的猜测,我怀疑人们需要的不仅仅是 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 页。

【讨论】:

【参考方案6】:

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

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

【讨论】:

Mahout/hadoop 支持这些规模【参考方案7】:

Apache Mahout 就是你要找的东西。

【讨论】:

它可以在 Windows 上运行吗?【参考方案8】:

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

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

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

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

【讨论】:

Mahout 是一个使用 hadoop 进行处理的机器学习库

以上是关于大规模机器学习 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

吴恩达机器学习-12-大规模机器学习和图片文字识别OCR

机器学习公开课笔记(10):大规模机器学习

何时在机器学习中执行规范化或标准化? [关闭]

大规模机器学习

吴恩达《机器学习》课程总结(17)大规模机器学习

原Coursera—Andrew Ng机器学习—Week 10 习题—大规模机器学习