Spark MLLib 与新用户的协同过滤

Spark MLLib Collaborative Filtering with new user

我正在尝试在 Spark 中实现的协同过滤算法,运行 遇到了以下问题:

假设我使用以下数据训练模型:

u1|p1|3
u1|p2|3
u2|p1|2
u2|p2|3

现在,如果我使用以下数据对其进行测试:

u1|p1|1
u3|p1|2
u3|p2|3

我从未看到用户 'u3' 的任何评分,大概是因为该用户未出现在训练数据中。这是因为冷启动问题吗?我的印象是这个问题只适用于新产品。在这种情况下,我会期望 'u3' 的预测,因为训练数据中的 'u1' 和 'u2' 具有与 'u3' 相似的评分信息。这就是基于模型和基于记忆的协同过滤的区别吗?

我假设你在谈论 ALS 算法?

'u3' 不是您的训练集对,因此您的模型对该用户一无所知。可能 return 所有用户的平均评分。

查看 Spark 1.3.0 Scala 代码:MatrixFactorizationModel returned 由 ALS.train() 尝试在您调用 predict().当我尝试预测未知用户的评级时,我得到 NoSuchElementException。它就是这样实现的。