Я использовал явный набор данных оценок, который имеет около 389K оценок для пользователей 52K и 100k элементов.
Базовая статистика: Среднее количество оценок на элемент: 3,89 Среднее количество оценок на пользователя: 7,45 Пользователи с наименьшимрейтинг: 1 Элемент с наименьшим рейтингом: 2
Используемая модель ALS со следующими настройками:
als = ALS(userCol="userId", itemCol="vidId", ratingCol="rate", rank=10, maxIter=15,
regParam=0.15, coldStartStrategy="drop", nonnegative=True, implicitPrefs=False)
При проверке я использовал 80% для обучения и 20% для тестирования.Среднеквадратическое отклонение в наборе проверки: 0,32 (очень низкое)
В производстве я использовал весь набор данных при обучении модели ALS (сохраняя тот же конфиг, что и при проверке)
Чтобы получить100 рекомендаций для каждого пользователя для каждого пользователя. Я использовал следующую инструкцию:
users_recommendation = model.recommendForAllUsers(100)
Однако, в большинстве случаев, лучшие рекомендуемые элементы не были получены ни от одного элемента, оцененного совместными пользователями.
Насколько мне известно, рекомендованные предметы высшего уровня должны быть получены от любых предметов, оцененных совместными пользователями.
Рекомендовать предметы без сотрудничества бессмысленно.