КРАТКОЕ ВВЕДЕНИЕ В ПРОЕКТ:
С тех пор, как я начал свое путешествие в не столь гламурный мир науки о данных, я всегда задавался вопросом, как это сработает, если я решу создать рекомендатель фильмов.
Так что я перестал гадать и сразу же погрузился.
О ДАННЫХ:
Набор данных, использованный для построения этой рекомендательной системы, был получен с сайта 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 месяцев с сегодняшнего дня. Наслаждаться!!