Рекомендательные системы

В ходе проектной работы были разработаны две рекомендательные системы. Для их совершенствования были отобраны и применены наиболее влиятельные характеристики фильмов, выбор которых будет объяснен далее. В проекте помимо самих рекомендательных систем, вы увидете разработанный нами холодный старт (для двух случаев) и подробное объяснение его функционирования.

Участники проекта и их роли: Старостин Николай – руководитель группы, главный помощник и редактор работ, разработка рекомендательной системы (коллаборативная фильтрация). Кустова Ксения – сбор и анализ дополнительных данных, выявление весомых характеристик для фильма, помощь другим участникам. Тетер Анастасия – кластерный анализ сети жанров, текстовый анализ, помощь другим разработчикам. Быханова Кристина – сбор и анализ дополнительных данных, расчет коэффициентов регрессии, выявлении наиболее значимых факторов, подготовка презентации. Бухаринова Дарья – разработка рекомендательной системы (характеристики фильмов), кластерный анализ сети жанров и расчет ассортативности.

Выявление значимых характеристик - анализ дополнительных данных

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

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

Есть ли зависимость между оценками фильма и его возрастным рейтингом?

Как можно заметить из графика между оценкой фильма и его возрастным рейтингом есть прямая связь. Иными словами, чем выше возрастной рейтинг - тем ниже оценка фильма. Так, фильмы предназначенные для всех возрастов обладают самой высокой медианной оценкой. В целом, такое явление объяснить просто: в этих фильмах отсутствуют насилие, наркотики, неприличные выражения и грубости. Данные фильмы приятно смотреть в любом возрасте. Соответственно, чем выше возрастной рейтинг фильма тем больше в нем насилия, наготы, ругательств, что существенно снижает медианную оценку фильму. Таким образом, в нашей рекомендательной системе одной из характеристик фильмов, по которой его можно рекомендовать, будет - возрастной рейтинг.

Влияет ли наличия оскара или номинация на него на оценку с фильмом?

Рассмотрев график, можно сделать важный и значительный вывод: от наличия оскара или номинации на него зависит оценка фильма. Так, фильмы получившие Оскар в той или иной номинации практически не имеют оценки ниже 4. В то время как фильмы, номинированные на Оскар не имеют оценки выше 4, а их медианная оценка чуть выше 3,75. Самыми низкими оценками от 3,125 и почти до 3,75 обладают фильмы не участвующие в Оскаре.

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

В результате поиска дополнительной информации были найдены также следующие переменные: imdb rating, original source.

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

Название фильма Средний рейтинг Средний рейтинг IMDB
The Sixth Sense 4.322085 4.05
The Silence of the Lambs 4.307535 4.30
Braveheart 4.284385 4.20
Batman Begins 4.242993 4.15
Sense and Sensibility 4.231275 3.85

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

##Кластеризация по жанрам

Проанализируем сеть фильмов по жанрам:

Посмотрим на распределение силы связи между фильмами:

Мы можем попробовать удалить все связи, у которых сила ниже 0.03.

Разделим все вершины на кластеры с помощью методов сетевого анализа. Изображение кластеров:

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

Movie ID Cluster Title Genre
357 1 House of Sand and Fog Drama
491 1 Torn Curtain Mystery
491 1 Torn Curtain Thriller
535 1 The Alamo Western
535 1 The Alamo History
535 1 The Alamo War
55 1 Jade Action
55 1 Jade Thriller
55 1 Jade Mystery
55 1 Jade Romance
401 1 Halloween 5: The Revenge of Michael Myers Horror
401 1 Halloween 5: The Revenge of Michael Myers Thriller
482 1 Frida Drama
482 1 Frida Romance
334 1 The Pacifier Action

В кластере 1 в основном встречаются драмы и триллеры.

Movie ID Cluster Title Genre
225 2 The Cookout Comedy
225 2 The Cookout Drama
252 2 Stuart Little 2 Family
252 2 Stuart Little 2 Adventure
252 2 Stuart Little 2 Animation
252 2 Stuart Little 2 Comedy
285 2 The Devil’s Own Crime
285 2 The Devil’s Own Thriller
285 2 The Devil’s Own Drama
289 2 The Avengers Science Fiction
289 2 The Avengers Action
289 2 The Avengers Adventure
528 2 The Hitchhiker’s Guide to the Galaxy Adventure
528 2 The Hitchhiker’s Guide to the Galaxy Comedy
528 2 The Hitchhiker’s Guide to the Galaxy Family

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

Movie ID Cluster Title Genre

