【问题标题】:Apache Spark ALS Recommendation Rating values higher than rangeApache Spark ALS 建议评级值高于范围
【发布时间】:2015-05-17 01:46:00
【问题描述】:

我已经运行了一个小的 ALS 推荐系统程序,发现 在使用 MLlib 的 Apache Spark website 上。当使用评分为 1-5 的数据集(我使用过 MovieLens 数据集)时,它会给出预测评分超过 5 的推荐!

我在小型测试中发现的最高值是 7.4。显然,我要么误解了代码的用途,要么出现了问题。我研究了潜在因素推荐系统,并认为 Spark Mlib ALS 实现是基于 this one

为什么它会返回比可能更高的评分?没有意义。

是我误解了算法还是程序有缺陷?

【问题讨论】:

    标签: apache-spark machine-learning apache-spark-mllib collaborative-filtering


    【解决方案1】:

    您正在查看正确的论文,但是,我认为您期望算法执行它不打算执行的操作。它会为您的输入生成一个低秩近似值,作为两个矩阵的乘积,但矩阵相乘并没有限制输出值。

    您可以钳制或舍入这些值。您可能不希望这样做,因为您会获得有关预测评级比 5 强多少的额外信息。我想算法在技术上也不可能假设最大可能值是输入中的最大观察值。

    【讨论】:

    • 感谢肖恩的精彩回复。然而,它提出了另一个问题。这种算法的均方根误差 (RMSE) 是如何计算的?据我了解,该算法的目的是最小化已知数据上的 RMSE,如果该算法没有返回“对等”结果(例如评级值),那么会发生什么?抱歉,如果这是一个愚蠢的问题,我以前没有做过这样的数学。
    • 不确定你的意思;输出是估计的评级,因此可以直接与 RMSE 进行比较。在实践中,我想您会将结果限制在 [1,5] 中。没关系,您应该在计算 RMSE 之前这样做。
    • 抱歉,我不太清楚,但是您的回答回答了我想问的问题 - 预测评分 7 的 RMSE,而实际评分实际上是 5,与预测该评分为 3(如果我们使用 RMSE 作为算法好坏的指标)。但是,出于预测目的,我理解这个 7 的意思是“你会真的很喜欢这个”。看看你的个人资料,你是我最近用来帮助我学习的一本书的作者,赞,太棒了!我要问另一个关于ALS的Q,如果你能看看就好了。
    猜你喜欢
    • 2017-11-03
    • 2018-07-19
    • 2019-12-24
    • 2015-04-12
    • 2015-05-21
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    相关资源
    最近更新 更多