1

我一直在寻找一种方法来使用 MLlib 的 ALS 矩阵分解为所有用户生成前 n 条建议,但仍然没有成功。谁能告诉我这种方法存在吗?

4

3 回答 3

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);
            }
        }

任何有效的方法将不胜感激。

于 2015-01-20T03:38:55.590 回答
0

您上面的结构是使用 Spark ALS 的正确结构。但是您要求为所有用户推荐很多集群 - 如果您有一个较小的集群要处理。

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

可能存在集群问题/次优配置设置和/或一般来说集群动力不足而不符合您的要求。

于 2015-02-26T21:33:47.707 回答
0

您可以使用:

model.recommendProductsForUsers(int num)

这可从 spark 1.4 https://spark.apache.org/docs/latest/api/java/org/apache/spark/mllib/recommendation/MatrixFactorizationModel.html#recommendProductsForUsers(int)获得

于 2015-09-09T21:52:04.010 回答