В кластере 5 представлен только один фильм - Рембо: первая кровь часть2, который совмещает в себе триллер, экшн, приключения и военную тематику. Это может значить, что в нашем датасете нет фильмов, которые по жанрам тесно перекликались бы с этой частью Рембо.

Кластеризация по компаниям производителей

Проанализируем сеть компаний производителей фильмов:

Снова посмотрим на распределение силы связи между фильмами:

На этот раз удалим все связи, у которых сила ниже 0.07.

Разделим все вершины на кластеры с помощью методов сетевого анализа. Изображение кластеров:

У нас образовалось 37 кластеров по разным компаниям производителей. Как и в предыдущие разы, некоторые кластеры отделены более четко, а некоторые смешаны с другими. Но в то же время, здесь присутствует разбиение кластеров на 2 группы, между которыми вообще не существует какой-либо связи. То есть, условно можно поделить все компании производилей на две обособленные друг от друга группы. Причем, в одной группе наблюдается более тесная связь между кластерами. В то время как в другой группе производители из разных кластеров работают более изолированно друг от друга. Стоит отметить, что в “изолированной” группе кластеры сами по себе намного меньше по размеру.

Рекомендательная система (Коллаборативная фильтрация)

Рекомендательная система на основе UBCF советует 15 фильмов, после этого применяются специальные функции, которые ранжируют эти фильмы от наиболее подходящих к наименее. На выходе показывается 3 (или немного больше из-за одинакового совпадения фильма). Пользователь может выбрать какое ограничение (из системы рейтингов Американской киноассоциации) накладывается на рекомендованные фильмы.

Оценка модели

В нашей модели не используется eval_sets, потому что мы сами рассчитываем в дальнейшем процент совпадения с предпочтениями пользователя и выбираем лучшее (аналог параметра goodRating). Соответственно мы также используем все оценки пользователей, поэтому для оценки у нас используется параметр given=-1, goodRating был оставлен на 4. Согласно таблицам оценок, метод UBCF выигрывает IBCF. Все измерения ошибок у него меньше. Также мы используем UBCF, потому что нам важнее смотреть на паттерны пользовательских оценок, которые можно не “выловить”, если использовать коллаборативную фильтрацию относительно фильмов. (первая таблица - UBCF, вторая - IBCF)

##      RMSE       MSE       MAE 
## 1.0485424 1.0994412 0.8195204
##     RMSE      MSE      MAE 
## 1.795231 3.222856 1.370556

Холодный старт (первый случай)

Был добавлен холодный старт из 15 фильмов. Они выбираются следующим образом:
1. Берутся самые популярные по количеству оценок фильмы со средней оценкой >= 3
2. Из них выбираются те, у которых более трёх жанров (это необходимо, чтобы точнее определить веса для итогового ранжирования)
3. Далее берется 5 самых популярных фильмов из каждого ограничения (PG, PG-13, R) и предлагаются пользователю на оценку.
4. Оценки добавляются в датасет ratings.
5. Пользователь, проходивший холодный старт должен ввести ID 100.
(так как постичь shiny не удалось, придется вводить вектор с оценками ручками) Ниже можно увидеть таблицу с новыми оценками.

Выбор ограничения по рейтингу

Было решено оставить их, так как остальных мало.

Процент совпадения

Процент совпадения с предпочтениями пользователя расчитывается после ранжирования фильма. Вместе с теми же весами, которые используются для ранжирования, рассчитывается вес “идеальной комбинации жанров”. Для этого берется среднее количество жанров оцененных фильмов (например, 3.66), после берется сумма из n (1:3) элементов наибольших весов, к этой сумме добавляется n+1 (4) элемент, который домножается на среднее - n (3.66-3). Это и будет нужный вес. Далее веса предсказанных фильмов делятся на идеальный и умножаются на 100%. Из-за особенностей формулы, если у фильма много жанров, то его Match может быть больше 100%

Примеры рекомендаций. Первая система

Пользователю 3101 нравятся фильмы с рейтингом PG-13, R, система порекомендовала ему два фильма PG-13 и один R, что по-моему достаточно точно.
Reccomendation for user 3101. MPAA rating: Nevermind.
Movie Title Match
10 Things I Hate About You 93%
Something’s Gotta Give 93%
Road to Perdition 82%

Пользователю, проходившему холодный старт выдало фильмы, которые понравились (по описанию, и некоторые по результату просмотра) человеку, который его проходил.
Reccomendation for user 100. MPAA rating: Nevermind.
Movie Title Match
Spy Kids 85%
Being John Malkovich 57%
National Lampoon’s Vacation 52%


