使用 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。
我正在尝试使用 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。