尽管Pearson Correlation具有最佳相似性,但没有针对小型数据集的建议

时间:2014-05-12 18:37:50

标签: mahout mahout-recommender

我在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皮尔森的理解是错误的。

1 个答案:

答案 0 :(得分:0)

PearsonCorrelationSimilarity不适用于较小且较不相似的数据集。您可以更改相似性方法或邻域大小。增加数据集大小时,您将获得良好的结果。 此外,您可以增加推荐大小(推荐功能howMany)。