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

Creating an Item-based Recommender using Apache Mahout

我正在尝试使用 Apache Mahout 创建一个基于项目的推荐器,该推荐器根据其他用户也有共同点的相似项目推荐过期项目。

我首先创建一个数据模型,然后尝试将其传递给各种不同的 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() class 在小数据集上效果很好,但一旦我切换到大数据集,它就不再可靠了。

是否有不同的 class 我需要根据用户也有共同点的其他项目对项目实施 return 推荐?

原来我需要实现的 class 是 TanimotoCoefficientSimilarity class。一旦我改变了这个,我就看到了我想要看到的结果。

ItemSimilarity similarity = new TanimotoCoefficientSimilarity(datamodel);

我能够保持其他一切不变,而且效果很好!如果您想阅读更多相关信息,请点击 link 到 TanimotoCoefficientSimilarity class