我想使用网页访问数据在 spark 2.1.0 上使用 pyspark 运行 spark.ml.recommendation als 。我的维基百科数据包含用户ID,页面ID和计数。数据由100000行组成。以下是我的数据的规格:
+-------+------------------+
|summary| user-id|
+-------+------------------+
| count| 100000|
| mean| 24542.75736|
| stddev|21848.264794583836|
| min| 0|
| max| 68488|
+-------+------------------+
+-------+------------------+
|summary| page-id|
+-------+------------------+
| count| 100000|
| mean| 257.55426|
| stddev|265.56649346534084|
| min| 0|
| max| 1317|
+-------+------------------+
+-------+------------------+
|summary| cnt|
+-------+------------------+
| count| 100000|
| mean| 412.4471|
| stddev|4269.7557065972205|
| min| 11.0|
| max| 309268.0|
+-------+------------------+
我已将我的数据80/20分别用于培训和测试,并试图对我的数据运行als,但结果是 NaN 。然后我找到了一个解决方法并使其正常工作。在那之后,我尝试在我的数据上计算 rmse ,结果在 3000-4000 附近,并带有一些参数组合。
我已经阅读了一些书籍和文章,而且我已经看过一些关于此的视频教程,但很多内容都与电影版数据集相关,这是基于评级的,因为我看到并且不提供太多对于我的问题。我已经了解到我的案例被称为隐式反馈,并且只有我在书上遇到last.fm示例的示例。但是我无法得到很多帮助。
所以我的问题是:
1)如何处理数据集上的als建议,该数据集的评级栏的范围比影片范围更广,范围在1-5之间?
我的是11到309628之间。
2)在决定模型是否正常的隐式反馈中,rmse是一个重要指标吗?
3)在尝试运行spark-ml als时处理此类数据的任何其他建议?
答案 0 :(得分:0)
是关于决定模型是否正确的隐式反馈的一个重要指标?
不是。隐式模型得分有不同的规模。正如Danilo Ascione所解释的那样,推荐的方法是https://stackoverflow.com/a/41162688。
答案 1 :(得分:0)
关于你的NaN问题,您是否看过不久前添加到Spark的coldStartStrategy
? (cf https://github.com/apache/spark/pull/17102)
关于您的评估问题,当您发现使用带有隐式反馈的ALS时,RMSE不是一个好的指标。
在您的情况下,排名指标更合适。最常见的两个是:
不幸的是,这些不是Spark的一部分,因为它们并不适合Evaluator
API,因此您必须自己实施它们。