Улучшить предложения Mahout
Я ищу способ улучшить предложения Mahout (форма Рекомендатор на основе элементов, а наборы данных изначально - пользователь / элемент / вес) с использованием "внешнего" набора данных.
Предполагая, что у нас уже есть рекомендации: количество пользователей было предложено по количеству элементов.
Но также возможно получить отзывы от этих предполагаемых пользователей в двоичном виде: "нет, не для меня" и "да, мне предложили, потому что я знаю об элементах"; таким образом, 1/0 от каждого из предложенных пользователей.
Какой лучший и правильный способ использовать данные такого рода? Есть ли какие-то подходы, встроенные в Mahout? Если нет, какой подход подойдет для обучения набора данных и использования этой информации в следующих раундах?
2 ответа
Булевы данные идеальны, но у вас есть два действия: "нравится" и "не нравится"
Последний способ использовать это с помощью индикаторов и перекрестных индикаторов. Вы хотите порекомендовать вещи, которые вам нравятся, поэтому для этих данных вы создаете индикатор. Однако вполне вероятно, что для рекомендации лайков можно использовать шаблон "неприязни" пользователя, для этого необходимо создать перекрестный индикатор.
В последней версии Mahout SNAPSHOT-1.0 есть инструменты, которые вам необходимы для * spark-itemsidityity. Он может выполнять два действия, одно первичное, другое вторичное, и создавать матрицу индикаторов и матрицу перекрестных индикаторов. Они индексируются и запрашиваются с помощью поиска. движок, где запрос - это история лайков и антипатий пользователя. Поиск выдаст упорядоченный список рекомендаций.
Используя перекрестные индикаторы, вы можете начать использовать множество различных действий, которые пользователь выполняет в вашем приложении. Процесс создания перекрестных индикаторов найдет важные корреляции между двумя действиями. Другими словами, он найдет "антипатии", которые приведут к конкретным "лайкам". Вы можете сделать то же самое с просмотром страниц, применением тегов, просмотром категорий, практически любым записанным действием пользователя.
Этот метод требует Mahout, Spark, Hadoop и поисковик, такой как Solr. Это объясняется здесь: http://mahout.apache.org/users/recommender/intro-cooccurrence-spark.html разделе Как использовать несколько действий пользователя
Не идеально, чтобы вы получали явную обратную связь с пользователем в виде 0-1 (категорически не согласен - полностью согласен), в противном случае обратная связь может рассматриваться как любая другая оценка пользователя из входных данных. В любом случае, вы можете ввести эту обратную связь с пользователем в свой начальный набор тренировок, с recommended score
(Обратная связь "1") или 1 - recommended score
('0' обратная связь) как вес и переподготовка вашей модели.
Было бы неплохо добавить 3-ю опцию "нейтральный", которая ничего не делает, чтобы избежать шума в данных (например, рекомендуемая оценка равна 0,5, а пользователь не согласен, вы все равно добавили бы ее как 0,5 независимо...) и модель над примеркой.