2010-07-08 100 views
24

我需要在大數據集上運行各種機器學習技術(10-100億記錄) 這些問題主要圍繞文本挖掘/信息提取,幷包括各種內核技術,但不限於它們(我們使用一些貝葉斯方法,引導,梯度提升,迴歸樹 - 許多不同的問題和解決它們的方法)大型機器學習

什麼是最佳實施?我有ML經驗,但沒有太多的經驗如何做到這一點大數據集 是否有任何可擴展和可定製的機器學習庫利用MapReduce基礎設施 C++的強烈偏好,但Java和python可以 Amazon Azure或自己的數據中心(我們可以負擔得起)?

回答

20

除非您嘗試學習的分類狀態空間非常大,否則我認爲在以文本挖掘爲重點的數據集中會有1000至1000億條記錄或訓練樣本存在顯着冗餘。作爲一個粗略的猜測,我懷疑一個人需要比1-2%的隨機樣本子集多得多的學習可靠的分類器,這在交叉驗證測試中會很好地保持。

快速文獻檢索提出了以下相關論文。 Tsang的論文聲稱O(n)時間複雜度爲n訓練樣本,並且有與之相關的軟件可用作LibCVM toolkit。沃爾夫論文描述了基於MapReduce的分佈式EM方法。

最後,在NIPS 2009會議上有一個Large-Scale Machine Learning workshop,看起來有很多有趣和相關的演講。

參考

艾弗·W·曾,詹姆斯·郭,白明祥(2005)。 「Core Vector Machines: Fast SVM Training on Very Large Data Sets」,Journal of Machine Learning Research,第6卷,第363-392頁。

J Wolfe,A Haghighi,D Klein(2008)。 「Fully Distributed EM for Very Large Datasets」,Proceedings of the 25th International Conference on Machine Learning,pp 1184-1191。

奧利維爾營,若阿金·B. L.菲利佩,蘇萊曼Hammoudi和馬里奧Piattini(2005)。 「Mining Very Large Datasets with Support Vector Machine Algorithms」,Enterprise Information Systems V,Springer Netherlands,第177-184頁。

0

我的一位朋友曾參與類似的項目。他使用perl進行文本挖掘和matlab技術,如貝葉斯方法,潛在語義分析和高斯混合...

+0

使用只有一個系統並不算大規模,這也不是OP要求的。 – Staffan 2010-07-09 00:40:11

1

我不知道任何ML庫可以支持10到100億條記錄,這是一個有點極端,所以我不希望找到任何現成的東西。我想推薦的是你看看NetFlix獲獎者:http://www.netflixprize.com//community/viewtopic.php?id=1537

NetFlix獎獲得超過1億個參賽作品,雖然它不像數據集那麼大,但你仍然可以找到他們的解決方案。 BelKor團隊所做的就是將多種算法(類似於集成學習)結合起來,並對每種算法的「預測」或輸出進行加權。

+0

Mahout/hadoop支持這些刻度 – 2014-04-14 04:21:24

1

我不知道任何使用map/reduce的ML庫。也許你有能力一起使用ML庫和Map/Reduce庫嗎?你可能想看看Hadoop的Map/Reduce: http://hadoop.apache.org/mapreduce/

你必須實現reduce和map方法。你使用這麼多技術的事實可能會使這變得複雜。

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

另一方面,也許你可以減少你的數據集。我不知道你在訓練什麼,但是在100億條記錄中必須有一些冗餘......

+0

Mahout是一個使用hadoop進行處理的機器學習庫 – 2014-04-14 04:22:11