Как сделать пользовательские рекомендации в Spark MLlib?
Я пытаюсь создать основанную на пользователя совместную фильтрацию в MLlib, чтобы найти похожих пользователей из набора данных last-fm (на основе артистов, которых вы слушаете).
Apache Mahout может делать то, что я хочу достичь с помощью GenericBooleanPrefUserBasedRecommender, но не достаточно быстро, поэтому я хотел попробовать Spark & MLlib, но не могу найти какую-либо реализацию этого. У кого-нибудь есть рабочая реализация java/scala/python этого или идея, как это реализовать? Я знаю, что MLlib имеет основанные на пунктах рекомендации через ALS, но это не так.
1 ответ
Apache Mahout имеет версию Spark "подобие предметов", которая была интегрирована в универсальный рекомендатель ActionML. Mahout был расширен, чтобы основываться на новом алгоритме кросс-корреляции, который позволяет использовать практически любое действие пользователя при поиске похожих пользователей или рекомендациях.
Spark версия искробезопасности Mahout здесь. Во входных данных рекомендателя (идентификатор пользователя, "имя действия", идентификатор элемента). Накопление всех входных данных дает таблицу, в которой строки = пользователи и столбцы = элементы. Таким образом, сходство строк создаст вывод, в котором в качестве значений будет указан пользователь, а в качестве значений - наиболее похожие пользователи. Это не идеально, так как он использует только одно "действие", чтобы увидеть сходство. Для полной мощности Correlated Cross-Occurrence, которая является полной версией алгоритма Mahout, вы можете заглянуть в Универсальный Рекомендатор.