Улучшить предложения Mahout

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

Предполагая, что у нас уже есть рекомендации: количество пользователей было предложено по количеству элементов.

Но также можно получить обратную связь от этих предложенных пользователей в бинарной форме: «нет, не для меня» и «да, мне предложили, потому что я знаю о предметах»; таким образом 1/0 каждым из предложенных пользователей.

Как лучше и правильнее использовать такие данные? Есть ли какие-нибудь подходы, встроенные в Mahout? Если нет, какой подход подойдет для обучения набора данных и использования этой информации в следующих раундах?


person There Are Four Lights    schedule 29.09.2014    source источник


Ответы (2)


Не идеально, чтобы вы получали явный отзыв пользователя как 0–1 (полностью не согласен — полностью согласен), в противном случае отзыв можно было бы рассматривать как любой другой пользовательский рейтинг из ввода. В любом случае вы можете ввести эту обратную связь с пользователем в свой начальный тренировочный набор с recommended score (обратная связь «1») или 1 - recommended score (обратная связь «0») в качестве веса и переобучить свою модель.

Было бы неплохо добавить 3-й вариант «нейтральный», который ничего не делает, чтобы избежать шума в данных (например, рекомендуемая оценка равна 0,5, а пользователь не согласен, вы все равно добавите ее как 0,5 независимо...) и смоделировать над примеркой.

person Ion Cojocaru    schedule 29.09.2014
comment
Да, логические наборы данных не идеальны, но даже если мы предположим, что у нас есть «нормальный» вес (скажем, от 1 до 5) в качестве обратной связи с пользователем, это все равно не отвечает на вопрос о том, как< /i> мы используем данные для оценки результатов предстоящих предложений. Есть предположения? Спасибо. - person There Are Four Lights; 29.09.2014
comment
Пожалуйста, взгляните на «Сравнение неявных и явных отзывов от службы онлайн-рекомендаций по музыке» от Jawaheer. Выше я предлагал преобразовать вашу неявную обратную связь в явную и переобучить вашу модель. - person Ion Cojocaru; 29.09.2014
comment
Также взгляните на эту презентацию «Удаление шума от отзывов пользователей» slideshare.net/xamat/ - person Ion Cojocaru; 29.09.2014
comment
Спасибо, очень ценю это. - person There Are Four Lights; 30.09.2014

Логические данные идеальны, но у вас есть два действия: «нравится» и «не нравится».

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

В последней версии Mahout SNAPSHOT-1.0 есть инструменты, которые вам нужны в *spark-itemsimilarity". Он может выполнять два действия, одно основное, другое вторичное, и создает матрицу индикаторов и матрицу кросс-индикаторов. Их вы индексируете и запрашиваете с помощью поиска. Engine, где запрос представляет собой историю симпатий и антипатий пользователя. Поиск вернет упорядоченный список рекомендаций.

Используя перекрестные индикаторы, вы можете начать использовать множество различных действий, которые пользователь выполняет в вашем приложении. Процесс создания кросс-индикаторов позволит найти важные корреляции между двумя действиями. Другими словами, он найдет «неприязни», которые приводят к конкретным «нравится». Вы можете сделать то же самое с просмотрами страниц, применением тегов, просмотром категорий, практически любым записанным действием пользователя.

Для этого метода требуются Mahout, Spark, Hadoop и поисковая система, такая как Solr. Это объясняется здесь: http://mahout.apache.org/users/recommender/intro-cooccurrence-spark.html в разделе Как использовать несколько действий пользователя.

person pferrel    schedule 30.09.2014