Что такое ранг в алгоритме машинного обучения ALS в 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 ответов


Как вы сказали, ранг относится к предполагаемым скрытым или скрытым факторам. Например, если вы измеряете, насколько разные люди любят фильмы, и пытаетесь их предсказать, у вас может быть три поля: человек, фильм, количество звезд. Теперь предположим, что вы были всеведущи и знали абсолютную истину, и вы знали, что на самом деле все рейтинги фильмов могут быть прекрасно предсказаны только 3 скрытыми факторами, полом, возрастом и доходом. В этом случае "ранг" вашего прогона должен быть 3.

конечно, вы не знаете, сколько основных факторов, если таковые имеются, управляют вашими данными, поэтому вам нужно угадать. Чем больше вы используете, тем лучше результаты до определенного момента, но больше памяти и времени вычислений вам понадобится.

один из способов работы-начать с ранга 5-10, затем увеличить его, скажем, 5 за раз, пока ваши результаты не перестанут улучшаться. Таким образом, вы определяете лучший ранг для своего набора данных путем экспериментов.