2013-06-11 41 views
0

我們使用Mahout來獲取基於用戶和基於ItemBased的建議。我們正在使用包含帳戶及的itemId(以任何形式沒有排序),Tanimoto係數相似性和GenericBooleanPrefItemBasedRecommender的映射文件的數據模型,提高Mahout的性能

DataModel dataModel = new FileDataModel("/FilePath");

_itemSimilarity = new TanimotoCoefficientSimilarity(dataModel);

_recommender = new CachingRecommender(new GenericBooleanPrefItemBasedRecommender(dataModel,_itemSimilarity));

我們也有一個rescorer來篩選出一些結果,我們稱之爲推薦人的內建推薦方法,

_recommender.recommend(userID, howMany, _rescorer);

我們有大約20萬個用戶,55萬個產品和大約400萬個條目作爲用戶產品偏好。 我們面臨的問題是,爲用戶推薦方法的第一個電話需要大約300-400ms才能返回推薦項目列表,根據我們的需要這不是一個可行的選項。我正在尋找某些人使用mahout的優化技術,或者可能是某人在給定的方法中實現了自己推薦的方法,或者在向數據文件添加某種排序之後應該傳遞數據。我們試圖讓推薦時間大約爲100ms。 任何建議都會非常有幫助。

回答

0
+0

我猜測,一個CandidateItemStrategy將與基於項推薦一種選擇,但我使用的是基於用戶的推薦,我可以通過使用過濾掉已經看到產品rescorer。另外我並不想刪除用戶已經瀏覽過的產品,我確實希望將它們保留在推薦列表中。雖然我的問題是推薦時間,但我希望將推薦時間從400毫秒減少到100毫秒左右。 – user1045047

+0

另外我會很感激,如果你可以建議,如果它是一個好主意,使用現場網站mahout的開箱即用,或一般來說它是一個更好的做法,以覆蓋mahout內的一些功能(例如: - 推薦,mostSimilarItems等),以最大限度地提高性能,如果是的話,通常建議什麼樣的變化或包裝。 – user1045047