Какие статистические методы существуют, чтобы рекомендовать фильм как на Netflix?

14

Я ищу реализацию динамической модели, чтобы рекомендовать фильм пользователю. Рекомендация должна обновляться каждый раз, когда пользователь смотрит фильм или оценивает его. Чтобы было проще, я думаю о том, чтобы учесть два фактора:

  • прошлые оценки других фильмов пользователем
  • время, когда пользователь смотрел определенные прошлые фильмы

Как создать такую ​​модель и что рекомендует академическая литература?

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

JohnAndrews
источник
3
Я не думаю, что это слишком широко, чтобы быть ответственным. Например, у него есть 2 ответа.
gung - Восстановить Монику
2
Попробуйте Mining Massive Datasets и бесплатную книгу Coursera!
Фелипе Джерард
2
Вы, вероятно, хотите посмотреть матричную и / или тензорную факторизацию.
Марк Клазен
1
@ usεr11852 Мой ответ шире, чем вопрос.
Shadowtalker
1
@ usεr11852, заголовок вопроса спрашивает: «Какие существуют статистические методы ...?» Последнее предложение спрашивает, существуют ли другие методы, кроме регрессии. Я думаю, что несколько ответов ниже предоставляют такую ​​информацию.
gung - Восстановить Монику

Ответы:

14

На самом деле это относительно известная проблема в области машинного обучения. В 2006 году Netflix предложил 1 миллион долларов за алгоритм, который обеспечил наилучшее разумное улучшение их рекомендательной системы. Теория выигрышного решения кратко обсуждается в этом учебнике Caltech по вводному машинному обучению.

В основном был использован метод обучения ансамбля . В частности, был использован тип смешивания или укладки . Это нетривиально, но интуитивно понятно. Чтобы понять интуицию использования различных статистических подходов в гармонии, рассмотрим разные причины, по которым разные люди любят одни и те же фильмы: например, Джо может понравиться Topgun, потому что он любит боевики 80-х, а Джейн любит Topgun, потому что ей нравятся фильмы с саундтреками Кенни Логгинса. Таким образом, тот факт, что оба зрителя смотрели (и высоко оценили фильм), не обязательно означает, что им понравятся другие фильмы с высокой вероятностью. Алгоритм прогнозирования в идеале сможет учесть эти различия, по крайней мере, в некоторой степени.

Это может сделать решение довольно простым, но балансировка конкурирующих алгоритмов и расстановка приоритетов для наилучшего предположения для каждого случая определенно не просты. Тот факт, что Netflix предложил такую ​​большую награду, должен сделать масштаб проблемы довольно очевидным.

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

d0rmLife
источник
2
+1 за приз Netflix. Как вы указали, этот приз является хорошим показателем того, насколько масштабным является этот вызов.
Cort Ammon
11

Половина проблемы в этих проблемах - знать, что искать.

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

shadowtalker
источник
Я действительно углубился в тег и наткнулся в основном на примеры совместной фильтрации. Проблема, которую я имею с этим методом, состоит в том, что это зависит от ввода других пользователей, если я понял концепцию. Я больше ищу методы в ситуации одного пользователя, никаких других данных или, необязательно, других данных. Посмотрим на ваши другие ссылки.
Джон Эндрюс
1
@JohnAndrews: я думаю, что ssdecontrol дает вам самый важный совет. Вы должны изучить рекомендательную литературу по системам. Здесь задействовано много техник, например. NNMF , Funk SVD , много разных вариантов классификаторов ближайших соседей и т. Д., Чтобы назвать некоторые очевидные. В конце концов, вы хотите использовать совместную фильтрацию, но вы не можете просто «погрузиться» без какого-либо фона.
usεr11852
@JohnAndrews CrossValidated - это обычно плохое место, чтобы начать изучение предмета, особенно если вы просто ищете по тегу. Как насчет просмотра ссылок, на которые я ссылаюсь? Статистические статьи Википедии не всегда надежны, но они довольно хороши и приводят множество ссылок.
Shadowtalker
6

Вам следует ознакомиться с курсом Эндрю Нга по Coursera: https://www.coursera.org/learn/machine-learning. В нем есть урок по созданию систем рекомендаций, который, кажется, является тем, что вы ищете. По сути, это форма линейной регрессии, которая изучает синтетические атрибуты для фильмов от людей, которые оценивают фильмы, и использует их для прогнозирования рекомендаций для людей, которые не оценивали / не смотрели фильмы.

Рафаэль Николаус
источник
3
Добро пожаловать на наш сайт! Спасибо за то, что вы включили некоторую информацию, которая суммирует содержание ссылки, а не просто предоставили "голую" ссылку - мы это ценим.
Серебряная рыба
4

В конкурсе 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, поэтому, прежде чем писать свои собственные, вы можете попробовать их.

(*) Большинство этих записей равны нулю, так как большинство пользователей не оценили большинство фильмов. т.е. матрица очень разреженная.

Ссылки:

arielf
источник
Что раньше использовал Netflix?
Иона
2
Алгоритм под названием «Cinematch», который не является общедоступным, но был описан как «линейная комбинация различных факторов, уточненных за годы», например, средневзвешенный глобальный рейтинг (G) + средневзвешенный пользовательский [u] рейтинг + средневзвешенный фильм [m] рейтинг, ... и т. д.
Ариэльф
Спасибо за подробный ответ. Копаться в этом. Что касается линейных комбинаций, разве не является большой проблемой эта перепараметризация? Это был бы мой предпочтительный подход. Но СВД звучит многообещающе.
Джон Эндрюс
Не проблема, если вы только добавляете факторы, которые улучшают ошибку обобщения . Очевидно, вам нужно протестировать каждое такое дополнение на невидимых данных, чтобы получить необходимую уверенность.
Ариэльф