【问题标题】:Spark ML collaborative filtering implicit feedback with count-like dataSpark ML 协同过滤隐式反馈与类计数数据
【发布时间】:2017-03-23 13:58:50
【问题描述】:

我想通过 pyspark 使用网页访问数据在 spark 2.1.0 上运行 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 左右,并带有一些参数组合。

我已经阅读了一些书籍、文章并观看了一些视频教程,但其中许多内容与我所看到的基于评级的 movielens 数据集有关,并且对我的问题没有多大帮助。我了解到我的案例被称为 implicit-feedback 并且是我在书中遇到的唯一示例 last.fm 示例。但是我无法得到太多帮助。

所以我的问题是:

1) 如何在一个数据集上处理 als 推荐,该数据集的评级列的范围比 movielens 中范围在 1-5 之间的范围大得多?

我的在 11 到 309628 之间。

2) rmse 是隐式反馈中决定模型好坏的重要指标吗?

3) 在尝试在其上运行 spark-ml als 时处理此类数据的任何其他建议?

【问题讨论】:

    标签: apache-spark pyspark recommendation-engine apache-spark-ml collaborative-filtering


    【解决方案1】:

    rmse 是隐式反馈中决定模型是否正常的重要指标吗?

    事实并非如此。隐式模型分数在不同的范围内。正如Danilo Ascione 所解释的,推荐的方法是https://stackoverflow.com/a/41162688

    【讨论】:

    • 感谢您的帮助!
    【解决方案2】:

    关于您的 NaN 问题,您是否看过不久前添加到 Spark 的 coldStartStrategy? (参见https://github.com/apache/spark/pull/17102

    关于您的评估问题,当您发现使用带有隐式反馈的 ALS 时,RMSE 不是一个好的指标。

    在您的情况下,排名指标更合适。最常见的两种是:

    不幸的是,这些不是 Spark 的一部分,因为它们并不真正适合 Evaluator API,因此您必须自己实现它们。

    【讨论】:

    • 感谢您的帮助。是的,我听说过coldStartStrategy,但我无法在spark 2.1.0 中成功使用它。对于评估问题,我会考虑实施排名指标。
    猜你喜欢
    • 2017-11-09
    • 2015-02-08
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多