我想试试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行的数据集(用户、产品、评级)。什么值应该是rank(潜在因素)。

最佳答案

正如你所说,等级是指假定的潜在或隐藏因素。例如,如果你测量不同的人喜欢电影的程度,并试图交叉预测他们,那么你可能有三个领域:人,电影,明星数量。现在,让我们说你无所不知,你知道绝对的事实,你知道事实上所有的电影收视率可以完美地预测只有3个隐藏的因素,性别,年龄和收入。在这种情况下,你的“排名”应该是3。
当然,你不知道有多少潜在的因素,如果有的话,驱动你的数据,所以你必须猜测。你用得越多,结果就越好,但你需要的内存和计算时间就越多。
一种方法是从5-10的等级开始,然后增加,一次说5,直到你的成绩停止提高。这样,您就可以通过实验确定数据集的最佳排名。

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

10-12 19:55