繁体   English   中英

Spark MLlib - 如何验证隐式反馈协同过滤器

[英]Spark MLlib - How to validate implicit feedback collaborative filter

我用Scala编程,但这里的语言并不重要。

在这种情况下,隐式反馈协同过滤器(ALS.trainImplicit)的输入是产品的视图:

  • 评级(“user1”,“product1”,21.0)//表示user1已查看product1的详细信息21次
  • 评级(“user2”,“product1”,4.0)
  • 评级(“user3”,“product2”,7.0)

但输出(MatrixFactorizationModel.recommendProductsForUsers)如下:

  • 评级(“user1”,“product1”,0.78)
  • 评级(“user2”,“product1”,0.63)

输出中的值0.78和0.64看起来像是在0和1之间标准化的值,但输入中的值是21,4,7等。

我不认为在这种情况下计算输入和输出之间的MSE(均方误差)是有意义的,因为我们在使用具有显式反馈的协同过滤器时可以这样做。

那么,问题是,如何在使用隐式反馈时验证协同过滤器?

隐式反馈验证的重要KPI是例如准确性,覆盖率和许多其他。 这取决于用例(您想展示多少产品?您提供多少产品?)以及您想要实现的目标。

当我构建隐式反馈ALS模型时,我总是计算这个2 KPI。 具有非常好的准确性的模型倾向于覆盖少量可用的产品。 Alsways计算覆盖范围并从那里决定。

仔细看看这篇文章: https//stats.stackexchange.com/questions/226825/what-metric-should-i-use-for-assessing-implicit-matrix-factorization-recommender

这个Spark库: https//github.com/jongwook/spark-ranking-metrics

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM