Совместная фильтрация в MySQL?
япытаясь разработать сайт, который рекомендует предметы (например, книги) пользователям на основе их предпочтений. До сих пор я читал «Коллективный разум» О'Рейли и множество других онлайн-статей. Однако все они, похоже, имеют дело с единичными случаями рекомендации, например, если вам нравится книга А, то вам может понравиться книга Б.
Я пытаюсь создать набор «узлов-предпочтений» для каждого пользователя на моем сайте. Допустим, пользователю нравятся книги A, B и C. Затем, когда они добавляют книгу D, я не хочу, чтобы система рекомендовала другие книги, основанные исключительно на опыте других пользователей с книгой D. Я не хочу, чтобы система выглядела аналогично. «узлы предпочтения» и рекомендовать книги, основанные на этом.
Вот пример 4 узлов:
User1: 'book A'->'book B'->'book C'
User2: 'book A'->'book B'->'book C'->'book D'
user3: 'book X'->'book Y'->'book C'->'book Z'
user4: 'book W'->'book Q'->'book C'->'book Z'
Таким образом, система рекомендаций, как описано в материале, который я прочитал, будет рекомендовать книгу Z Пользователю 1, потому что есть два человека, которые рекомендуют Z в сочетании с симпатией C (т.е. Z весит больше, чем D), даже если пользователь с подобным «узлом предпочтения», User2, будет более квалифицированным, чтобы рекомендовать книгу D, потому что у него более похожий образец интереса.
Так есть ли у кого-нибудь из вас опыт такого рода вещей? Есть ли какие-то вещи, которые я должен попытаться прочитать, или существуют ли системы с открытым исходным кодом для этого?
Спасибо за ваше время!
Небольшое редактирование: Я думаю, что алгоритм last.fm делает именно то, что и моя система. Использование деревьев предпочтений людей, чтобы рекомендовать музыку более лично людям. Вместо того, чтобы просто сказать «тебе может понравиться Б, потому что тебе нравится А»