Spark ALS推荐系统预测值大于1

Pho*_*yen 2 recommendation-engine apache-spark pyspark

我在 Spark(推荐系统算法)中使用 ALS 算法(implicitPrefs = True)。通常,运行此算法后,预测值必须从 0 到 1。但我收到的值大于 1

    "usn" : 72164,
    "recommendations" : [ 
        {
            "item_code" : "C1346",
            "rating" : 0.756096363067627
        }, 
        {
            "item_code" : "C0117",
            "rating" : 0.966064214706421
        }, 
        {
            "item_code" : "I0009",
            "rating" : 1.00000607967377
        }, 
        {
            "item_code" : "C0102",
            "rating" : 0.974934458732605
        }, 
        {
            "item_code" : "I0853",
            "rating" : 1.03272235393524
        }, 
        {
            "item_code" : "C0103",
            "rating" : 0.928574025630951
        }
    ]
Run Code Online (Sandbox Code Playgroud)

我不明白为什么或它的评级值大于 1(“评级”:1.00000607967377“评级”:1.03272235393524

一些类似但我仍然不明白的问题:MLLib spark -ALStrainImplicit value more than 1

谁能帮我解释一下异常值

eli*_*sah 5

别担心!没有任何问题ALS

然而,正如您所见,ALS 返回的带有 Apache Spark 隐式反馈的预测分数并未标准化以适合在 [0,1] 之间。有时您甚至可能会得到负值。(更多关于 这里的内容。)

ALS 使用随机梯度下降和近似来计算(并重新计算)每一步的用户和项目因素,以最小化成本函数,从而使其可扩展。

事实上,标准化这些分数并不相关。这样做的原因实际上是这些分数本身并没有多大意义。

您不能RMSE在这些分数上使用每个示例来评估您的建议的效果。如果您对评估此类推荐器感兴趣,我建议您阅读我关于如何评估 Apache Spark 中推荐的隐式反馈 ALS 算法的答案

研究或/和行业中使用了许多技术来处理此类结果。例如,你可以二值化利用每说的预言threshold