Предсказание рейтинга настольных игр, на основании данных BGG
1. Постановка цели и описание данных
2. Краткая информация о данных
3. Этапы работы над проектом
4. Результат
Данные: данные взяты с платформы Kaggle, данные о рейтинге настольных игр с сайта BGG
Цель: предсказать рейтинг настольной игры и понять, какие признаки оказывают на него сильнейшее влияние.
Данные уже содержат в себе rating, так что задача относится к классу задач Машинного обучения с учителем, и предсталяет собой построение регрессии:
- Обучение с учителем: у нас есть как все необходимые признаки, на основе которых выполняется предсказание, так и сам целевой признак.
- Регрессия: будем считать, что рейтинг настольной игры - это непрерывная величина.
В конечном итогенужно построитькак можно более точную модель, которая на выходе дает легкоинтерпретируемые результаты, то есть мы сможем понять на основании чего модель делает тот или иной вывод.
Метрика качества
Результаты оцениваются по метрике MAE.
MAE расшифровывается выражение как cредняя абсолютная ошибка.
Это функция потерь, используемая в регрессионных моделях. MAE - это сумма абсолютных значений разностей между целевой переменной и переменной-предиктором. Следовательно, он измеряет средний размер ошибки в наборе прогнозов независимо от направления ошибки. Диапазон потерь также составляет от 0 до ∞.
На платформе доступно несколько собранных датасетов. Для своей работы мы возьмем основной basic_data. В датасете собраны данные о 286186 настольных игр.
На платформе описания признаков нет, поэтому постараемся самостоятельно описать признаки:
- name - название настольной игры
- description - описание настольной игры
- thumbnail - миниатюра
- image - изображение
- rating - рейтинг, наша целевая переменная
- bayes_rating - байесовский рейтинг
- usersrated - кол-во голосов
- bggrank - ранг BGG
- stddev - стандартное отклонение
- owned - кол-во владельцев игры
- trading - кол-во продающих
- wanting - кол-во пользователей, желающих сыграть в игру
- wishing - кол-во пользователей, желающих приобрести игру
- numweights - кол-во пользователей, указавших вес игры (сложность)
- averageweight - средний вес игры (сложность)
- yearpublished - год выпуска игры
- minplayers - минимальное кол-во игроков
- maxplayers - максимальное кол-во игроков
- playingtime - игровое время партии (обычно указывается производителем)
- minplaytime - минимальное время партии
- maxplaytime - максимальное время партии
- age - минимальный возраст игроков
В общем случае процесс решения задач возникающих в Машинном обучении состоит из следующих этапов:
- Очистка и форматирование данных
- Предварительный анализ данных и создание новых признаков
- Анализ полезности признаков
- Сравнение качества работы нескольник моделей, подбор гиперпараметров
- Обучение с библиотекой LightAutoML на обработанных данных и на исходном датасете
- Итоговое представление результатов работы
Была сделана довольно большая работа по обработке признаков. Найдены зависимости в признаках и отобраны значимые.
Подбор моделей: на примере простой модели LinearRegression, MAE = 1.19, строились выводы об успешности моделей.
RandomForestRegressor, MAE: 0.69 (Подбор гиперпараметров через GridSearchCV)
CatBoostRegressor, MAE: 0.71 (Подбор гиперпараметров через RandomizedSearchCV)
GradientBoostingRegressor, MAE: 0.77
LightGBMRegressor, MAE: 0.71 (Подбор гиперпараметров через RandomizedSearchCV)
Blanding with RandomForestRegressor and CatBoostRegressor, MAE: 0.69
Лучшие результаты получились с использованием библиотеки LightAutoML:
- на обработаннм датасете MAE: 0.67
- на исходном датасете MAE: 0.40
Вывод: Скорей всего в исходных данных LightAutoML нашла зависимости, которые я не заметила или удалила, посчитав выбросами или обычными пропусками. Для улучшения прогноза рейтинга, стоит внимательнее поработать с исходными данным и постараться сгенерировать признаки более коррелируемые с целевой переменной.