Mahout推荐人没有正常工作

时间:2011-08-27 07:54:02

标签: java mahout

我正在研究 Mahout ,当我尝试更改我的csv时发现了一个问题,之前它给了我正确的建议。

示例代码:

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

分别在控制台上输出:

  

第一个数据集的结果2011年8月27日凌晨2:45:06   org.slf4j.impl.JCLLoggerAdapter info INFO:为。创建FileDataModel   fileTest.csv 2011年8月27日凌晨2:45:06   org.slf4j.impl.JCLLoggerAdapter info INFO:读取文件信息... 8月   27,2011 2:45:06 AM org.slf4j.impl.JCLLoggerAdapter info INFO:   读物:2011年8月27日上午2:45:06 org.slf4j.impl.JCLLoggerAdapter   info INFO:处理了4个用户

我期待第167项,但没有找到任何建议

第二个数据集的输出:

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]

1 个答案:

答案 0 :(得分:2)

推荐人工作正常。问题是您的数据太稀疏。它找不到链接两个用户的相似性,因此推荐167。尝试更真实的数据集,我认为这种行为看起来不那么令人惊讶。