首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache Spark ALS推荐方法

Apache Spark ALS推荐方法
EN

Stack Overflow用户
提问于 2015-03-18 18:42:09
回答 1查看 1.1K关注 0票数 7

尝试使用Spark MLLib的ALS构建推荐系统。

目前,我们正在尝试每天为所有用户预先构建推荐。我们使用简单的隐式反馈和ALS。

问题是,我们有2000万用户和3000万产品,要调用main predict()方法,我们需要有针对用户和产品的笛卡尔连接,这太大了,而且可能需要几天时间才能生成连接。有没有一种方法可以避免笛卡尔连接,让这个过程更快?

目前我们有8个节点和64 be的RAM,我想这应该足够存储数据了。

代码语言:javascript
复制
val users: RDD[Int] = ???           // RDD with 20M userIds
val products: RDD[Int] = ???        // RDD with 30M productIds
val ratings : RDD[Rating] = ???     // RDD with all user->product feedbacks

val model = new ALS().setRank(10).setIterations(10)
  .setLambda(0.0001).setImplicitPrefs(true)
  .setAlpha(40).run(ratings)

val usersProducts = users.cartesian(products)
val recommendations = model.predict(usersProducts)
EN

回答 1

Stack Overflow用户

发布于 2015-04-11 23:54:32

不确定您是否真的需要整个20M x 30M矩阵。如果您只想为每个用户预先构建产品推荐,那么可以尝试针对所有用户的recommendProducts(user: Int, num: Int),将自己限制在num最强的推荐范围内。还有recommendUsers()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29119858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档