Как построить простую систему рекомендаций? - PullRequest
10 голосов
/ 31 января 2009

Как построить простую систему рекомендаций? Я видел некоторые алгоритмы, но их так сложно реализовать, я хотел бы, чтобы их практическое описание реализовало самый простой алгоритм?

у меня есть эти три таблицы

        Users
  userid      username
   1            aaa
   2            bbb

и

        products
  productid        productname
     1                laptop
     2                mobile phone
     3                car

и

      users_products
  userid        productid
    1                1
    1                3
    3                2
    2                3

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

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

      1    2   3   4   5   6 << users' ids
 1)   1   .4  .2  .3  .8  .4
 2)  .3    1  .5  .7  .3  .9
 3)  .4   .4   1  .8  .2  .3
 4)  .6   .6  .6   1  .4  .2
 5)  .8   .7  .4  .2   1  .3
 6)   1   .4  .6  .7  .9   1
 ^
 ^
users'
 ids

так как же можно рассчитать сходство между пользователями? и как эти сложные данные могут храниться в рекламной базе? (для каждого пользователя требуется таблица со столбцом)? спасибо

Ответы [ 5 ]

10 голосов
/ 31 января 2009

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

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

Вычислить такую ​​вещь очень просто. Концепция , пример кода .

7 голосов
/ 31 января 2009

Может быть, чтение "Программирование Коллективного разума" поможет вам.

0 голосов
/ 31 января 2009

Я видел это в одной из книг Джо Селко. Я полагаю, что это Здесь . У меня нет доступа к моему в данный момент. Попробуйте подойти к ближайшему Barnes & Noble или Borders и проверить это. Я выкопаю свою, как только у меня будет доступ и буду следить.

0 голосов
/ 31 января 2009

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

table: user_correlation_matrix
columns: user1_id user2_id correlation_factor
0 голосов
/ 31 января 2009

Таблица может храниться в трех столбцах

user_left user_top correlation

(хотя у меня нет опыта определения корреляции)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...