我正在寻找一种方法,使用MLlib的ALS矩阵分解为所有用户生成前n个推荐,但仍未成功。任何人都可以告诉我这种方法是否存在?
答案 0 :(得分:0)
这是我目前的做法,似乎非常缓慢:
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);
}
}
任何有效的方法都将受到高度赞赏。
答案 1 :(得分:0)
上面的结构是使用Spark ALS的正确结构。但是你要求所有用户推荐很多集群 - 如果你有一个小的集群可以使用它。
您应首先确定:一位用户需要多长时间?然后乘以#用户 - 你可能会发现你的要求太多了。
可能存在群集问题/次优配置设置和/或通常只是一个功率不足的群集与您的要求。