Рекомендовать фильмы с дополнительными функциями, используя совместную фильтрацию

16

Я пытаюсь построить систему рекомендаций, используя совместную фильтрацию. У меня есть обычная [user, movie, rating]информация. Я хотел бы включить дополнительную функцию, такую ​​как «язык» или «продолжительность фильма». Я не уверен, какие методы я мог бы использовать для такой проблемы.

Пожалуйста, предложите ссылки или пакеты в Python / R.

Sidhha
источник

Ответы:

17

Вот некоторые ресурсы, которые могут быть полезны:

  • Recommenderlab - платформа и программное обеспечение с открытым исходным кодом для разработки и тестирования рекомендательных алгоритмов: http://lyle.smu.edu/IDA/recommenderlab . Соответствующий Rпакет recommenderlab: http://cran.r-project.org/package=recommenderlab .

  • Следующая запись блога иллюстрирует использование recommenderlabпакета (который IMHO может быть обобщен для любого механизма рекомендаций с открытым исходным кодом) для создания приложения рекомендаций по фильмам на основе совместной фильтрации : http://scn.sap.com/community/developer-center/hana / blog / 2013/11/06 / рекомендации по фильмам за счет использования r .

  • Исследование рекомендательных систем - хорошая веб-страница с ресурсами по этой теме, поддерживаемая ведущим разработчиком Recommenderlab Майклом Хасслером: http://michael.hahsler.net/research/recommender .

  • Mortar Рекомендации Engine - настраиваемый механизм рекомендаций с открытым исходным кодом для Hadoopи Pig, написанный на Pythonи Java: https://github.com/mortardata/mortar-recsys . Компания, спонсирующая разработку этого проекта, Mortar Data , предлагает общую коммерческую облачную платформу для разработки и размещения проектов программного обеспечения для обработки данных , в том числе на основе Mortar Recommendation Engine(разработка и хостинг публичных проектов бесплатны): http: //www.mortardata. ком . Mortar Data предоставляет помощь в форме открытого форума вопросов и ответов ( https://answers.mortardata.com ), а также в виде всеобъемлющего учебного пособия.по созданию механизма рекомендаций с использованием открытых технологий ( http://help.mortardata.com/data_apps/recommendation_engine ).

  • «Введение в системы рекомендаций» - соответствующий курс Coursera (MOOC), содержание и описание которого предоставляют дополнительные ресурсы по теме: https://www.coursera.org/course/recsys .

  • PredictionIO - серверное программное обеспечение с открытым исходным кодом для машинного обучения, которое позволяет создавать приложения для обработки данных , включая системы рекомендаций : http://prediction.io (исходный код доступен на GitHub: https://github.com/PredictionIO ). PredictionIOвключает в себя встроенный механизм рекомендаций ( http://docs.prediction.io/current/engines/itemrec/index.html ) и поддерживает широкий спектр языков программирования и каркасов с помощью RESTfulAPI, а также SDK / плагинов. PredictionIO поддерживает Amazon Machine Imageна AWS Marketplace для развертывания приложений на инфраструктуру AWS: https://aws.amazon.com/marketplace/pp/B00ECGJYGE,

  • Дополнительные проекты с открытым исходным кодом , относящиеся к данной теме (обнаружены на MLOSSвеб-сайте программного обеспечения с открытым исходным кодом для машинного обучения : http://www.mloss.org ):

  • Следующие соответствующие R сообщения в блоге также интересны:

Александр Блех
источник
4

Вместо совместной фильтрации я бы использовал подход матричной факторизации, при котором пользователи и фильмы одинаково представлены векторами скрытых признаков, точечные продукты которых дают оценки. Обычно просто выбирают ранг (число признаков), независимо от того, что представляют признаки, а алгоритм делает все остальное. Как и в случае с PCA, результат не сразу интерпретируется, но дает хорошие результаты. Что вы хотите сделать, так это расширить матрицу фильма, чтобы включить в нее упомянутые вами дополнительные функции, и убедиться, что они остаются фиксированными, поскольку алгоритм оценивает две матрицы с помощью регуляризации. Соответствующие записи в пользовательской матрице будут инициализированы случайным образом, а затем оценены алгоритмом факторизации матрицы. Это универсальный и эффективный подход, но он требует некоторого понимания машинного обучения,

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

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