Pull to refresh

Comments 20

Можно еще взять параметры как: Игра дома или в гостях(дома повышает вероятность судя по статистике), серия из последних матчей(если у команды несколько подряд проигрышей, то вероятность проигрыша увеличивается), необходимо учитывать травмы игроков, в том числе и основных, интенсивность матчей(наверное), в конце сезона турнирное положение(мотивированные команды играют лучше). Можно взять еще не статистические факторы(при увольнении/смене тренера, тоже есть отличие в игре, меняется тактика и т.д.). Можно учитывать громкие трансферы, в какой то степени бюджет клубов для постоянно обучающейся модели. Короче много можно придумать, дерзай) Очень просто и понятно для меня по крайней мере написано
Главная проблема — нехватка данных (особенно в российском футболе). Компании связанные со спортивной аналитикой предоставляют статистику по матчам, а вот насчёт травм/дисквалификации игроков и т.д. нет данных. Можно смотреть на спортивных сайтах информацию по каждому матчу и таким образом вручную собрать данные по травмам и дисквалификациям.

А вообще есть такая идея: сравнивать составы команд перед матчем. Например, по суммарной стоимости состава на матч. Но эти данные тоже придется собирать вручную.
Ну вообще вы с такой идее можете обратится в какую нибудь контору по сбору статистики типа Instat — она российская, может быть их даже ваша инициатива заинтересует(ну или позаимствуют идею как обычно)). Из бесплатных статистических сайтов могу выделить ru.whoscored.com(там много данных, можно наверное даже парсить оттуда), sports.ru и прочие русские аналоги… Стоимость можно брать с transfermarket — достаточно авторитетный сайт.
Тут наверное не по стоимости можно ориентироваться а по пресловутому xG — оно стабильнее как то

Можно поподробнее? Какой сайт, если не секрет? xG стандартный или своя модель? И если спарсил xG, то и Packing (как xG, только не про удары, а про пасы) можно спарсить

sofascore, undestat и некоторые другие.
xG — своя расчетная формула, которая показала достаточно хорошую точность по сравнению с тем же understat.
Packing крутой показатель, но пока его не у меня.
Теперь можно и савки делать на футбол. Спасибо автору, очень интересная статья.
Метрикой качества такого алгоритма может быть суммарный выигрыш в букмекерской конторе, если поставить на все матчи равную сумму в соответствии с его прогнозами.
Будет стабильно в плюсе — имеет право на жизнь.
И очень маловероятно, что можно у букмекера таким образом выиграть, потому что у букмекера модель будет точнее
В теории букмекер не является игроком, его цель забрать маржу от ставок, а денежные потоки нужно уравновесить. В сущности букмекеру все равно выиграет игрок А или игрок Б. Ему важно, чтобы с учетом всех ставок получить гарантированную прибыль от комиссии. Поэтому в ставках часто наблюдается, так называемое, движение коэффициентов. Когда перекос денежных потоков идет на победу команды X, повышается коэффициент на победу команды Y (для привлечения денежных потоков от ставок на эту команду).
Развивая данную тему скажу, что если проект задумывается для осуществления ставок, то определение вероятностей исходов недостаточно. Нужно еще и рассчитывать с учетом полученных вероятностей исходов математическое ожидание, исходя из коэффициентов букмекеров. Разумеется, ставить нужно на события с положительным мат.ожиданием. Но основная проблема здесь в достоверном определении вероятностей, это трудно сделать в таком виде спорта как футбол, где исход матчей зависит от субъективных факторов — травмы, удаления, ошибки судей, договорные матчи.
Вы правы. Скажу больше, основная проблема применения ML к ставкам на спорт — это плохая калибрация предсказанной доходности. Что интересно, классификатор может при это получаться хорошо откалиброванным по вероятности, но это вовсе не обязательно позволяет извлечь прибыль.
Это да, создавать модель без сравнения её прогнозирующих качеств с таковыми качествами коэффициентов букмейкеров — дело бессмыссленное.
С русским Вы конечно зря связались, тем более cp1251…
Огромное спасибо за статью!
PS некоторые параметры некорректно отобраны. Но это всего лишь мое мнение)
Интересное замечание, спасибо.

Делаем прогноз на победу 1 команды
createGamePrediction(team1_vector, team2_vector)

Потом делаем прогноз на победу 2 команды
createGamePrediction(team2_vector, team1_vector)

Получается мы делаем прогнозы на победу/проигрыш, но в футболе есть ничья.
Можно добавить такой прогноз
team1pred = createGamePrediction(team1_vector, team2_vector)
team2pred = createGamePrediction(team2_vector, team1_vector)
print("Вероятность победы 1 команды: ", team1pred)
print("Вероятность ничьи: ", 1.0-(team1pred+team2pred))
print("Вероятность победы 2 команды: ", team2pred)

То что ничья получается всегда примерно 28% это странно. Но стоит учитывать, что в РПЛ часто матчи заканчиваются ничьей (примерно 26-32% каждый сезон). Если бы мы обучили модель на матчах Украинской Премьер Лиги (ничья = 22%) или Ла-Лиги Испании (ничья = 22.3%), то получили бы процент ничей на уровне 22-23%. Это дало бы нам сделать более точный прогноз на победу/проигрыш
спасибо за развернутый ответ!
я немного доработал эту модель, добавил более 35 показателей за последние 5 лет по РПЛ и у меня общая сумма для команд стала не 72%, а 84%.
Можно ещё анализировать с помощью обработки естественного языка новости перед матчем(пресс-конференции, комментарии и т.д.). Таким образом можно учесть хоть как-то настрой команды на матч, что тоже очень немаловажно в футболе.
сложно, долго и непонятен результат. Главный тренер перед матчем скажет, что скорее всего лучший нападающий не будет играть, т.к. есть микротравма. И? А потом окажется, что он вышел на матч и это была утка.
Sign up to leave a comment.

Articles