Может ли этот подход к рекомендациям по пользовательским элементам работать?

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

  1. нажмите на элемент (сильный интерес)
  2. обновить элемент (некоторый интерес)
  3. открыть диалоговое окно для чтения (некоторый интерес)
  4. ничего не делай дальше (нет интереса)

Эти данные собираются и хранятся. Система должна рекомендовать интересующие пользователя элементы. Я подумываю превратить эти данные в рейтинговую систему.

Вариант A) если пользователь нажимает на элемент, это преобразуется в неявный рейтинг жизненного цикла 5. обновление элемента - 4 и так далее. Итак, моя матрица user->item будет выглядеть так:

       item 1 | item 2 | item 3
john   5                 4
jane   4

В этом примере Джон щелкнул элемент 1 и обновил элемент 3. На самом деле рейтинг может только повышаться, т. е. если пользователь ранее обновлял элемент, я пишу 4 и обновляю только до 5, если элемент щелкнут позже.

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

       item 1 | item 2 | item 3
john   55       1        30
jane   41       9

Может в этом и проблема, так как теперь цифры сложнее перевести в оценочную шкалу от 1 до 10

Вариант C) Я считаю каждое взаимодействие отдельно

       item 1 click | item 1 refresh | item 1 read
john   3              1                       
jane   1                               1

Здесь проблема в том, что «чтение информации» об элементе, вероятно, выполняется только один раз.

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

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


person reikje    schedule 18.08.2014    source источник


Ответы (1)


То, что вы предлагаете, звучит разумно. Ваша обеспокоенность тем, что вы не можете найти новые элементы, является отражением метода совместной фильтрации, основанного на метаданных. Чтобы найти новинки, вам, несомненно, придется провести контент-анализ, который будет отдельным этапом. Например, если ваши элементы представляют собой новостные статьи, вы можете попытаться определить важные ключевые слова для каждого пользователя.

person dan    schedule 15.10.2014