Pull to refresh

Comments 17

В чем считали? Неужели в Excel? Почему выбрали SVM? Какой алгоритм был бы лучше? Код?)
Считали на разном, модели — на Python, 2-ю модель онлайн конкурса (не машинное обучение) делали на Excel, SPSS Statistics, т.к. данных не много и больше смотрели статистику.

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

В офлайн части код использует описанные переменные и алгоритмы, берет данные, делает расчет и отправляет результат. Ждет 10 секунд и повторяет.
Были мысли применить футбольные модели?
Про футбол вспоминали, т.к. в него хоть некоторые из нас играют. Поиск в Инете не дал хороших подсказок про модели для Dota2, времени мало, делали все с нуля, чисто машинное обучение.

Данные -> Предикторы (сами) -> Алгоритм -> Предикторы (алгоритм) -> Модель

Анализируя сейчас, думаешь, а вот интересно, что будет, если это… а если то… Зависит и от знания игры, правил. Например, важен ли порядок героев?
Что понимается под порядком героев? Если порядок пика, то очень даже важен — если герой пикнут в начале, то скорее всего против него выберут какого-либо контргероя или забанят очень хорошую связку.
В Captain's Draft и Ranked All Pick действительно есть возможность учесть порядок выбора героев, который очевидно оказывает очень большое влияние на успех матча, однако тут возникает проблема комбинаторного характера — количество уникальных игр, где герой А был выбран первым, B — вторым и т.д. равно числу размещений (arrangements) из 112 по 10, т.е. 205368317946676700000. Плюс по каждому из таких размещений нужно иметь статистику в несколько тысяч матчей. Я не уверен, что со времени запуска Доты2 накопилось столько матчей, чтобы можно было использовать машинное обучение для решения данной задачи с учётом порядка выбора героев. А хотелось бы...
Из данных мы знали, какой герой и в какой последовательности выбран, какой у него уровень в момент t. Т.к. уровни, очевидно, важны, а как их складывать по героям — не понятно, кинули уровни по порядкам героев в регрессию. Имена и группировки героев трогать не стали. Видим результат на картинке в тексте: изменение уровня разных, по порядку, героев по разному влияет на вклад в победу команды. Похоже, какие-то непонятные взаимосвязи (для нас главное — выдача такой вероятности победы, чтобы самим победить в хакатоне).
Мы, примерно, до этого дошли, хотя и не специалисты в игре.

Например, такой вопрос. Есть данные по всем матчам. Есть переменные: уровень героя 1, уровень героя 2 и т.д. (по порядку пика) для обоих команд. Вопрос: для вероятности моей победы, уровень моего героя 1 важнее ли уровня героя 1 соперника, при прочих равных? А важнее ли он уровня моего героя №2? В общем, с героями и их уровнями не все просто и понятно.

Потом еще догадались, что героев можно группировать… ) Даже есть такая статья на эту тему.
Как уровни героев связаны с порядком пика? Там вроде бы весьма слабая связь.
Номер пика может не соответствовать значимости героя в игре. В команде условно есть 5 позиций — 1,2,..5. 1-я считается самой важной. Т.е. одна команда может первым пикнуть героя для первой позиции, а ее противники — для пятой. Тогда конечно сравнение уровней героев первой и пятой позиции не принесет много пользы. Т.е. тут нужно сравнивать героев на одной позиции, а не по номеру пика.
Значит, подводя черту, героем с порядковым пик-номером 1 может быть герой любой силы.
На dotabuff есть огромная статистика по процентам побед в зависимости от скорости покупки и вообще наличия определенных предметов у определенных героев. Можно опираться на это.
Так же там есть статистика по процентам побед, в зависимости от роли, линии, итд.
Для профессиональных игр, статистика немного другая, но ее тоже можно найти.
На мой взгляд, это дало бы более точную оценку предсказания.
Наш выбор был ограничен теми данными, которые нам поступили.

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

Вероятно, самое важное, что пропустили — типы героев. Но, в конце концов, все эти данные конвертировались в опыт, пусть и с большей ошибкой. Т.е. алгоритм, возможно, дал бы чуть большую точность, но настолько ли критическую, чтобы занять первое место, когда другие команды сразу "знали", кто победит?

В плане улучшения, было бы интересно смоделировать разные стратегии и время, когда становится понятно, что она провалилась. Также было бы интересно понять стратегию отправки ответов в свете финальной оценки модели.
Мы устраивали пробный in-class Kaggle для определения вероятности победы команды на основе одних только пиков, без учёта их порядка (см. мой предыдущий комментарий). Как ни парадоксально, добавление информации о герое (carry/pusher/nucker/и т.д., тип атаки и прочее) только ухудшало точность предсказания вне зависимости от выбранной модели (логрегрессия, XGBoost). Причём данный эффект был обнаружен не только у нас, но и в немногочисленной литературе по теме. С чем он связан мы пока так и не поняли.
Мы тоже поудивлялись найденным связям, но модель молодцом реагировала на матч, подобно комментатору и консультанту, так что работала правильно, и это — самое главное!
Ах, как хорошо, что решили пересчитать все. Взяли все матчи гранд-финала, все данные, которые отдала использовавшаяся во время хакатона система, посчитали все вероятности моделью. Потом посчитали score. Потом по score посчитали sum((1/2) х (duration(t+1)-duration(t)) х (score(t+1)+score(t))) (формула). Если формула правильная, то получили бы такие оценки: Match 51 = 1260, Match 50 = 1991, Match 49 = 2121, Match 48 = 1913 и заняли бы 3, 2, 3, 5 места в порядке матчей с конца… Ох да ах. Все же надо было больше доверять модели.
Sign up to leave a comment.

Articles

Change theme settings