Когда встал вопрос "о чем писать диплом", я точно знала, что не хочу писать о чем-то скучном или неинтересным для меня. Было много идеи (не только про аниме) и даже в сфере аниме - не только про задачу прогнозирования. Когда уже надо было утверждать тему, на одной из лекции как раз рассказывали про задачи классификации и прогнозирования. Я знала, что уже есть вагон и маленькая тележка статей про прогнозирование в области фильмов, но в аниме? Критически мало. И я решила это исправить)
Зачем это нужно?
Современная индустрия анимации, особенно японская (аниме), переживает беспрецедентный рост популярности во всем мире. Международный рынок аниме вырос в три раза с 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.
Смысл приложения заключается в сборе и обработке входных параметров. Затем они подставляются в расширенную формулу прогноза и в результате мы получаем ожидаемый рейтинг аниме по входным параметрам.
Архитектура на основе фрагментов:
PredictFrag нужен для ввода и запоминания рейтинга манги, а также для вызова класса ReadData, который получает json с сервера, парсит его и обновляет данные во всех фрагментах.
StudioFrag вместе с адаптером StudioAdapter дает возможность найти по поиску студию и выбрать её, одновременно запоминая название, дисперсию и её рейтинг.
GenreFrag в паре с адаптером GenreAdapter позволяет найти по поиску и выбрать один или несколько жанров, одновременно запоминая название, дисперсию и рейтинг выбранных параметров.
AdditionalParametrs нужен для выбора дополнительных параметров: темы, возрастного ограничения и демографии. Можно ничего не выбирать, или выбрать любую комбинацию этих параметров. Дисперсия и рейтинг для выбранных параметров запоминаются.
ResultFrag используется для конечного расчета формулы и её вывода.
Технологический стек:
Библиотека okhttp3 для сетевых запросов
Адаптеры для динамических списков
Минимальная версия API: 26 (Android 8.0)
Таким образом, приложение состоит из 5 фрагментов: ввод рейтинга манги, выбор жанра или несколько жанров, выбор студии, ввод дополнительных параметров и вывод полученного прогноза. Всё приложение построено интуитивным для пользователя и сопровождается уточняющими надписями и подсказками.


Пример работы: для аниме "Yubisaki to Renren" (ID 55866) с параметрами:
Студия: Ajia-do
Жанр: Romance
Рейтинг манги: 8.49
Тема: Adult Cast
Возрастной рейтинг: PG-13
Демография: Shoujo
Результаты прогноза:
Без доп. параметров: 9.08
С доп. параметрами: 8.28
Реальный рейтинг: 8.27 (на момент мая 2024 года)

Вот и все! Неплохая получилась история
В результате проделанной работы было создано приложение на языке программирования Java, которое создает наборы данных и реализует математическую модель для предсказания рейтингов. Также было создано мобильное приложение на базе ОС Android, осуществляющее взаимодействие с пользователем и вывод результирующего прогноза рейтинга.
RMSE модели на выборке за 2023 год составляет 0.3. Для спрогнозированных рейтингов за зиму 2024 RMSE = 0.4. Тонкая настройка констант и интервалов в конечной формуле может сильно снизить RMSE, рекомендуется их настраивать хотя бы раз в сезон.
В заключение хочу сказать, что это была очень интересная работа, которую я сделала за несколько месяцев в порыве вдохновения) Ознакомиться с кодом можно на гитхабе.