Как стать автором
Обновить

Узнаём какое аниме будет самым рейтинговым еще до выхода

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров8.5K

Когда встал вопрос "о чем писать диплом", я точно знала, что не хочу писать о чем-то скучном или неинтересным для меня. Было много идеи (не только про аниме) и даже в сфере аниме - не только про задачу прогнозирования. Когда уже надо было утверждать тему, на одной из лекции как раз рассказывали про задачи классификации и прогнозирования. Я знала, что уже есть вагон и маленькая тележка статей про прогнозирование в области фильмов, но в аниме? Критически мало. И я решила это исправить)


Зачем это нужно?

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

Японский рынок анимации в глобальном контексте (в миллиардах иен)
Японский рынок анимации в глобальном контексте (в миллиардах иен)

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

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

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

  • Инвесторам минимизировать риски при финансировании

  • Платформам распределения контента принимать обоснованные решения о приобретении прав

Особенностью аниме-индустрии является строгая сезонность выпуска произведений - каждые три месяца одновременно выходит около 30 новых работ. Эта особенность делает аниме идеальным объектом для анализа и прогнозирования, так как позволяет сравнивать произведения в сопоставимых условиях.

Создание датасета

Датасет формируется на основе сайта MyAnimeList (MAL) с помощью запросов через api jikan.moe. MAL представляет собой каталог аниме и манги (литературный первоисточник). Он хранит информацию о более чем 17,5 тысячах аниме.  В результате был сформирован датасет только из тех произведений, для которых известны все 7 параметров. В данном подходе выделяются три основных параметра: рейтинг первоисточника, жанр и студия, и дополнительные параметры: тема, возрастное ограничение и демография. Получившийся набор данных хранится в формате csv.

Описание параметров в датасете
Описание параметров в датасете
Пример получившейся таблицы
Пример получившейся таблицы

Анализ данных

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

Распределение рейтингов
Распределение рейтингов

Рейтинг аниме в среднем на 0.5 балла ниже рейтинга манги.

Распределение разницы между рейтингами аниме и манги
Распределение разницы между рейтингами аниме и манги

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

Сравнительная таблица важности признаков по разным методам
Сравнительная таблица важности признаков по разным методам

Также стояла задача выявления важности признаков, чтобы мы могли присвоить наиболее важным признаком больший вес в конечной формуле. Для выявления важности признаков использовались такие методы, как тепловая карта, дисперсионный анализ, Random Forest и XGBoost. На рисунке представлена сравнительная таблица важности признаков по разным методам, с помощью которой выделяем наиболее важные параметры цифры в ячейках от 1 до 6 - это значимость параметра по соответствующему методу. В столбце «Result» всем параметрам указана результирующая важность, рассчитанная как среднее арифметическое. Наиболее значимыми параметрами оказались: рейтинг манги, возрастное ограничение и жанр.

И что с этим делать?

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

Этапы предсказания для литературного первоисточника
Этапы предсказания для литературного первоисточника

Самый важный параметр для конечного прогноза является рейтинг манги. Поэтому подробнее остановимся на том, как именно рассчитывается этот параметр. На первом шаге мы находим коэффициент a и b для каждого произведения внутри таблицы (например, для таблицы зима 2022 года у нас будет 30 произведений и соответствующие им наборы коэффициентов). Затем находим дисперсию между известным рейтингом аниме из таблицы и посчитанной по формуле y=ax+b, где мы уже нашли коэффициенты. К последнему этапу мы имеем наборы коэффициентов и дисперсий для каждого сезона и с помощью них предсказываем коэффициенты и дисперсию для будущего сезона.

Этапы предсказания для других параметров
Этапы предсказания для других параметров

На рисунке представлены основные этапы прогнозирования для таких параметров, как жанр, студия, тема, возрастное ограничение и демография. Внутри каждого параметра есть свои наименовании, например, в параметре жанр будут такие наименования как комедия, ужасы, драма и так далее. У каждого наименования есть свой набор рейтингов, предположим, у жанра комедии 6 рейтингов, то есть известных данных. В таком случае, ожидаемый рейтинг для этого жанра в следующем сезоне предсказывается с помощью нейронной сети. Теперь предположим, что у жанра ужасы всего 4 известных рейтинга, в таком случае ожидаемый рейтинг для будущего сезона находится как сумма известных 4 рейтингов, деленная на размер набора, то есть на 4. И пусть в жанре драма есть только один известный рейтинг, тогда ожидаемый будет совпадать с ним.

