КРАТКОЕ ВВЕДЕНИЕ В ПРОЕКТ:

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

Так что я перестал гадать и сразу же погрузился.

О ДАННЫХ:

Набор данных, использованный для построения этой рекомендательной системы, был получен с сайта Grouplens.org.

Это группа исследователей из Миннесотского университета. Большое спасибо им за то, что сделали это общедоступным.

Если вы загрузите набор данных Grouplens, вы обнаружите, что у них довольно много доступных файлов .csv. Я сосредоточился на файле метаданных фильма.

В нем содержалось практически все, что мне было нужно для начала работы.

Вот снимок данных, чтобы вам было легче следить за ними.

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

Чтобы учесть важность объемов в рейтингах, мы приняли формулу оценки IMDB Ratings.

Для ясности,

C : Относится к среднему количеству голосов по всему набору.

m: Относится к минимальному количеству голосов, которое фильм должен учитывать во взвешенном рейтинге.

v: представляет количество фактических голосов

R: средний рейтинг фильма

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

Примечание. Я решил использовать 85-й процентиль моих данных. Игра с этим диапазоном может дать разные результаты.

ПРОЦЕСС:

Идея этой системы заключается в том, что фильмы с одинаковыми рейтингами будут представлять одинаковый интерес для зрителей.

По сути, вы, скорее всего, заинтересуетесь фильмом, если его рейтинг похож на фильм, который вам действительно нравится. Это действительно оказалось правдой в общем смысле.

Вот как я намеревался решить эту проблему:

- взять исходные данные

- Разобрать и подготовить к обработке

- Используйте как минимум 3 разные модели прогнозирования рейтингов фильмов.

- Получение ввода от пользователя

- Предсказать рейтинг интересующего фильма

- Предоставьте 10 фильмов, которые имеют рейтинг, аналогичный рассматриваемому фильму.

МОИ МОДЕЛИ, ИХ РЕЗУЛЬТАТЫ:

Я не буду утомлять вас подробностями того, как я боролся с этими данными. Если вам интересно, просто зайдите на мой GitHub и загляните в блокнот по обработке данных movie_data. Было сделано несколько интересных вещей.

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

Помните, что мы пытаемся правильно предсказать наш инженерно-целевой вектор?

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

базовая линия = mean_squared_error (y_train, y_train_mean, Squared = False)

базовый уровень = 0,6835361649981446

Линейный регрессор:

Наш линейный регрессор немного превзошел базовую модель. Что было ожидаемо.

Root Mean Squared Error for Linear Regression:  0.5704780331737243

Случайный лесной регрессор:

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

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

Mean Score for Random forest regressor:  0.5133873257681889

Регрессор повышения градиента:

Регрессор с повышением градиента показал наилучшую производительность, как показано ниже:

Mean Score for Gradient Boost :  0.495319888363313

МОГУТ ЛИ ПРИВЕДЕННЫЕ ВЫШЕ МОДЕЛИ РЕГРЕССИИ ПРЕДОСТАВИТЬ ВАМ ДОСТОВЕРНЫЙ ВЫБОР ФИЛЬМОВ?

Короткий ответ. НЕТ.

ПОЧЕМУ?

Если вы что-нибудь знаете о регрессионных моделях, то они пытаются аппроксимировать функцию таким образом, чтобы она представляла данные, которые она получает.

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

По сути, в моем случае он стал бы настолько хорошо угадывать правильные рейтинги для фильмов, которые ему скормили, что плохо угадывал бы рейтинги фильмов, которые он никогда не видел.

С регрессионными моделями у вас всегда будет этот компонент ошибки. Именно это делает регрессионные модели полезными. Способность к обобщению.

Теперь, когда этот рекомендатель был построен, мы полагаемся на реальный каталог фильмов, который содержит фактические рейтинги фильмов.

Пример:

Лучший фильм: Один дома

Рейтинг: X + компонент ошибки

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

Надеюсь, мне удалось изложить это кратко и лаконично.

Исходя из этих результатов, для более точного прогнозирования поведения человека было бы лучше использовать какую-либо форму классификации.

Мне очень понравилось работать над этим, и, надеюсь, он послужит платформой для дальнейшей работы:

Возможные направления дальнейших исследований:

  • Использование косинусных сходств для связывания фильмов с их кратким содержанием.
  • Включение съемочной группы и актерского состава в показатели рейтинга фильмов.

Кроме того, если вы хотите увидеть, как все это сложилось, вот ссылка на мой рекомендатель фильмов. Это должно быть хорошо в течение 3 месяцев с сегодняшнего дня. Наслаждаться!!

Кинорекомендатор