我在Mahout运行推荐引擎时遇到一个小问题:
我正在工作的数据集如下:
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皮尔森的理解是错误的。
答案 0 :(得分:0)
PearsonCorrelationSimilarity不适用于较小且较不相似的数据集。您可以更改相似性方法或邻域大小。增加数据集大小时,您将获得良好的结果。 此外,您可以增加推荐大小(推荐功能howMany)。