Формулы для каждого параметра
Формулы для каждого параметра

Рассмотрим формулы для каждого параметра более подробно.

В формуле Manga параметры a и b предсказываются нейронной сетью, на основании предыдущих значений коэффициентов в аппроксимирующей линейной функции; score - введенный рейтинг манги,  D - дисперсия манги.

В формуле Studio параметры score - заранее известное значение, вычисленное с помощью нейронной сети; D - дисперсия студии.

В формуле Genre параметры аналогичны предыдущей формуле, при этом Genre может быть указан более чем 1 раз.

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

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

Формула дисперсии
Формула дисперсии
Конечная формула прогноза
Конечная формула прогноза
Расширенная формула прогноза
Расширенная формула прогноза

Также для повышения точности в модель были введены:

  • Эмпирические коэффициенты в параметре манги для разных диапазонов рейтингов манги

  • Механизм обработки параметров с малым количеством данных

  • Правила отбраковки ненадежных параметров (при D ≥ 1)

От теории к практике

Система состоит из двух основных компонентов:

1. Бэкенд (Java-приложение)

Основной функционал приложения можно разделить на три класса: создание датасета, оценка качества модели, а также формирование и отправление json-объекта, содержащего спрогнозированный значения.

  • GetInfo: сбор данных и формирование датасета

  • Processing*: предсказание параметров (6 специализированных классов)

  • FinalFormula: оценка качества модели

  • Main: координация работы системы

Ключевые технологии:

  • Фреймворк Neuroph для нейронных сетей

  • Пакеты java.net.http и org.json.simple для работы с API

  • Механизм сериализации данных в JSON

Особенностью реализации является разделение обработки для разных типов параметров:

  • Для литературных первоисточников (манги) используется линейная регрессия

  • Для других параметров (жанр, студия и др.) применяется нейронная сеть

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

2. Мобильное приложение (Android)

Для удобства пользования программы для прогнозирования было принято решение реализовать приложение на базе ОС Android.

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

Архитектура на основе фрагментов:

  1. PredictFrag нужен для ввода и запоминания рейтинга манги, а также для вызова класса ReadData, который получает json с сервера, парсит его и обновляет данные во всех фрагментах.

  2. StudioFrag вместе с адаптером StudioAdapter дает возможность найти по поиску студию и выбрать её, одновременно запоминая название, дисперсию и её рейтинг.

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

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

  5. ResultFrag используется для конечного расчета формулы и её вывода.

Технологический стек:

  • Библиотека okhttp3 для сетевых запросов

  • Адаптеры для динамических списков

  • Минимальная версия API: 26 (Android 8.0)

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

Ввод основных параметров. Фрагменты слева направо: PredictFrag, StudioFrag, GenreFrag
Ввод основных параметров. Фрагменты слева направо: PredictFrag, StudioFrag, GenreFrag
Ввод дополнительных параметров. Фрагмент AdditionalParametrs
Ввод дополнительных параметров. Фрагмент AdditionalParametrs

Пример работы: для аниме "Yubisaki to Renren" (ID 55866) с параметрами:

  • Студия: Ajia-do

  • Жанр: Romance

  • Рейтинг манги: 8.49

  • Тема: Adult Cast

  • Возрастной рейтинг: PG-13

  • Демография: Shoujo

Результаты прогноза:

  • Без доп. параметров: 9.08

  • С доп. параметрами: 8.28

  • Реальный рейтинг: 8.27 (на момент мая 2024 года)

Результаты - слева без указания дополнительных параметров, справа – с дополнительными параметрами. Фрагмент ResultFrag
Результаты - слева без указания дополнительных параметров, справа – с дополнительными параметрами. Фрагмент ResultFrag

Вот и все! Неплохая получилась история

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

RMSE модели на выборке за 2023 год составляет 0.3. Для спрогнозированных рейтингов за зиму 2024 RMSE = 0.4. Тонкая настройка констант и интервалов в конечной формуле может сильно снизить RMSE, рекомендуется их настраивать хотя бы раз в сезон.

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

Теги:
Хабы:
+14
Комментарии28

Публикации

Работа

Java разработчик
213 вакансий

Ближайшие события