我想尝试一个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 (潜在因素)的价值应该是什么?
发布于 2015-06-09 12:36:58
正如你所说的,等级是指假定的潜在因素或隐藏因素。例如,如果你测量不同的人有多喜欢电影,并试图交叉预测它们,那么你可能有三个领域:人物,电影,明星的数量。现在,假设你是无所不知的,你知道绝对的真相,你知道事实上所有的电影收视率都可以被三个隐藏的因素完美地预测,性别,年龄和收入。在这种情况下,你跑步的“等级”应该是3。
当然,你不知道有多少潜在的因素,如果有的话,驱动你的数据,所以你必须猜测。您使用的越多,结果就越好,但您需要更多的内存和计算时间。
一种方法是从5-10级开始,然后一次增加5级,直到你的结果停止改善为止。这样,您就可以通过实验确定数据集的最佳排名。
https://stackoverflow.com/questions/30729656
复制相似问题