【问题标题】:Spark mllib: Difference between implicitTrain and explicitTrainSpark mllib:隐式训练和显式训练之间的区别
【发布时间】:2017-05-30 13:10:18
【问题描述】:

我尝试使用显式训练函数根据用户偏好(派生偏好)和 MSE 推荐产品,因为它对于训练和测试数据集都足够好。 (λ=0.01)

当我在 trainImplicit 中使用相同的数据时,测试和训练数据集的 MSE 增加到 20 倍。(lambda=0.01, alpha=1.0)

现在我知道这些是不同的算法,但是我如何判断隐式是否比显式更好?

【问题讨论】:

  • 您对显式的评分值是多少?我问是因为如果您不进行标准化,例如您的评分在 1-5 之间,那么给定评分的平方误差将在 0 到 16 之间。而隐式反馈将在 0 到 1 之间。
  • 另外,你如何从显式转到隐式?对我来说,明确地说,对于每个用户,您都有很多未知数(他们没有评分的产品),然后是某些产品的评分(即使评分是 0-1)。而隐含的,你有很多 0 和一对 1

标签: apache-spark machine-learning apache-spark-mllib recommendation-engine collaborative-filtering


【解决方案1】:

基本上,隐式和显式训练之间的区别在于,当您只有与该项目相关的隐式操作以进行推荐时,假设使用隐式,例如查看,点击,购买,喜欢,分享等。而当您对要推荐的项目有明确的价格时,假设使用显式。 现在谈到这个算法在该领域的应用,我在做电影推荐系统时也遇到了和你一样的情况,我无法解释为什么在显式数据集中训练时隐式比显式得到更好的结果。在我看来,MSE 是一种合适的性能衡量标准。您可以做的一件事是查看 spark mllib 的实现并尝试了解原因:)。 对不起,如果我根本没有回答你。

【讨论】:

  • "在显式数据集中训练时,隐式比显式获得更好的结果" 你是如何衡量这个的?对于隐式算法,您还需要评级/偏好介于 0-1 之间吗?
  • 很抱歉再次ping你,但你能回复那个吗^
猜你喜欢
  • 2015-11-28
  • 2017-05-17
  • 2020-09-14
  • 2017-02-06
  • 2017-12-12
  • 2016-05-29
  • 2017-08-18
  • 2021-02-19
  • 1970-01-01
相关资源
最近更新 更多