美文网首页
spark实现user CF

spark实现user CF

作者: 风暴之芽 | 来源:发表于2019-02-25 21:56 被阅读0次

    user CF是基于相似用户的推荐方法,实现这种推荐的基本思路是:计算出相似用户得分,获取相似用户的物品集合的打分,最后两个得分相乘,得出相似用户推荐的物品集合topN。    

    实这种推荐可以使用公式余弦相似:cosine= a*b/(|a|*|b|)

    具体思路和步骤如下:

    一.从hive中获取数据:(hive建表,user_id、item_id、rating、timestamp)

                 启动spark  ./sbin/start-all 

                    启动spark-shell   ./bin/spark-shell

                             val df = spark.sql(select * from default.udata) 

    数据及label形式

    二.计算相似用户:

    1. 先计算分母:|a| = sqrt(a1^2+a2^2+a3^2+.....+an^2),

            把导入的表格变成RDD,取出user_id和rating,以用户为groupBy,把该用户的所有打分数据平方再相加再开根号,最后再转换为dataframe,使用RDD的目的是更加方便操作,最后转换为dataframe的目的是可视化更好,在后期的使用中也非常便利,在转换中要导入隐式转换(import spark.implicits._)

    2.第二步计算分子:a*b

          先需要一张新表,

    val df = udata.selectExpr("user_id as user_v","item_id as item_id","rating as rating_v")

    df新表join到udata表格,filter(user_id<user_v),形成相似矩阵,计算在同一个item下的评分乘积rating*rating_v,在相乘的时候要注意类型的转换,string->double,把乘积相加,计算出完整的分子部分

    3.最后把分子和分母代入,得到相似用户集合(user_id、user_v、sim_score)

    三、获取相似用户的物品集合

    相关文章

      网友评论

          本文标题:spark实现user CF

          本文链接:https://www.haomeiwen.com/subject/xewzeqtx.html