Рекомендательные системы
В ходе проектной работы были разработаны две рекомендательные системы. Для их совершенствования были отобраны и применены наиболее влиятельные характеристики фильмов, выбор которых будет объяснен далее. В проекте помимо самих рекомендательных систем, вы увидете разработанный нами холодный старт (для двух случаев) и подробное объяснение его функционирования.
Участники проекта и их роли: Старостин Николай – руководитель группы, главный помощник и редактор работ, разработка рекомендательной системы (коллаборативная фильтрация). Кустова Ксения – сбор и анализ дополнительных данных, выявление весомых характеристик для фильма, помощь другим участникам. Тетер Анастасия – кластерный анализ сети жанров, текстовый анализ, помощь другим разработчикам. Быханова Кристина – сбор и анализ дополнительных данных, расчет коэффициентов регрессии, выявлении наиболее значимых факторов, подготовка презентации. Бухаринова Дарья – разработка рекомендательной системы (характеристики фильмов), кластерный анализ сети жанров и расчет ассортативности.
Выявление значимых характеристик - анализ дополнительных данных
Перед тем как перейти к рекомендательным системам, мы выявим значимые характеристики фильмов, которые были применены для совершенствования рекомендательных систем. А также выявили те, что не подходят, то есть являются бесполезными для её усовершенствования.
В качестве дополнительных данных была добавлена такая информация как: режиссер фильма, сценарист фильма, актерский состав, возрастной рейтинг и главная звезда.
Есть ли зависимость между оценками фильма и его возрастным рейтингом?
Как можно заметить из графика между оценкой фильма и его возрастным рейтингом есть прямая связь. Иными словами, чем выше возрастной рейтинг - тем ниже оценка фильма. Так, фильмы предназначенные для всех возрастов обладают самой высокой медианной оценкой. В целом, такое явление объяснить просто: в этих фильмах отсутствуют насилие, наркотики, неприличные выражения и грубости. Данные фильмы приятно смотреть в любом возрасте. Соответственно, чем выше возрастной рейтинг фильма тем больше в нем насилия, наготы, ругательств, что существенно снижает медианную оценку фильму. Таким образом, в нашей рекомендательной системе одной из характеристик фильмов, по которой его можно рекомендовать, будет - возрастной рейтинг.
Влияет ли наличия оскара или номинация на него на оценку с фильмом?
Рассмотрев график, можно сделать важный и значительный вывод: от наличия оскара или номинации на него зависит оценка фильма. Так, фильмы получившие Оскар в той или иной номинации практически не имеют оценки ниже 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 не удалось, придется вводить вектор с оценками ручками) Ниже можно увидеть таблицу с новыми оценками.
Выбор ограничения по рейтингу
- PG - Детям рекомендуется смотреть фильм с родителями.
- PG-13 - Просмотр не желателен детям до 13 лет.
- R - Лица, не достигшие 17-летнего возраста, допускаются на фильм только в сопровождении одного из родителей, либо законного представителя.
- Nevermind - Рейтинг не важен
Было решено оставить их, так как остальных мало.
Процент совпадения
Процент совпадения с предпочтениями пользователя расчитывается после ранжирования фильма. Вместе с теми же весами, которые используются для ранжирования, рассчитывается вес “идеальной комбинации жанров”. Для этого берется среднее количество жанров оцененных фильмов (например, 3.66), после берется сумма из n (1:3) элементов наибольших весов, к этой сумме добавляется n+1 (4) элемент, который домножается на среднее - n (3.66-3). Это и будет нужный вес. Далее веса предсказанных фильмов делятся на идеальный и умножаются на 100%. Из-за особенностей формулы, если у фильма много жанров, то его Match может быть больше 100%
Примеры рекомендаций. Первая система
Пользователю 3101 нравятся фильмы с рейтингом PG-13, R, система порекомендовала ему два фильма PG-13 и один R, что по-моему достаточно точно.| Movie Title | Match |
|---|---|
| 10 Things I Hate About You | 93% |
| Something’s Gotta Give | 93% |
| Road to Perdition | 82% |
Пользователю, проходившему холодный старт выдало фильмы, которые понравились (по описанию, и некоторые по результату просмотра) человеку, который его проходил.
| Movie Title | Match |
|---|---|
| Spy Kids | 85% |
| Being John Malkovich | 57% |
| National Lampoon’s Vacation | 52% |
| Movie Title | Match |
|---|---|
| The Santa Clause | 96% |
| Bend It Like Beckham | 94% |
| Something’s Gotta Give | 94% |
Ну и парочка других примеров различных рекомендаций без подробной проверки.
| Movie Title | Match |
|---|---|
| The Sixth Sense | 92% |
| 10 Things I Hate About You | 89% |
| Something’s Gotta Give | 89% |
| Movie Title | Match |
|---|---|
| The Santa Clause | 100% |
| The Pacifier | 100% |
| Annie | 100% |
| 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 |
| 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 |
Итог:
Таким образом, были разработаны две рекомендательные системы, которые были дополнены жанровыми весами. Также было разработано два варианта холодного старта для разных случаев. В целом модели перспективны, при дальнейшем исследовании можно было бы их совершенствовать, применяя информацию о пользователях.