Как построить систему рекомендации фильмов?

  • Каков наилучший подход?
  • Какие алгоритмы используются? Каковы их сильные и слабые стороны?
  • Почему современные системы рекомендации фильмов не дают хороших рекомендаций?

2 ответа

Решение

Это очень открытый вопрос, который включает в себя множество различных концепций.

В качестве начального вопроса рассмотрим алгоритм k-ближайшего соседа. Он широко используется в задачах, подобных вашему фильму. Одна большая проблема с этим алгоритмом - это человеческий вклад в решение того, сколько измерений вы используете для сегментирования пространства пространственных объектов, и выбор свойств каждого из этих измерений, чтобы каждое из них добавляло ценность, а не дублировало значение другого измерения.

Непосредственно к алгоритму k-NN относится область кластерного анализа. Когда вы строите точки данных для информации, которая имеет скопления внутри более рассеянных выбросов, вы можете интуитивно видеть, что существует некоторая природа сходства в скопленных точках. Возможно, вам удастся сгруппировать некоторые разбросанные выбросы с тем или иным сгустком, но между сгустками будет много точек, которые могут соответствовать двум или более конкурирующим сгусткам. Единственный способ исправить эту дилемму - это добавить больше размерных параметров к вашим точкам данных, чтобы эти незафиксированные выбросы были сведены к одной группе. (Перейдите по ссылке, чтобы увидеть красивую картину сгруппированных данных.)

Это краткое введение приводит к следующей концепции: распознавание образов. Этот предмет математически сложен и является предметом многих исследований в области теоретических компьютерных наук, статистики, искусственного интеллекта, машинного обучения и ясновидения. Последний вариант - полушутка, но он указывает на суть вашей проблемы: как компьютер может предсказать, что вы будете делать в будущем? Краткий ответ: не может. Более длинный ответ пытается объяснить, почему ваши вкусы и настроения меняются в, казалось бы, случайных направлениях в кажущиеся случайные моменты времени. Хорошая система распознавания образов может выбрать 20 фильмов, которые вам действительно нравятся, а затем порекомендовать еще один фильм из того же набора, что и другие 20, которые вы полностью ненавидите. Где произошел сбой системы? Было ли это в реализации алгоритма, первоначальном выборе параметров для измерений вашего пространственного объекта или ваш профиль испортился из-за того, что кто-то другой использовал вашу учетную запись Netflix, чтобы заказать 'Howard the Duck', 'Cruising' и 'Beaches"?

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

Команда от BellKor получила приз Netflix. Таким образом, возможно, этот подход может быть лучшим подходом.

Чтобы дать высокоуровневое, интуитивно понятное объяснение того, как работают эти системы рекомендаций, рассмотрим следующую ситуацию. Я смотрю "Звездные войны" два раза в неделю. Теперь, если бы вы порекомендовали мне фильм, который бы мне понравился, какой фильм вы бы выбрали? Фильм с Харрисоном Фордом? Научно-фантастический фильм? Возможно, фильм, снятый в 80-х?

Основная идея систем рекомендаций заключается в том, что чем больше они знают, что вам нравится (например, какие жанры, актеры и т. Д.), Тем лучше рекомендации, которые они могут дать.

Однако, если ваши вкусы противоречат друг другу (например, вы любите Спасти рядового Райана, но также любите фильмы о пацифистах), вам будет трудно порекомендовать вам фильм.

Короче говоря, многие рекомендательные алгоритмы должны знать:

  1. Что вам нравится: это включает в себя знание того, какой набор функций использовать для записи фильмов, которые вам нравятся. Например, какой жанр фильма, какие актеры в фильме и т. Д.
  2. Какие фильмы похожи на то, что вам нравится. Это включает в себя поиск хорошей метрики сходства на основе набора функций, который вы использовали на предыдущем шаге.