Пользователь с id 1401399 в целом ставит хорошие оценки фильмам, однако наилучшие оценки он ставит фильмам PG-13, 2 из 3 рекомендованных фильмов оказались с рейтингм PG-13, последний с рейтингом PG.
Reccomendation for user 1401399. MPAA rating: Nevermind.
Movie Title Match
The Santa Clause 96%
Bend It Like Beckham 94%
Something’s Gotta Give 94%

Ну и парочка других примеров различных рекомендаций без подробной проверки.
Reccomendation for user 2103655. MPAA rating: PG-13.
Movie Title Match
The Sixth Sense 92%
10 Things I Hate About You 89%
Something’s Gotta Give 89%
Reccomendation for user 1854652. MPAA rating: PG.
Movie Title Match
The Santa Clause 100%
The Pacifier 100%
Annie 100%
Reccomendation for user 16229. MPAA rating: R.
Movie Title Match
Chasing Amy 100%
The English Patient 77%
The Prince of Tides 75%

Текстовый анализ

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

Genres Count Keyword
Action 10 revenge
Action 10 duringcreditsstinger
Adventure 7 duringcreditsstinger
Science Fiction 11 alien
Drama 32 independent film
Romance 17 woman director
Thriller 15 murder
Animation 4 musical
Family 6 musical
Family 6 holiday
Mystery 10 murder
Crime 14 murder
Comedy 28 independent film
War 4 soldier
Fantasy 6 witch
Horror 9 murder
Music 4 musical


Рекомендательная модель (характеристики фильмов)

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

Характеристики:

  • Жанр
  • Популярность
  • Год выпуска (по десятилетиям)
  • Настроение по тексту
  • Возрастной рейтинг
  • Наличие оскара

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

Почему важно включать год фильма в наш анализ?

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

По точечной диаграмме видно, что:

    • почти все отзывы выше 2,5, значит плохие оценки ставят редко. Большая часть фильмов имеет средний рейтинг от 3,5 до 4, что выше среднего (средний рейтинг по всем фильмам обозначен пунктиром)
    • до 1950 года средний рейтинг фильмов вообще строго выше трех. Старые фильмы редко оценивают, но если оценивают то хорошо. (Можно предположить, что раньше кино снимали лучше, но одних данных о рейтинге для такого громкого вывода недостаточно)
    • после 1950 года оценки стали иметь больший размах и их стали выставлять чаще.Люди стали делиться и негативным впечатлением от просмотра.
    • максиальная средняя оценка находится в районе 4,3. Фильмов со средними оценками выше 4 достаточно мало. Я думаю, можно считать такую оценку определенным “знаком качества”
    • линия тренда показывает взаимосвязь

Почему важно включать популярность фильма в наш анализ?

Для этого проведем тест Спимана на корреляцию между средней оценкой и поплярностью фильма.

## 
##  Spearman's rank correlation rho
## 
## data:  data_meta$mean_rate and data_meta$popularity
## S = 8761600, p-value = 1.343e-11
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##       rho 
## 0.3199972

По результатам теста, остаточная вероятность приняла очень маленькое значение, значит гипотеза о равенстве коэффициента корреляции нулю отвергается. Полученный коэффициент корреляции составил примерно 0,32. Эту характеристику стоит использовать в content-based рекомендательной системе.

Приведем таблицу с данными к широкому формату, с которым дальше будет удобно работать.

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

Movie_id Score (from -5 to 5)
3 0.5000000
24 -1.7142857
30 0.5714286
45 3.0000000
55 -1.0000000
60 -2.0000000
Составляем матрицу схожести всех фильмов, используя косинусное расстояние между векторами характеристик фильмов, можно отобрать самые подходящие в качестве рекомендации. Вводим id пользователя, чтобы получить рекомендацию. (выбрали пользователя с ID 2140261)
Movie ID Customer ID Rating Date_rate Year Title
1865 2140261 5 2005-05-20 2004 Eternal Sunshine of the Spotless Mind
2122 2140261 5 2005-05-20 1999 Being John Malkovich
2862 2140261 5 2005-05-20 1991 The Silence of the Lambs

Холодный старт (для второго случая)

В качестве холодного старта для пользователей у которых нет оценок 5, будем использовать оценки 4, а если их нет или оценок нет вообще, будем рекомендовать самые популярные фильмы. Выбираем id пользователя, например, 2140261 У него достаточно много оценок по 5 баллов. Порекомендуем ему 5 фильмов, чтобы он мог смотреть их после работы каждый день рабочей недели :) Этому пользователю нравились странные драмы, и система порекомендовала ему странные драмы (да, бетмен тоже драма)

Title
Batman Begins
The Pianist
The Passion of the Christ
Bridget Jones’s Diary
Sideways

Итог:

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