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

Dim*_*los 4 apache-spark apache-spark-mllib

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

eli*_*sah 11

要回答这个问题,你需要回到那个定义了什么是隐含的反馈和ALS算法原纸协同过滤的隐式反馈数据集 胡一帆,耶胡达·科伦和克里斯Volinsky.

什么是隐式反馈?

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

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

这里适用相同的评估技术吗?如RMSE,MSE.

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

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

但是,购买或点击某个项目表示对其感兴趣.我不愿意这样说,因为点击或购买可能具有不同的含义,具体取决于推荐者的上下文.

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

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

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

有关此指标的更多信息,建议您阅读上述文章.

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

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

然而,实施并不复杂.如果您有兴趣尽快获得它,可以参考此处的代码.

我希望这回答了你的问题.