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

时间:2017-10-24 06:59:12

标签: apache-spark pyspark recommendation-engine

我在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
        }
    ]

我不明白为何或什么评级值大于1("评级":1.00000607967377 "评级&#34 ;:1.03272235393524

有些问题类似,但我仍然不理解:MLLib spark -ALStrainImplicit value more than 1

有人帮我解释异常值

1 个答案:

答案 0 :(得分:3)

不要担心! ALS没有错。

尽管如此,ALS返回的预测分数与Apache Spark的隐式反馈并没有被标准化,以适应[0,1]之间,就像你看到的那样。有时甚至可能会得到负值。 (更多关于here。)

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

事实上,将这些分数标准化并不相关。其原因实际上是这些分数本身并不重要。

您无法在每个示例中使用RMSE来评估推荐的效果。如果您有兴趣评估此类推荐人,我建议您阅读How can I evaluate the implicit feedback ALS algorithm for recommendations in Apache Spark?上的答案

研究或/和行业中使用了许多技术来处理这类结果。例如,您可以使用threshold 二进制化预测。