2011-08-27 25 views
1

我正在Mahout上發現一個問題,當我嘗試更改我的csv時,以前它給了我適當的建議。Mahout Recommender無法正常工作

示例代碼:

model = new FileDataModel(new File("E:\\WriteTest.csv")); 
UserSimilarity similarity = new PearsonCorrelationSimilarity(model); 
UserNeighborhood neighborhood = new NearestNUserNeighborhood(2,similarity,model); 
Recommender recomender = new GenericUserBasedRecommender(model,neighborhood, similarity); 

List<RecommendedItem> recommendations = recomender.recommend(1,1); 

for(RecommendedItem recommendation: recommendations){ 
    System.out.println(recommendation); 
} 

我剛剛更新了我的CSV的價值和它已經停止給我的建議。

CSV未給我任何結果:

1,13,9.9 
1,26,9.0 
1,40,4.0 
2,83,9.9 
2,167,9.0 
2,250,4.0 
3,91,9.9 
3,167,9.0 
3,274,4.0 
4,91,9.9 
4,167,2.0 

CSV這是給我的結果是:

1,101,5.0 
1,102,3.0 
1,103,3.0 

2,101,5.0 
2,102,2.5 
2,103,3.0 
2,104,2.1 

3,101,5.0 
3,102,2.5 
3,105,4.0 
3,107,5.0 

4,102,2.0 
4,104,4.0 
4,105,2.5 
4,106,3.0 
4,107,2.6 

5,101,5.0 
5,102,3.4 
5,104,2.5 
5,105,2.5 
5,106,1.0 

分別在控制檯輸出:

從1數據集八月結果27,2011 2:45:06 AM org.slf4j.impl.JCLLoggerAdapter信息:爲創建FileDataModelfile WriteTest.csv Aug 27,2011 2:45:06 AM org.slf4j.impl.JCLLoggerAdapter info INFO:Reading file info ... Aug 27,2011 2:45:06 AM org.slf4j.impl.JCLLoggerAdapter資訊信息: readlines方法:11 2011年8月27日上午02時45分06秒org.slf4j.impl.JCLLoggerAdapter 信息INFO:加工4個用戶

我期待貨號167,但din't找到任何推薦

輸出第二數據集:

Aug 27, 2011 2:52:42 AM org.slf4j.impl.JCLLoggerAdapter info 
INFO: Creating FileDataModel for file WriteTest.csv 
Aug 27, 2011 2:52:42 AM org.slf4j.impl.JCLLoggerAdapter info 
INFO: Reading file info... 
Aug 27, 2011 2:52:42 AM org.slf4j.impl.JCLLoggerAdapter info 
INFO: Read lines: 21 
Aug 27, 2011 2:52:42 AM org.slf4j.impl.JCLLoggerAdapter info 
INFO: Processed 5 users 
RecommendedItem[item:105, value:3.25] 

回答

2

推薦人工作正常。問題是你的數據太稀少了。它找不到可以鏈接兩個用戶的相似性,因此推薦使用167。嘗試一個更現實的數據集,我認爲這種行爲看起來不那麼令人驚訝。

+1

(回答上面的評論。)你爲什麼認爲167是一個很好的建議?其他用戶對此評價很高,但他們可能喜歡與用戶喜歡的完全不同的東西。例如,可能13/26/40是古典音樂專輯,167是重金屬。沒有任何東西將用戶1鏈接到用戶2/3/4。據我們所知,他們有完全不相關的口味。不,167沒有一個好的答案,因爲沒有證據支持它。 –