Простой алгоритм предложения/рекомендации
Я ищу простой алгоритм предложения для реализации в моем веб-приложении. Как Netflix, Amazon и т.д. Но проще. Мне не нужны команды Phd для получения лучшего показателя.
Так сказать, у меня есть:
- Пользователь1 любит Object1.
- Пользователь2 любит Object1 и Object2.
Я хочу предложить User1 им также может понравиться Object2.
Я, очевидно, могу придумать что-то наивное. Я ищу что-то проверенное и легко реализуемое.
Ответы
Ответ 1
Есть много простых и не очень простых примеров алгоритмов предложения в отличном
Программирование коллективного интеллекта
коэффициент корреляции Пирсона (немного сухая статья Википедии) может дать неплохие результаты. Здесь реализована реализация в Python и другая в TSQL вместе с интересное объяснение алгоритма.
Ответ 2
попробуйте алгоритм Slope One, он один из наиболее используемых для такого рода проблем.
здесь пример реализации в t-sql
Ответ 3
Вы можете посмотреть Обучение правила ассоциации и Априорный алгоритм. Основная идея заключается в том, что вы создаете такие правила, как "если пользователь как Object1, чем пользователь любит Object2" и проверяет, насколько хорошо они описывают (вашу) реальность. В вашем конкретном примере это правило будет иметь поддержку 2 (в качестве двух пользователей, таких как Object1) и доверие 50% a (как правило, это верно в 1 из 2 случаев). Я только что внедрил базовый концепт концепции (на самом деле мои первые шаги на Hadoop), и это не слишком сложно сделать.
Кроме того, вы можете посмотреть Apache Mahout - Taste. Я никогда не использовал его сам, хотя.
Ответ 4
Я бы пошел с ближайшими соседями К. запись в википедии объясняет это хорошо и имеет ссылки на эталонные реализации.
Ответ 5
k-ближайший алгоритм соседства
Ответ 6
Я создал предложенный алгоритм статей, который использовал ключевые слова (в отличие от "покупки продукта" ) для определения корреляции. Он занимает ключевое слово и проходит через все другие статьи, где это ключевое слово встречается, и дает результаты, на основе которых статьи имеют наиболее подходящие ключевые слова.
Помимо очевидной необходимости кэширования такой информации, с ним что-то не так с ним использует?