Apache Mahout — следует ли использовать его для создания собственного рекомендателя?

Я итеративно создаю пользовательскую рекомендательную систему на основе часто меняющейся вероятностной модели скрытых факторов. Я уже написал некоторый код Java, который реализует модель. Он разлагает матрицу оценок пользовательских элементов на две матрицы UxK (векторы пользовательских характеристик) и IxK (векторы характеристик элементов) для оценки отсутствующих оценок.

Я ищу самый простой способ подключить (возможно, переписав) мой код к фреймворку, чтобы построить рекомендательную систему, базовый уровень и иметь возможность сравнивать их друг с другом стандартным способом - например. перекрестная проверка для расчета точности, отзыва, среднеквадратичной ошибки... Поскольку в моей системе этого все еще нет, инфраструктура должна предоставлять методы для расчета и выдачи рекомендаций на основе расчетной матрицы оценки пользовательского элемента.

Похоже, Mahout должен сделать эту работу. Однако в его документации говорится: «В настоящее время он не поддерживает рекомендации на основе моделей». Может ли кто-нибудь сказать мне, возможно ли то, чего я пытаюсь достичь с помощью Mahout, и стоит ли тратить время на то, чтобы научиться его использовать. Если Mahout не подходит, можете ли вы предложить какие-либо альтернативы?

Большое спасибо!


person suxumuxu    schedule 03.02.2013    source источник


Ответы (2)


Я бы сказал, что вам лучше обратиться к приятным людям из списка рассылки Mahout.

Тем не менее, Mahout предоставляет рекомендации на основе SVD, которые используют различные факторизаторы для расчета матриц. Например, есть ALSWRFactorizer, который поддерживает 2 режима:

  1. Факторизация явной матрицы оценок обратной связи. см. статью
  2. Вариант факторизации с неявной обратной связью. см. статью

Должно быть легко расширить функциональность путем реализации собственного рекомендателя (extend AbstractRecommender) или реализации собственного факторизатора (extend AbstractFactorizer). Тем не менее, не зная больше о вашем подходе или вашей реализации, я не могу сказать больше.

person Julian Ortega    schedule 08.02.2013

Существует два класса рекомендателей: на основе данных (генерирует рекомендации для конкретных пользователей, например, SVD) на основе модели (генерирует модель для построения рекомендаций на основе пользовательских данных, например, RBM)

Mahout не поддерживает рекомендации на основе моделей (не имеет для этого соответствующих интерфейсов). Вы можете реализовать некоторые алгоритмы, но «из коробки» вы не сможете использовать некоторые функции подхода на основе моделей.

Кстати, я бы предпочел MyMediaLite (если ваш набор данных достаточно мал, чтобы избежать Hadoop). MML поддерживает ансамбли и больше алгоритмов.

person user1334881    schedule 09.07.2014