【问题标题】:Creating an Item-based Recommender using Apache Mahout使用 Apache Mahout 创建基于项目的推荐器
【发布时间】:2015-06-26 21:15:57
【问题描述】:

我正在尝试使用 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() 类在小型数据集上运行良好,但一旦我切换到大型数据集,它就不再可靠了。

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

【问题讨论】:

    标签: mahout mahout-recommender


    【解决方案1】:

    原来我需要实现的类是TanimotoCoefficientSimilarity 类。更改此设置后,我看到了我想看到的结果。

    ItemSimilarity similarity = new TanimotoCoefficientSimilarity(datamodel);
    

    我能够让其他一切保持不变,而且效果很好!如果您想了解更多信息,这里有一个指向TanimotoCoefficientSimilarity class 的链接。

    【讨论】:

    • Afaik,Tanimato 用于布尔偏好。将推荐器更改为 GenericBooleanPrefItemBasedRecommender 也可能会增加结果。
    • @Turcia - 太好了,谢谢!我已经把它放进去,我运行的几个测试显示了完全相同的结果,但我会继续检查它!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 2012-11-29
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多