我希望找到一种方法,使用MLlib的ALS矩阵分解为所有用户生成顶级的n个推荐,但仍然没有成功。有人能告诉我有这样的方法存在吗?
发布于 2015-01-20 03:38:55
以下是我目前的做法,似乎非常缓慢:
Iterator<Rating> it = ratings.toLocalIterator();
while (it.hasNext()) {
int user = it.next().user();
if (!userList.contains(user)) {
Rating[] rat = model.recommendProducts(user, 10);
for (Rating r : rat) {
list.add(user + "," + r.product() + "," + r.rating());
}
userList.add(user);
}
}任何有效的方法都将不胜感激。
发布于 2015-02-26 21:33:47
您的上述结构是正确的使用火花ALS。但是,如果您有一个小型集群可供使用,则需要向所有用户推荐大量的集群。
您应该首先确定:一个用户需要多长时间?然后乘以#用户-你可能会看到你要求太多了。
可能会出现群集问题/不太理想的配置设置和/或一般情况下,相对于您的需求而言,一个动力不足的集群。
发布于 2015-09-09 21:52:04
您可以使用:
model.recommendProductsForUsers(int num)这可以从spark 1.4 https://spark.apache.org/docs/latest/api/java/org/apache/spark/mllib/recommendation/MatrixFactorizationModel.html#recommendProductsForUsers(int)获得。
https://stackoverflow.com/questions/28018259
复制相似问题