如何评估隐式反馈ALS算法以获取Apache Spark中的建议?

时间:2017-09-28 06:36:24

标签: apache-spark apache-spark-mllib

如果隐式“评级”可以从零到任何变化,你如何评估Apache Spark的隐式反馈协同过滤算法,所以简单的MSE或RMSE没有多大意义?

2 个答案:

答案 0 :(得分:10)

要回答这个问题,你需要回到 Yifan Hu,Yehuda Koren和Chris Volinsky 的定义隐式反馈和ALS算法Collaborative Filtering for Implicit Feedback Datasets 的原始论文。

什么是隐式反馈?

在没有明确评级的情况下,推荐系统可以从更丰富的隐式反馈推断用户偏好,通过观察用户行为间接反映意见。

隐式反馈可以包括购买历史记录,浏览历史记录,搜索模式甚至鼠标移动。

这里适用相同的评估技巧吗?例如RMSE,MSE。

重要的是要意识到我们没有关于哪些项目不受欢迎的可靠反馈。没有点击或购买可能与多种原因有关。我们也无法跟踪用户对我们建议的反应。

因此, 基于精确度的指标(例如RMSE和MSE)不太合适 ,因为它们需要知道用户不喜欢哪些项目才有意义。

然而,购买或点击某个项目表示对此感兴趣。我不愿意这样说,因为点击或购买可能会有不同的含义,具体取决于推荐人的背景。

所以 在这种情况下采用适用于召回的措施 。因此,在这种情况下,引入了几个指标,最重要的是平均百分比排名(MPR),也称为百分位排名。

更期望较低的MPR值。随机预测的MPR的期望值是50%,因此MPR> 50。 50%表示算法不比随机算法好。

当然,这不是评估具有隐式评级的推荐系统的唯一方法,但它是实践中最常用的方法。

有关此指标的详细信息,建议您阅读上述文件。

好的,现在我们知道我们将要使用什么,但Apache Spark呢?

Apache Spark仍然没有为此指标提供开箱即用的实现,但希望不会持续很长时间。有一个PR等待验证https://github.com/apache/spark/pull/16618有关为RankingEvaluator添加spark-ml的问题。

然而,实施并不复杂。如果您有兴趣尽快获得代码,可以参考代码here

我希望这能回答你的问题。

答案 1 :(得分:0)

评估它的一种方法是将数据拆分为训练集和带有时间切割的测试集。这样,您可以使用训练集训练模型,然后运行预测并根据测试集检查预测。

现在进行评估,您可以使用Precision,Recall,F1 ...指标。