Блоги

Как анализ данных может поменять игру профессиональных команд Dota 2

momuss
5

1. Какие интересные вещи может рассказать анализ данных про игру в Dota 2 и как это могут использовать проф. команды.

2. Как несколько молодых людей попробовали сделать «предсказатель» для матчей профессиональных команд в Dota и что из этого вышло.

3. Внезапно проснувшиеся графоманские наклонности автора при отсутствии навыков письма.

Intro

В один из летних вечеров июня 2016 года я и несколько моих товарищей сидели и думали о том, чем бы интересным заняться в следующие несколько месяцев. Хотелось еще пива и чего-то будоражащего мыслительную деятельность. Словом, вспомнив «доту» и мое давнее желание посмотреть что-то в киберспорте, а также то, что компания наша на 4/5 состояла из аналитиков больших данных, мы пришли к идее — модель, прогнозирующая результаты матчей Dota 2.

Собственно, хакатон @Mail.ru, проводившийся немногим ранее этой встречи, был про что-то подобное, хотя и далекое, по сути, поэтому никакой инновации мы не придумали. Но суть не в идее, а в реализации, а вот с ней-то у подавляющего большинства пытавшихся было как-то кисло.

Любой анализ больших данных (когда данных ну просто ахринеть как много) сводится к следующим простым шагам:

1. Берем много разных, связанных и не связанных между собой данных (GPM, расположение игроков, результаты матчей, пики, KDA, расстояние, которое прошел герой, урон героя за драку).

2. Спускаем на данные всякие страшные алгоритмы и пытаемся понять, какие показатели сильно влияют на вероятность победы команды, а какие — нет.

3. ???

4. Результат.

Модель нужна для того, чтобы, настроив ее раз, вы могли потом только задавать вопросы и получать ответ.

Анализ эффективности игрока:

В футболе уже используются системы, которые строят «звездочки силы» игроков, как в FIFA, только в реальной жизни. Такой системой, например, пользуется сборная Германии и страшно ей довольна.

Анализ игры команды противника:

Модель сама посмотрит все матчи противника за последние 50 лет и скажет, где он ошибается, в чем он плох и как стоит с ним поступить.

Симулирование стадии пиков:

Если я хочу пикать против xiao8, а он против меня не хочет — я сделаю своего xiao8. Из модели, которая будет пикать против меня точно в стиле «директора». И потом еще и возможный результат матча скажет, проанализировав результаты наших с ним команд.

Но это все будущее. Недалекое, но будущее.

А тем временем в июне 2016

  • Через пару месяцев — модель, которая скажет вероятность победы команды А по истории «успешности» команд А и Б, пикам, статистике.
  • Через полгода-год — полноценную машинку для оценки и повышения эффективности Dota-команд (тренировки, моделирование ситуаций, автоматический анализ игры соперников).

А) Потому что это весело;

Б) Потому что этого еще никто не сделал;

В) Может быть, когда-то это можно будет продать/использовать/обменять на пару носков.

Собрав еще пару человек, соображающих в биг дате (сам я более 10 строк на Python не изображу), мы начали изыскания. Как самый активный (и бесполезный) член команды, я взял на себя изучение мирового опыта и общую координацию работ. Дедлайном был назначен конец июля (у нас было полтора месяца до The International).

  • Прочитано порядка 30 статей и 5 книг, хоть как-нибудь связанных с анализом MOBA-игр или предсказаниями в спорте на основе данных.
  • Выгружены максимально полные описания 5 тысяч матчей профессиональных команд и 4 млн пабликов all pick, very high skill со всеми возможными атрибутами и показателями.

Ну и, собственно, все.

Из прочитанных научных работ студентов МТИ (Массачусетского технологического института (да, даже они)) и других американских и европейских универов (научная работа по «доте» в 2016 году, ну надо же), стало ясно, что даже анализируя совсем немного самых базовых показателей (KDA, GPM/XPM), можно получить верное в 55-60% предсказание. Много ли это? Достаточно. Можно ли использовать в реальной жизни для чего-то, кроме ставок? Вряд ли.

Полумеры — проявление слабости, решили мы и залили в модель параметров (информации об игре) по самое «не могу»: пики, баны, история игр с другими командами и между собой, нанесенный урон, пройденное расстояние в первые 10 минут игры и прочее, прочее.

Рэндом форест сам решит, что ему интереснее, решили мы. И ошиблись. А потом еще раз и еще раз и еще раз...

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

Что интересно, это так же справедливо для отделения среднего 3k MMR-игрока от среднего 6k MMR-игрока. А именно:

Перемещения по карте:

Игрок, чем он выше классом (хе-хе), тем он больше перемещается по карте. Особенно саппорт. Зависимость «перемещение» = «рост вероятности победы» довольно сильная.

Нахождение рядом с тиммейтами:

Тут все тоже просто. Команда больше ходит вместе — она больше выигрывает. Тут надо учитывать, что речь про в целом состояния «по одиночке» и «больше одного», нежели «впятером с первой до последней минуты».

Расположение в файте:

У более успешных команд (и более клевых игроков) расстановка качественно отличаются как в официальных играх, так и в соло ранкед играх. Точнее не скажу, надо долго смотреть и думать).

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

Результаты

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

По итогам работ (а закончились они уже после The International) мы получили почти те же самые 73-75% точности прогноза, что и господа из Кореи, анализировавших вообще 100 000 матчей LoL и получившие точность в районе 70%. И «всего» на 10-15% больше, чем самый тупой предсказатель. Это можно посчитать иронией и признаком впустую потраченного времени, но наша модель, в отличие от подавляющего большинства, направлена на качество игры команд, нежели на статистику их игры, что гораздо перспективнее.

Самое важное — выявить и продолжать выявлять показатели качества игры именно команды (не забывая, конечно, и про отдельных игроков). Так, мы находили высокий «вклад» в потенциальную победу у «тепловой карты» перемещений героя (сколько и где ходил герой, завязано на позицию игрока), «второе дыхание» игроков (именно игроков, а не героев), количество «стычек», в которых участвовал герой, когда рядом с ним был тиммейт, и несколько других.

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

Интересно узнать, что за зверь такой — робот для арбитража? Пишите, ставьте лойсы или что тут в ходу. Также в следующих постах постараюсь рассказать больше интересных (и менее очевидных) фактов. Если кому интересны статьи по теме — пишите.

Да, мета меняется, а с ней и условия победы, но модель должна подстраиваться под это. Даже с изменением меты значительная часть «показателей успеха» остается неизменной. Но подстраивать тоже надо.

Автор по профессии является управленческим консультантом, закончил 3 класса церковно-приходской школы и плох в machine learning и data science, несмотря на то, что нахватался терминов. Но все-таки постарался передать ситуацию объективно.

Комментарии