【问题标题】:Mahout recommender evaluation - how to use a fixed test setMahout 推荐器评估 - 如何使用固定测试集
【发布时间】:2014-11-10 22:22:07
【问题描述】:

我正在使用 Apache Mahout 编写推荐系统评估器,使用 train.csv 训练集和 Precision 指标。我的问题是:可以使用不是由评估者生成的固定测试集​​吗?

更具体地说,我有一个包含 UserId 列表的 test.csv 文件,我想针对这些用户提供建议并使用 Precision 指标评估结果,仅针对这组永不更改的固定用户。他们的评分在文件 train.csv 中,我用它来训练算法,它还包含所有其他用户的评分。

我还发布了我想要添加此功能的代码:

    RandomUtils.useTestSeed(); 
    DataModel model = new FileDataModel(new File("files/train.csv"));
    RecommenderIRStatsEvaluator evaluator = new GenericRecommenderIRStatsEvaluator();

    RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {

        public Recommender buildRecommender(DataModel model) throws TasteException {
            //Here I build my recommender system
            //return ...
        }
    };

    IRStatistics stats = evaluator.evaluate(recommenderBuilder, null, model, null, 5,
            4/*relevance Threshold*/, 1); 


    System.out.println(stats.getPrecision());

【问题讨论】:

    标签: testing dataset mahout mahout-recommender evaluator


    【解决方案1】:

    因此,您需要自己拥有的交叉验证黄金标准测试数据。它分为训练和测试。您想要一个可重复的测试。这很有意义。

    Mahout 评估器会根据您传入的测试和训练数据的随机选择为您进行拆分。如果您传入固定的 RNG 种子,评估器将选择完全相同的测试和训练集。这不是您所要求的,但它是获得可重复 CV 测试的一种方法。

    否则,您将需要破解 Evaluator 以使用您预先计算的测试/训练集。

    我使用的精度指标是某些推荐数量的平均精度 (MAP),例如您将计算或在 UI 中显示的数字。 Mahout Evaluator 中没有内置此功能。

    要做到这一切,你需要破解 Evaluator。

    顺便说一句,除非绝对简单是最高设计标准,否则我不会使用该推荐器。最新的 Mahout 推荐器构建使用 Solr 或 Elasticsearch 等搜索引擎查询的模型。这些都非常灵活和可扩展。

    这里描述的新方式:http://mahout.apache.org/users/recommender/intro-cooccurrence-spark.html 这里有一些关于这种方法的博文:http://occamsmachete.com/ml/

    使用这种方法,您可以在 train.csv 上进行训练,并使用 test.csv 中的用户历史记录进行查询。使用 MAP 计算所有查询的精度。新方法使用搜索引擎进行查询,因此您还拥有可扩展的服务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-08
      • 1970-01-01
      • 2013-12-27
      • 2015-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多