Оглавление

Обзор

Системы рекомендаций — наиболее успешное применение технологии машинного обучения на практике. Цель этого проекта — разработать модель машинного обучения, которая может точно рекомендовать фильмы пользователям на основе их прошлой истории просмотра и предпочтений. Модель будет обучаться на наборе данных рейтингов фильмов, предоставленных веб-сайтом MovieLens, который содержит 58 000 фильмов от 280 000 пользователей. Модель будет использовать методы совместной фильтрации для предоставления указанных рекомендаций.

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

Реализация: Проект будет реализован на Python с использованием популярной библиотеки машинного обучения Surprise. Модель будет обучена и протестирована с использованием набора данных MovieLens, а затем реализована на сконструированной функции, чтобы составить 5 лучших рекомендаций фильмов с наивысшими рейтингами.

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

Очистка данных

Прежде всего, будучи прилежным начинающим Data Scientist, я должен был убедиться, что набор данных, с которым я работал, был чистым и готовым к любой EDA, используя Movies.csv и ratings.csv, поскольку они содержат все, что нам нужно для системы рекомендаций.

  • Было несколько дублированных фильмов с одинаковым идентификатором фильма, поэтому я уже знал, что должен удалить эти записи.
  • Разделение объекта заголовка, чтобы я мог создать новый столбец, чтобы указать год выпуска фильма.
  • При объединении рейтингов и CSV-файлов фильмов они были затенены значениями NaN/Null, поскольку было несколько фильмов без года или с записанным рейтингом.

Анализ ЭДА

Учитывая, что я сосредоточился на методах совместной работы с пользователями, элементами и фильмами, мне нужно было создать файл, содержащий все 3, которые можно найти в файле clean_movie_ratings.csv.

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

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

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

Более 50% всех оценок находятся в диапазоне от 3 до 4, что может создать проблему, поскольку, как и в случае с совместной фильтрацией, нам необходимо иметь распределенные значения, чтобы делать более точные прогнозы на основе оценок пользователей.

Реализация модели и производительность

СлоупОдин

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

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

KNNБазовый уровень

Моей лучшей моделью была KNNBaseline из библиотеки Surprise, использующая традиционный алгоритм k-NN, прогноз рейтинга пользователя по элементу рассчитывается как средний рейтинг k-ближайших соседей элемента, где соседи определяются на основе схожести оценок предметов.

Алгоритм базовой линии KNN решает эти проблемы путем включения базовой оценки в процесс прогнозирования. Базовая оценка рассчитывается как среднее значение всех оценок элемента и вычитается из оценки каждой пары пользователь-элемент.

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

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

Заключительная рекомендация

Как только у меня появилась самая эффективная модель, я создал функцию, которая выбирает 5 самых популярных фильмов для случайного пользователя, в данном случае это был userId[10]. Ниже приведены первые 5 фильмов, оцененных пользователем, а также жанры, которые пользователь обычно смотрит.

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

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

Используемые библиотеки

  • Нампи
  • Сюрприз
  • Панды
  • Матплотлиб
  • Соленый огурец