【问题标题】:How do I add items with a score above x to goodItems for precision metric in Lenskit 3.0?如何在 Lenskit 3.0 中将得分高于 x 的项目添加到 goodItems 以获得精度指标?
【发布时间】:2017-07-20 23:52:24
【问题描述】:

我想添加精度指标并仅使用项目 评分高于 4.0 为“好项目”

在 Lenskit 2 中,这可以通过以下方式完成:

   metric precision {
    listSize 10
    candidates ItemSelectors.addNRandom(ItemSelectors.testItems(), 100)
    exclude ItemSelectors.trainingItems()
    goodItems ItemSelectors.testRatingMatches(Matchers.greaterThanOrEqualTo(4.0d))
}

现在我正在尝试在 Lenskit 3 中使用 graddle 做同样的事情,但显然

    metric('pr') {
        goodItems 'ItemSelectors.testRatingMatches(Matchers.greaterThanOrEqualTo(4.0d))'
    }

不起作用,因为 Lenskit 3.0 中没有 ItemSelectors 类。 如何将 goodItems 与适当的项目联系起来并丢弃低评分的项目以达到正确的精度值?

【问题讨论】:

    标签: lenskit


    【解决方案1】:

    正如 Ekstrand 先生所说,您可以通过在 gradle 构建文件中添加以下行来选择好的项目。

    goodItems 'user.testHistory.findAll({ it instanceof org.lenskit.data.ratings.Rating && it.value >= 4 })*.itemId'
    

    但是,这会返回一个对象,在 Itemselector.class 中,有一个解析发生在 Set 上,但这不起作用,因为返回的对象是 ArrayList 类型。如果我是正确的,这意味着 Object 在被转换为集合之前需要转换为 ArrayList,我通过复制 Itemselector 类并替换来做到这一点:

    Set<Long> set = (Set<Long>) script.run();
    

    作者:

    Set<Long> set = new HashSet<Long>((ArrayList<Long>)script.run());
    

    这会从我的测试集中返回正确的项目,评分高于 4.0

    【讨论】:

    • 谢谢!您还可以在表达式末尾添加.toSet(),将其转换为集合。
    【解决方案2】:

    这个goodItems 应该可以工作:

    user.testHistory.findAll({ it instanceof org.lenskit.data.ratings.Rating && it.value >= 4 })*.itemId.toSet()

    【讨论】:

    • 我无法让它运行并得到这个错误:error running command: java.lang.IllegalArgumentException: Instantiation of [simple type, class org.lenskit.eval.traintest.recommend.TopNPrecisionRecallMetric] value failed (org.codehaus.groovy.control.MultipleCompilationErrorsException): startup failed: Script1.groovy: 1: unable to resolve class Rating @ line 1, column 42. story.findAll({ it instanceof Rating &amp;&amp;
    猜你喜欢
    • 2017-07-08
    • 1970-01-01
    • 2017-07-09
    • 2016-03-05
    • 2019-09-04
    • 1970-01-01
    • 2021-02-19
    • 2020-08-14
    • 1970-01-01
    相关资源
    最近更新 更多