使用Apache Mahout创建基于项目的推荐器

时间:2015-06-26 21:15:57

标签: mahout mahout-recommender

我尝试使用Apache Mahout创建一个基于项目的推荐器,该推荐器根据其他用户也有的类似项目推荐返回项目。

我首先创建一个DataModel,然后我尝试将其传递给各种不同的ItemSimilarity对象:

// Create data model
DataModel datamodel = new FileDataModel(new File("input.csv"));

// ItemSimilarity object
// ItemSimilarity similarity = new EuclideanDistanceSimilarity(datamodel);
// ItemSimilarity similarity = new PearsonCorrelationSimilarity(datamodel);
ItemSimilarity similarity = new CityBlockSimilarity(datamodel);

然后我将DataModel和ItemSimilarity传递给GenericItemBasedRecommender并调用mostSimilarItems()函数并将其传递给列表。

ItemBasedRecommender irecommender = new GenericItemBasedRecommender(datamodel, similarity);
List<RecommendedItem> irecommendations = irecommender.mostSimilarItems(item, amount);

CityBlockSimilarity()类在小型数据集上运行良好,但是一旦切换到大型数据集,它就不再可靠了。

我需要实现一个不同的类来根据用户也有的其他项目返回项目的推荐吗?

1 个答案:

答案 0 :(得分:4)

因此,我需要实现的类是TanimotoCoefficientSimilarity类。一旦我改变了这一点,我就看到了我想看到的结果。

ItemSimilarity similarity = new TanimotoCoefficientSimilarity(datamodel);

我能够将其他所有内容保持一致,而且效果很好!如果您想了解更多相关信息,请参阅TanimotoCoefficientSimilarity class的链接。