我想建立一個推薦系統,目標是應對真正的大數據集,像1點TB的數據。哪個開源推薦系統,我應該選擇來處理大數據集
而且每個用戶擁有項目的真正數額巨大,但用戶數量較少,比如幾千或10萬。
我有谷歌搜索,我發現有一些基於hadoop的開源推薦引擎,如Mahout,我想它可能有處理這些大數據的能力,但是我不確定。
我還發現在C++中的Python,PHP甚至一些發動機寫的,我不認爲腳本語言能夠處理這麼大的數據,導致內存不能包含整個數據集。
或者我錯了?有人能給我一些建議嗎?
我想建立一個推薦系統,目標是應對真正的大數據集,像1點TB的數據。哪個開源推薦系統,我應該選擇來處理大數據集
而且每個用戶擁有項目的真正數額巨大,但用戶數量較少,比如幾千或10萬。
我有谷歌搜索,我發現有一些基於hadoop的開源推薦引擎,如Mahout,我想它可能有處理這些大數據的能力,但是我不確定。
我還發現在C++中的Python,PHP甚至一些發動機寫的,我不認爲腳本語言能夠處理這麼大的數據,導致內存不能包含整個數據集。
或者我錯了?有人能給我一些建議嗎?
你的問題的標題是:
哪個開源系統的建議我應該選擇處理 大數據集?
,並在第一行,你說
我想建立一個推薦系統,目標是應對真正的大數據集,>像1點TB的數據。
而且你所要求的一個建議,作爲一個答案。
先回答你的第二個問題。根據我建立推薦系統的經驗,我建議你不要從頭開始「建立」推薦系統,如果可以避免的話。推薦系統非常複雜,可以使用各種技術爲用戶提供建議。所以我的建議是,除非你真的承諾,並且擁有一批在推薦系統,統計和軟件工程方面具有豐富經驗和知識的人員,然後尋求實施現有的推薦系統,而不是建立自己的推薦系統。
在其開放源碼的推薦系統,你應該選擇而言,這實際上是相當困難的非常精確地回答。讓我試着通過分解來回答這個問題。
我建議你看看更多到算法一側,這將是哪個工具,您可以使用,或是否需要推出自己的決定因素。從這裏開始閱讀http://www.ibm.com/developerworks/library/os-recommender1/,以便深入瞭解推薦系統使用的不同方法。總之,不同的方法:
你的情況,讓事情變得相對簡單聽起來就像你應該考慮一個用戶用戶協同過濾算法一樣。一個原因是:
我的建議的基於用戶的部分是因爲它聽起來像你有用戶少於你的項目。在基於用戶的最近鄰域中,用戶U的新項目I的預測評級通過查看也評估了項目I並且與用戶U最相似的其他用戶來計算。因爲您的用戶比系統中的項目少與基於物品的協作過濾相比,計算基於用戶的協作過濾的速度會更快。
在基於用戶的協作過濾中,您需要考慮要使用的評分歸一化(平均中心vs z分數),相似性權重計算方法(例如餘弦vs Pearsons相關性vs其他相似性度量)使用鄰居選擇標準(鄰居的預過濾,參與預測的鄰居數量)以及要實施的任何維度降低方法(SVD,SVD ++)(對於像您這樣的大型數據集,您需要認真考慮DM )。
所以真的不是尋找一個能夠處理數據集的開源代碼,而應該首先考慮您的算法選擇,然後尋找一個具有此算法實現的工具,然後評估它是否可以處理您的數據集中涉及的數量。
這麼說吧,如果你確實選擇了基於用戶的協作過濾路線,那麼我相信Apache Mahout將能夠解決你的問題,如果沒有,它肯定會幫助你理解複雜性參與構建你自己的(只看他們的源代碼)。
請注意,建議是真的考慮算法的選擇。 「好」推薦系統不僅僅是能夠處理大型數據集。您需要考慮準確性,覆蓋範圍,信心,新穎性,偶然性,多樣性,健壯性,隱私性,風險用戶信任以及可擴展性。您還應該考慮您將如何執行實驗並評估您的建議,請記住,如果您所推薦的建議是垃圾內容,並且會關閉用戶,那麼推薦系統就沒有意義了!
這是一個非常大的領域,需要思考的很多,可能沒有一個單一的工具可以幫助你完成所有的事情,所以要做好大量的閱讀和研究工作,以及實施很多不同的開源工具來幫助你。
在說,開始看Apache的Mahout。回到我說你應該考慮的3個領域的分解。
希望有幫助,祝你好運。
是的,Mahout將是您的正確選擇。通過Mahout協作過濾,您可以在分佈式系統上構建可擴展的推薦系統,以處理非常大的數據集。 –