【发布时间】:2018-03-09 19:16:45
【问题描述】:
您如何评估 Apache Spark 的隐式反馈协同过滤算法,因为 隐式“评级” 可以从零变化到任何值,因此简单的 MSE 或RMSE没有多大意义?
【问题讨论】:
标签: apache-spark apache-spark-mllib
您如何评估 Apache Spark 的隐式反馈协同过滤算法,因为 隐式“评级” 可以从零变化到任何值,因此简单的 MSE 或RMSE没有多大意义?
【问题讨论】:
标签: apache-spark apache-spark-mllib
要回答这个问题,您需要回到 Yifan Hu、Yehuda Koren 和 Chris Volinsky 定义什么是隐式反馈和 ALS 算法 Collaborative Filtering for Implicit Feedback Datasets 的原始论文。
什么是隐式反馈?
在没有明确评分的情况下,推荐系统可以从更丰富的隐式反馈中推断出用户偏好,通过观察用户行为间接反映意见。
隐式反馈可以包括购买历史、浏览历史、搜索模式,甚至鼠标移动。
此处是否适用相同的评估技术?如RMSE、MSE。
重要的是要意识到我们没有关于哪些项目不喜欢的可靠反馈。没有点击或购买可能与多种原因有关。我们也无法跟踪用户对我们的建议的反应。
因此,基于精度的指标(例如 RMSE 和 MSE)不是很合适,因为它们需要知道用户不喜欢哪些项目才有意义。 p>
但是,购买或点击某件商品表明对它感兴趣。我不会说喜欢,因为点击或购买可能具有不同的含义,具体取决于推荐者的上下文。
所以在这种情况下制定适用于召回的措施。所以在这种情况下,引入了几个指标,最重要的是平均百分比排名(MPR),也称为百分比排名。
MPR 值越低越好。随机预测的 MPR 的期望值为 50%,因此 MPR > 50% 表示算法并不比随机更好。
当然,这不是评估具有隐式评分的推荐系统的唯一方法,但它是实践中最常用的方法。
有关此指标的更多信息,我建议您阅读上述论文。
好的,现在我们知道要使用什么了,但是 Apache Spark 呢?
Apache Spark 仍然没有为此指标提供开箱即用的实现,但希望不会持续太久。有一个 PR 等待验证 https://github.com/apache/spark/pull/16618 涉及为 spark-ml 添加 RankingEvaluator。
不过,实现并不复杂。有兴趣早点获取的可以参考代码here。
我希望这能回答你的问题。
【讨论】:
mllib 据我所知已经有一些排名指标,对吧?您链接的 PR 已过时关闭。
评估它的一种方法是将数据拆分为训练集和测试集,并有时间限制。这样,您可以使用训练集训练模型,然后运行预测并对照测试集检查预测。
现在,您可以使用 Precision、Recall、F1... 指标进行评估。
【讨论】: