Я ищу реализацию динамической модели, чтобы рекомендовать фильм пользователю. Рекомендация должна обновляться каждый раз, когда пользователь смотрит фильм или оценивает его. Чтобы было проще, я думаю о том, чтобы учесть два фактора:
- прошлые оценки других фильмов пользователем
- время, когда пользователь смотрел определенные прошлые фильмы
Как создать такую модель и что рекомендует академическая литература?
Я новичок в этой области и предполагаю, что модель линейной регрессии могла бы обеспечить хороший результат, а не увлекаться более сложными методами, чтобы избежать навязывания ненужной неопределенности в оценках параметров. Но, может быть, есть уже устоявшиеся методы, которые обычно используются на практике?
machine-learning
recommender-system
dynamic-regression
JohnAndrews
источник
источник
Ответы:
На самом деле это относительно известная проблема в области машинного обучения. В 2006 году Netflix предложил 1 миллион долларов за алгоритм, который обеспечил наилучшее разумное улучшение их рекомендательной системы. Теория выигрышного решения кратко обсуждается в этом учебнике Caltech по вводному машинному обучению.
В основном был использован метод обучения ансамбля . В частности, был использован тип смешивания или укладки . Это нетривиально, но интуитивно понятно. Чтобы понять интуицию использования различных статистических подходов в гармонии, рассмотрим разные причины, по которым разные люди любят одни и те же фильмы: например, Джо может понравиться Topgun, потому что он любит боевики 80-х, а Джейн любит Topgun, потому что ей нравятся фильмы с саундтреками Кенни Логгинса. Таким образом, тот факт, что оба зрителя смотрели (и высоко оценили фильм), не обязательно означает, что им понравятся другие фильмы с высокой вероятностью. Алгоритм прогнозирования в идеале сможет учесть эти различия, по крайней мере, в некоторой степени.
Это может сделать решение довольно простым, но балансировка конкурирующих алгоритмов и расстановка приоритетов для наилучшего предположения для каждого случая определенно не просты. Тот факт, что Netflix предложил такую большую награду, должен сделать масштаб проблемы довольно очевидным.
Если вы только начинаете заниматься машинным обучением, ознакомьтесь с приведенными выше ресурсами в зависимости от уровня вашего интереса и математического образования. Таким образом, регрессия, вероятно, будет работать хорошо, но возможно значительно лучшая производительность.
источник
Половина проблемы в этих проблемах - знать, что искать.
Возможно, вы добавили тег, не осознавая этого, но на самом деле вы ищете информацию о рекомендательных системах . Возможно, вы захотите начать с совместной фильтрации или, что еще лучше, с Руководством Риччи, Рокача и Шапиры "Введение в рекомендательные системы", приведенным на этой странице.
источник
Вам следует ознакомиться с курсом Эндрю Нга по Coursera: https://www.coursera.org/learn/machine-learning. В нем есть урок по созданию систем рекомендаций, который, кажется, является тем, что вы ищете. По сути, это форма линейной регрессии, которая изучает синтетические атрибуты для фильмов от людей, которые оценивают фильмы, и использует их для прогнозирования рекомендаций для людей, которые не оценивали / не смотрели фильмы.
источник
В конкурсе Netflix (октябрь 2006 г. - сентябрь 2009 г.) очень большой ансамбль (107 отдельных подмоделей) выиграл главный приз в 1 миллион долларов, но поучительно отметить, что первые простые (не ансамблевые) алгоритмы, превзошедшие Netflix Cinematch бенчмарк были основаны на обобщенной (разреженной матрице) СВД. Эта первая веха в победе над Cinematch была достигнута всего через 6 дней после соревнования, начатого командой WXYZConsulting.
SVD (Singular Value Decomposition) - это алгоритм матричной факторизации, где вы начинаете с 2d
[user, movie]
матрицы с оценкой (от 1 до 5 звездочек) в каждой[u, m]
позиции (*) и разбиваете ее на 3 матрицы, где средняя матрица является квадратной матрицей скрытые взаимодействия между пользователями и фильмами.Вы можете сделать квадратный ранг матрицы меньшим или большим, чтобы включить больше или меньше таких скрытых факторов взаимодействия соответственно.
Существует несколько бесплатных программных реализаций быстрого / эффективного разреженного SVD. Например, redsvd или vowpal-wabbit, поэтому, прежде чем писать свои собственные, вы можете попробовать их.
(*) Большинство этих записей равны нулю, так как большинство пользователей не оценили большинство фильмов. т.е. матрица очень разреженная.
Ссылки:
источник