0

在 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 的理解是错误的,我将不胜感激。

4

1 回答 1

0

PearsonCorrelationSimilarity 不适用于小型且不太相似的数据集。您可以更改相似度方法或邻域大小。当你增加数据集大小时,你会得到很好的结果。此外,您可以增加推荐大小(对于推荐功能 howMany)。

于 2014-05-23T07:55:48.060 回答