2013-03-29 1 views
3

У меня есть рекомендация по булевым предпочтениям на основе подобия пользователя. В моем наборе данных содержатся отношения где ItemId - это статьи, которые пользователь решил прочитать. Я хотел бы добавить вторую модель данных, в которой ItemId является подпиской на конкретную тему.Использование нескольких моделей взвешенных данных для рекомендации Mahout

Единственный способ, которым я могу это представить, - объединить эти два соединения, компенсируя идентификаторы подписки, чтобы они не сталкивались с идентификаторами статьи. Для взвешивания я рассмотрел возможность сброса булевой настройки предпочтений и введения оценок предпочтений, когда подмножество статей имеет показатель предпочтения 1 (например), а подмножество подписок имеет предпочтительный балл 2.

Я не уверен, что это будет работать, однако, потому что оценка предпочтения не совсем аналогична тому, как я взвешиваюсь; они, вероятно, включают в себя некоторые концепции более низких оценок, представляющих недовольство.

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

ответ

4

Я думаю, вы думаете об этом правильно. Да, вы хотите немного более выразительно, чем просто существует/не существует для подписки и статей, поскольку они означают несколько разные вещи. Я бы предложил собрать весы, отражающие их относительную частоту. Например, если пользователи прочитали статьи 100K за все время и сделали 10000 подписки, тогда вы можете выбрать вес подписки как «10», а для чтения - «1».

Это не совсем подходит, если вы считаете эти значения в качестве оценок предпочтений по ряду причин. Он работает лучше, если вы используете подход, который рассматривает их как то, что они есть, которые являются линейными весами.

Я бы указал вам на алгоритм ALS-WR, специально разработанный для этого типа ввода. Например: Collaborative Filtering for Implicit Feedback Datasets

Это реализовано в Mahout как ParallelALSFactorizationJob на Hadoop. Он работает хорошо, хотя требует Hadoop. (Я не могу взять на это риск, хотя я написал большую часть кода рекомендации в Mahout.)

Реклама: Я работаю над коммерциализацией системы «следующего поколения», которая произошла от моей работы в Mahout, Myrrix. Это реализация ALS-WR и идеально подходит для вашего ввода. Это довольно легко download and run, и не нужен Hadoop.

Учитывая, что он может быть непосредственно подходящим для вашей проблемы, я не против подключать его здесь.

+0

Я не вижу поддержки нескольких наборов данных i Myrrix, кроме экспериментальных ПРИМЕР: РЕКОМЕНДАЦИИ ПО СКАЧИВАНИЮ – Hurda

+0

Я не имею в виду слияние моделей. Здесь различные наборы данных - это данные пользовательской статьи и пользовательской подписки. Оба могут быть добавлены в одну модель с разными весами. На самом деле это не имеет значения, каковы они; они определяются только взвешиванием. –

+0

Таким образом, мы можем иметь двойную запись (одинаковые идентификаторы) с разным весом - и она считается дважды (с учетом веса)? – Hurda

 Смежные вопросы

  • Нет связанных вопросов^_^