如果您没有用户偏好值,也许您不需要它们。Mahout 提供了一种为用户推荐项目而没有偏好值的实现。这称为布尔偏好。基本上你只知道一些用户喜欢某个项目,但你不知道有多少。有时这很好。
波纹管是如何做到这一点的示例代码。基本上只有第一行不同,你告诉你的数据模型是 type BooleanPrefDataModel
。然后使用布尔数据,您可以使用两种类型的相似性度量:LogLikelihoodSimilarity TanimotoCoefficientSimilarity
,. 两者都可用于计算基于用户和基于项目的推荐。
DataModel model = new GenericBooleanPrefDataModel( GenericBooleanPrefDataModel.toDataMap( new FileDataModel(new File("FILE_NAME"))));
UserSimilarity similarity = new LogLikelihoodSimilarity(model);
UserNeighborhood neighborhood = new NearestNUserNeighborhood(10, similarity, model);
Reecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
List<RecommendedItem> recommendations = recommender.recommend(1, 10);
for (RecommendedItem recommendation : recommendations) {
System.out.println(recommendation);
}
另一种选择是在 mahout 之外计算偏好值,并将数据模型提供给其他一些基于用户或基于项目的算法。但据我所知,mahout 不提供计算偏好值的实现。