Проблема, которую я пытаюсь решить, заключается в поиске правильной метрики подобия, эвристического эвакуатора и уровня фильтрации для моих данных.(Я использую «уровень фильтрации» для обозначения количества оценок, которые пользователь или элемент должны связать с ним, чтобы включить его в производственную базу данных).
Настройка
Я использую фреймворк для совместной фильтрации mahout's вкуса.Мои данные поступают в виде триплетов, где рейтинг предмета содержится в наборе {1,2,3,4,5}.Я использую рекомендацию на основе элемента поверх показателя сходства logLikelihood.Я отфильтровываю пользователей, которые оценивают менее 20 элементов из набора производственных данных.Среднеквадратичное отклонение выглядит хорошо (1.17), и ограничение данных не происходит, но есть странное поведение, которое нежелательно и граничит с ошибкой.
Вопрос
Первый звонок - Создать список «топовых товаров» без информации от пользователя.Для этого я использую то, что я называю Центрированная сумма :
for i in items
for r in i's ratings
sum += r - center
where center = (5+1)/2 , if you allow ratings in the scale of 1 to 5 for example
Я использую центрированную сумму вместо средних рейтингов для генерации списка топовых элементов, главным образом потому, что мне нужно числооценок, полученных предметом для включения в рейтинг.
Второй звонок - я прошу 9 похожих предметов для каждого из лучших предметов, возвращенных при первом звонке.Для каждого верхнего элемента, для которого я запрашивал аналогичные элементы, 7 из 9 возвращенных аналогичных элементов совпадают (как и набор аналогичных элементов, возвращаемых для других основных элементов)!
Не пора ли попытаться восстановить?Возможно, умножение сходства двух игр на (количество предметов с одинаковым рейтингом) / x, где x настраивается (около 50 или что-то для начала).
Заранее спасибо, ребята