我在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
有人帮我解释异常值
答案 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
二进制化预测。