【问题标题】:No rating field for ALS Spark MLlibALS Spark MLlib 没有评级字段
【发布时间】:2018-07-19 21:31:17
【问题描述】:

我正在尝试使用 Spark MLib ALS 进行音乐推荐的协同过滤。输入数据有几个字段,包括 userId、songId、artist 等。我的数据中没有评级字段。 ALS 需要评级作为其参数之一。我环顾四周,但无法获得任何帮助。我该怎么做?可以用listen_count(用户听一首特定歌曲的次数)

我的数据集:

user_id song_id songtitle   artist  language    music_director
123        1     abc            artist1  English    NULL
345        2     xyz            artist2  English    NULL
456        3     abc            artist3  English    NULL
567        4     xyz            artist4  English    NULL
678        5     xyz            artist5  English    NULL
789        6     abc            artist6  English    NULL

【问题讨论】:

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


【解决方案1】:

协同过滤算法将评分作为输入运行。因为听一首歌并不一定意味着用户喜欢这首歌,而且喜欢程度可能因用户而异。

因此,在这种情况下,评分字段有助于区分用户对不同歌曲的不同反应,然后预测用户对他们没有听过的歌曲的评分。

我认为您有一个固有的假设,即如果歌曲在用户列表中,则用户喜欢它。对于这种情况,您可以添加一个固定填充值为 1 的评级列并运行代码。

【讨论】:

  • ALS 算法是否也需要用户不喜欢?假设我有用户的数据,他们“喜欢”哪些主题,但与评级不同的是,数据集没有提供关于用户是否对其他主题不感兴趣或者只是他们还没有发现这些主题的信息。在那种情况下,将评分设为 1 有效吗?
猜你喜欢
  • 2017-11-03
  • 2015-07-20
  • 2016-11-08
  • 1970-01-01
  • 2015-05-17
  • 1970-01-01
  • 2015-09-05
  • 1970-01-01
相关资源
最近更新 更多