Угадай меня, если сможешь: прогнозирование рейтинга фильма до его выхода |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2019-09-11 09:22 Недавно мне на глаза попался датасет на Kaggle с данными о 45 тысячах фильмов с Full MovieLens Dataset. Данные содержали не только информацию об актерах, съемочной команде, сюжете и т.п., но и оценки, выставленные фильмам пользователями ресурса (26 миллионов оценок от 270 тыс.пользователей). Стандартная задача для таких данных — это рекомендательная система. Но мне в голову почему-то пришло прогнозирование рейтинга фильма на основе информации, доступной до его выхода. Я не знаток кинематографа, и поэтому обычно ориентируюсь на рецензии, выбирая что посмотреть из новинок. Но ведь рецензенты тоже несколько biased — они-то смотрят гораздо больше разных фильмов, чем рядовой зритель. Поэтому спрогнозировать, как оценит фильм обычная публика, показалось занятным.
Итак, набор данных содержит следующую информацию:
Использованный в статье код (python) доступен на github. Предварительная фильтрация данных Полный массив содержит данные о более чем 45 тысячах фильмов, но так как задача — спрогнозировать рейтинг, нужно убедиться в объективности оценок конкретного фильма. Например, в том что его оценили достаточно много людей. Оставим для анализа фильмы с 50+ оценками. Кроме того, удалим фильмы, вышедшие до начала работы рейтингового сервиса (1996 год). Тут проблема в том, что современные фильмы оцениваются в среднем хуже, чем старые, просто потому что среди старых фильмов смотрят и оценивают лучшее, а среди современных — всё. В итоге финальный массив содержит около 6 тыс. фильмов. Используемые фичи Будем использовать несколько групп фич:
Некоторая занимательная статистика Документальные фильмы получают самые высокие оценки. Это хороший повод заметить, что разные фильмы оценивают разные люди, и если бы документальные фильмы оценивали любители экшна, то возможно результаты были бы другие. То есть оценки смещены из-за изначальных предпочтений публики. Но для нашей задачи это не принципиально, так как мы хотим прогнозировать не условно объективную оценку (как если бы каждый зритель посмотрел все фильмы), а именно ту, которую фильму даст его аудитория. Вероятно, это можно объяснить так:
Оценка фильма мало зависит от бюджета Для некоторых фильмов указан нулевой бюджет — вероятно, нет данных Самые высокие оценки у самых коротких и самых длинных фильмов Для некоторых фильмов указана нулевая длительность — вероятно, нет данных Результаты на разных наборах фич Наша задача — прогнозирование рейтинга — задача регрессии. Протестируем три модели — линейная регрессия (как baseline), SVM и XGB. В качестве метрики качества выберем RMSE. На графике ниже показаны значения RMSE на валидационном сете для разных моделей и разных наборов фич (хотелось понять, стоило ли морочиться с ключевыми словами и с Оскарами). Все модели построены с базовыми значениями гиперпараметров. Анализ ошибок и заключительные комментарии Будем считать ошибки меньше 5% маленькими (таких около трети), а ошибки больше 20% — большими (таких примерно 10%). В остальных случаях (чуть больше половины) будем считать ошибку средней. Две из этих фич относятся к “Оскарам”, на которые ранее были номинированы либо члены команды (режиссер, продюсер, сценарист, оператор), либо фильмы, в которых снимались актеры. Как говорилось выше, ошибка прогноза связана с оценкой фильма, и в этом смысле предыдущие номинации на “Оскар” могут быть хорошим разграничителем для модели. И действительно, фильмы, у которых в активе есть хотя бы одна номинация на “Оскар” (среди актеров или команды) имеют среднюю ошибку прогноза 8.3%, а те, у которых нет таких номинаций — 9.8%. Из топ-10 фич, использованных в модели, именно номинации на “Оскар” дают наилучшую связь с размером ошибки. Поэтому возникла идея построить две отдельные модели: одну для фильмов, у которых актеры или команда номинировались на “Оскар”, и вторую для остальных. Идея была в том, что это может уменьшить общую ошибку. Однако эксперимент не удался: общая модель давала RMSE 0.706, а две отдельные — 0.715. Поэтому оставим изначальную модель. Показатели ее точности по итогу такие: RMSE на тренинговой выборке — 0.688, на валидационной — 0.706, и на тестовой — 0.732. То есть, наблюдается некоторый оверфиттинг. В самой модели уже были установлены параметры регуляризации. Еще одним способом уменьшения оверфиттинга мог бы стать сбор большего количества данных. Чтобы понять, поможет ли это, построим график ошибок для разных размеров тренинговой выборки — от 100 до максимально доступных 3 тыс. Из графика видно, что начиная примерно с 2,5 тыс точек в тренинговом сете, ошибки на тренинговом, валидационном и тестовом сете меняются мало, то есть увеличение выборки не окажет значительного эффекта. Что еще можно попробовать для доработки модели:
Интересно, что самая большая ошибка прогноза (7 прогнозных баллов вместо 4.2 реальных) — у фильма “Бэтмэн и Робин” 1997 года. Фильм с Арнольдом Шварцнеггером, Джорджем Клуни и Умой Турман получил 11 номинаций (и одну победу) премии “Золотая малина”, возглавил список 50 худших фильмов за всю историю от киножурнала Empire и привел к отмене сиквела и перезапуску всей серии. Ну что же, тут модель, пожалуй, ошиблась совсем как человек :) Источник: habr.com Комментарии: |
|