spark商品协同过滤

spark商品协同过滤,第1张

spark商品协同过滤 思路

首先,介绍一下传统的商品协同过滤思路:

  1. 获取一段周期内用户-商品交互历史数据记录;
  2. 根据交互历史记录,计算两两商品相似度,得到商品相似度矩阵;
  3. 根据用户的历史交互商品列表,从商品相似度矩阵中查询每一个商品的相似商品列表,按照相似度排序(出现多次的得分相加),得到最终推荐结果。

转换为spark的思想去考虑,则实现步骤应如下:

  1. 获取一段周期内用户-商品交互历史RDD,(wid, gid)
  2. 计算用户交互过的所有商品的两两相似度,得到 ((gid1, gid2), score)
  3. 根据用户最近交互的n个商品进行推荐,并对推荐结果进行过滤,过滤已交互的商品。
RDD的转换

首先是求解相似度矩阵,可以直接使用spark的笛卡尔积算子cartesian,但存在计算冗余,且时间较慢。在这里我们没有直接使用,而是用下图的方式一步步转换得到共现矩阵。

接下来,根据用户商品交互数据进行itemcf推荐,

 val resRdd = item_user.join(item_sim)
      .map(x => ((x._2._1, x._2._2._1), x._2._2._2))
      .reduceByKey(_+_)
      .map(x => (x._1._1, (x._1._2, x._2)))
      .groupByKey()

根据实际需求选择是否过滤用户交互过的商品,在这里我们对已购商品进行了过滤。

以上就是基于spark的商品协同过滤推荐的全部流程。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5688954.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存