Безусловно, исследование этого проекта было моим фаворитом на сегодняшний день. Если вы фанат или хотя бы просматривали некоторые соревнования Kaggle, то, возможно, вы видели испытание «Предсказание победы в PUBG». Конкуренция давно миновала, но я хотел заняться этим, потому что игры и индустрия - интересное и захватывающее предприятие.
Сами по себе данные довольно устрашающие… ~ 4,5 миллиона наблюдений только в обучающем наборе данных и еще ~ 1,5 миллиона в тестовом наборе. Я уже слышал, что наборы данных Kaggle были довольно чистыми, но этот набор данных был почти безупречным. Только одно… и я имею в виду буквально одно нулевое значение во всем наборе данных. Моей первоначальной мыслью было: «Это будет легкий ветерок», но я хотел тщательно пройти этапы очистки и исследования процесса OSEMiN (получение, очистка, исследование, модель, iNterpret). Здесь я узнал, что чистые данные не обязательно означают готовые данные.
После первоначального исследования функций я заметил, что было несколько типов матчей (соло, дуэт, отряд), которые были частью набора данных. Поиграв в игру, я знал, что в каждом режиме будут разные функции, которые будут иметь большее значение для этих матчей (командный против одиночного игрока). Итак, для меня первым шагом было разделение данных на соло, дуэт и отряд. Это сократило мой набор данных до гораздо более управляемых ~ 550 тыс. Наблюдений.
После запуска метода .describe () для просмотра основной статистической информации именно здесь я заметил первое препятствие. 0 с. Сотни тысяч нулей в данных. Почему? Когда разыгрывается матч, начинается огненная буря смерти и разрушения. Те игроки, которые были убиты немедленно, будут иметь в основном нули в столбцах функций. Когда вы приписываете, что более 20% игроков убиты в первые 5 минут, вы получите кучу нулей в данных.
Затем были данные категориального характера. Для прогнозирования выигрыша мне требовалась логистическая регрессия или классификатор, поэтому приходилось использовать категориальные данные. Ничего страшного, категориальные данные не имели отношения к победе, только идентификационная информация.
Затем я визуализировал данные с помощью гистограмм и коробчатых диаграмм. Гистограммы подтвердили, что данные были сильно смещены в сторону 0-го конца спектра. Это также повлияло на то, как будут выглядеть коробчатые диаграммы. Поскольку большинство данных было равным 0, если бы функции потенциально могли достигать сотен или даже тысяч, визуализация выглядела бы далекой, что и произошло. Некоторые функции даже имели обширные отклонения. Хотя отчасти это было из-за дисбаланса, я хотел немного опустить некоторые функции. Итак, небольшая настройка параметров для фрейма данных и готово!
Теперь поговорим о мультиколлинеарности. Тепловая карта обычно рассказывает всю историю, и здесь была пара функций, у которых не было значений, и пара, которые сильно коррелировали друг с другом, поэтому функция, которая, как я определил, с меньшей вероятностью повлияла на модель, была удалена.
Тем не менее, оставалась проблема дисбаланса. Только 1% данных представлял победителей, и это была цель. К счастью, у нас есть SMOTE. SMOTE - это удобный небольшой пакет, который выполняет повторную выборку данных, чтобы помочь сбалансировать их. Он предварительно настроен на выбор «не большинства» данных для повторной выборки, но при необходимости это можно изменить. Плюс ... более сбалансированный набор данных, обратная сторона ... Я почти удвоил количество наблюдений, что означало дополнительные расходы на вычисления в будущем.
Дело в том, что просто потому, что набор данных чистый (как и большинство из них на Kaggle), не забывайте исследовать и очищать данные. С внесенными небольшими изменениями окончательная модель для моих соло-данных была протестирована с точностью 99,48%. Полный блокнот доступен в моей кроватке Github…. Https://github.com/Jason-M-Richards/Winning-at-PUBG-Binomial-Classification-. Это было в образовательных целях, но я планирую пересмотреть и закончить модели для других типов соответствий и представить их все. Информация о конкурсе находится по адресу https://www.kaggle.com/c/pubg-finish-placement-prediction.