什么是Apache Spark Mllib中ALS机器学习算法的排名

时间:2015-06-09 10:37:55

标签: 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行的(用户,产品,评级)数据集。应该是rank(潜在因素)的值。

1 个答案:

答案 0 :(得分:22)

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

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

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