在 Mahout 中运行 Recommender 引擎时遇到一个小问题:
我正在处理的数据集如下:
1,101,5.0
1,102,4.0
1,103,4.0
1,107,5.0
1,108,3.0
2,101,3.0
2,102,4.0
2,104,4.0
2,105,4.0
3,101,5.0
3,102,4.0
当我计算 1 和 3 之间的 Pearson 相似度时,我得到一个值 0.99999998 大约 1.0 这是最好的相似度,所以根据推荐规则。推荐给 User_ID 3 的输出应该是 Item_ID 107
但我的输出没有给出任何建议。
下面是我的代码:
public static void main( String[] args ) throws Exception
{
///////////////////////Data Model//////////////////////////////////////
DataModel model = new FileDataModel(new File("data/dataset_2.csv"));
System.out.println(model.getMaxPreference());
///////////////////Similarity between Users////////////////////////////
UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
System.out.println("Pearson distance "+similarity.userSimilarity(3, 1));
//////////////////The Neighbors who satisfy the threshold level//////////
UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model);
///////////////////Recommender recomending the best/////////////////////////
UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
List <RecommendedItem> recommendations = recommender.recommend(3, 1);
for (RecommendedItem recommendation : recommendations) {
System.out.println(recommendation);
}
}
}
如果有人能指出错误,或者我对 Mahout pearson corellation 的理解是错误的,我将不胜感激。