algorithm - Apache Spark Mllib 中 ALS 机器学习算法的排名是多少

标签 algorithm apache-spark machine-learning apache-spark-mllib

我想尝试一个 ALS 机器学习算法的例子。我的代码工作正常,但是我不明白算法中使用的参数 rank

我在 java 中有以下代码

    // Build the recommendation model using ALS
    int rank = 10;
    int numIterations = 10;
    MatrixFactorizationModel model = ALS.train(JavaRDD.toRDD(ratings),
            rank, numIterations, 0.01);

我读过一些内容,它是模型中潜在因子的数量。

假设我有一个包含 100 行的 (user,product,rating) 数据集。 rank(潜在因素)的值应该是多少。

最佳答案

正如您所说,排名是指假定的潜在或隐藏因素。例如,如果您测量不同的人喜欢电影的程度并尝试交叉预测它们,那么您可能有三个字段:人物、电影、明星数量。现在,假设你无所不知,你知道绝对真理,你知道事实上所有的电影评级都可以通过 3 个隐藏因素(性别、年龄和收入)完美预测。在那种情况下,你的运行的“等级”应该是 3。

当然,您不知道有多少潜在因素(如果有的话)驱动您的数据,所以您必须猜测。您使用的越多,在某种程度上结果越好,但您需要的内存和计算时间也就越多。

一种工作方式是从 5-10 的排名开始,然后增加它,比如一次 5,直到您的结果停止改善。这样您就可以通过实验确定数据集的最佳排名。

关于algorithm - Apache Spark Mllib 中 ALS 机器学习算法的排名是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30729656/

相关文章:

python - 给定两个整数列表,在彼此距离 < O(N^2) 的范围内找到每一对

scala - 如何编写 scala 单元测试来比较 spark 数据帧?

scala - 编写 spark UDF(而不是将 UDF 作为一个)时是否会降低性能?

algorithm - 编写一个程序,打印 s 中字母按字母顺序出现的最长子串

arrays - 如果组的总和至少为 K,则从数组中选择元素的方法数

algorithm - 使用哈希在数据库中存储密码的替代方法

apache-spark - 如何控制Spark作业提交的Hadoop IPC重试次数?

machine-learning - 使用交叉验证来计算特异性

python - 使用随机游戏数据进行监督学习

machine-learning - 增加 J48 树尺寸 weka