加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – Spark 2.0 ALS建议如何向用户推荐

发布时间:2020-12-16 09:51:42 所属栏目:安全 来源:网络整理
导读:我已按照链接中的指南进行操作 http://ampcamp.berkeley.edu/big-data-mini-course/movie-recommendation-with-mllib.html 但这已经过时,因为它使用了spark Mlib RDD方法. New Spark 2.0具有DataFrame方法. 现在我的问题是我有更新的代码 val ratings = spar
我已按照链接中的指南进行操作
http://ampcamp.berkeley.edu/big-data-mini-course/movie-recommendation-with-mllib.html

但这已经过时,因为它使用了spark Mlib RDD方法. New Spark 2.0具有DataFrame方法.
现在我的问题是我有更新的代码

val ratings = spark.read.textFile("data/mllib/als/sample_movielens_ratings.txt")
  .map(parseRating)
  .toDF()
val Array(training,test) = ratings.randomSplit(Array(0.8,0.2))

// Build the recommendation model using ALS on the training data
val als = new ALS()
  .setMaxIter(5)
  .setRegParam(0.01)
  .setUserCol("userId")
  .setItemCol("movieId")
  .setRatingCol("rating")
val model = als.fit(training)
// Evaluate the model by computing the RMSE on the test data
val predictions = model.transform(test)

现在问题是,在旧代码中,获得的模型是MatrixFactorizationModel,现在它有自己的模型(ALSModel)

在MatrixFactorizationModel中你可以直接做

val recommendations = bestModel.get
  .predict(userID)

这将给出用户喜欢它们的概率最高的产品列表.

但现在没有.predict方法.任何想法如何推荐给定用户ID的产品列表

解决方法

在模型上使用transform方法:

import spark.implicits._
val dataFrameToPredict = sparkContext.parallelize(Seq((111,222)))
    .toDF("userId","productId")
val predictionsOfProducts = model.transform (dataFrameToPredict)

有一个jira票证来实现推荐(用户|产品)方法,但它还没有在默认分支上

现在你有了DataFrame和用户分数

您只需使用orderBy和limit来显示N个推荐产品:

// where is for case when we have big DataFrame with many users
model.transform (dataFrameToPredict.where('userId === givenUserId))
    .select ('productId,'prediction)
    .orderBy('prediction.desc)
    .limit(N)
    .map { case Row (productId: Int,prediction: Double) => (productId,prediction) }
    .collect()

DataFrame dataFrameToPredict可以是一些大??型用户产品DataFrame,例如所有用户x所有产品

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读