MLlib协同过滤以生成前N个推荐

时间:2015-01-19 05:07:50

标签: apache-spark recommendation-engine apache-spark-mllib collaborative-filtering matrix-factorization

我正在寻找一种方法,使用MLlib的ALS矩阵分解为所有用户生成前n个推荐,但仍未成功。任何人都可以告诉我这种方法是否存在?

2 个答案:

答案 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的正确结构。但是你要求所有用户推荐很多集群 - 如果你有一个小的集群可以使用它。

您应首先确定:一位用户需要多长时间?然后乘以#用户 - 你可能会发现你的要求太多了。

可能存在群集问题/次优配置设置和/或通常只是一个功率不足的群集与您的要求。