Как научиться прогнозировать спортивные события


Как делать прогнозы в ставках на спорт самому?

  • Ставки для
    новичков
  • Бонусы
    и акции
  • ЦУПИС
  • Рейтинг
    букмекеров
  • Мобильные
    приложения
  • Бесплатные
    прогнозы
  • Стратегии
    ставок
НА ГЛАВНУЮ
    Главная/

    Использование машинного обучения для прогнозирования спортивных результатов - пример Кубка мира по регби | от Райана Лэмба

    Фото Томаса Серера на Unsplash

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

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

    Для этого проекта я использовал Python, записные книжки Jupyter, PyCharm и Power BI (для быстрой визуализации данных).

    ESPN Scrum имеет обширную базу данных международных матчей по регби. Я хотел все международные матчи по регби начиная с 2003 года. Я выбрал эту дату, потому что рейтинг мира по регби был введен незадолго до чемпионата мира 2003 года (подробнее об этом в разделе «Характеристики»).

    ESPN База данных результатов матчей Scrum

    Но эти данные были разбиты на 175 страниц - копирование / вставка не было прагматичным решением.BeautifulSoup спешит на помощь. BeautifulSoup - это библиотека для извлечения данных из файлов HTML и XML. Ниже вы можете увидеть необработанные извлеченные данные, содержащие информацию о матче в Уэльсе 7 сентября 2019 г .:

    Результат парсинга BeautifulSoup для результатов совпадения

    Я заметил, что URL-адрес ESPN имел ссылку на страницу , , поэтому я перебрал каждую страницу и сохранил результаты. Итак, немного поработав, в моем наборе данных были данные за 16 лет - более 8700 матчей по регби.

    DataFrame результатов матчей

    Я хотел добавить World Rugby Rankings в качестве функции, поэтому я выполнил аналогичный анализ, чтобы получить рейтинг каждой команды с 2003 года.

    Мировой рейтинг регби

    Очевидно, что извлеченные данные не были в идеальном состоянии для машинного обучения, поэтому мне нужно было очистить несколько незначительных вещей, таких как удаление 'v' в поле имени оппозиции и обеспечение того, чтобы страна имя было одинаковым как в поле «Команда», так и в поле «Оппозиция» (я заметил, что США было USA в одном и Соединенные Штаты Америки в другом). Pandas делает это относительно простым - см., Например, , примените и карту .Я выполнил еще несколько подготовительных шагов, таких как учет ошибок / пропусков в необработанных данных и правильное форматирование дат.

    Мировой рейтинг регби был объединен с основным набором данных, так что для каждой команды был применен их рейтинг на дату, ближайшую к дате каждого матча.

    Хотя у меня был Мировой рейтинг по регби, я все же хотел подсчитать отдельный, более простой счет навыков для каждой команды. Я рассчитал относительную квалификацию, используя обобщение рейтинговой системы Эло. В этой системе рейтинг игрока меняется в зависимости от результата матча и относительной разницы в рейтинге между двумя командами.В простом примере, если команда, занявшая 10-е место, побеждает команду, занявшую 2-е место, команда, занявшая 10-е место, получит больше рейтинговых очков, чем если бы она победила команду, занимающую 15-е место (более слабую). Точно так же проигравшая команда, занявшая 2-е место, потеряет больше очков рейтинга за проигрыш более слабому сопернику, чем если они проиграют, скажем, команду, занявшую первое место. Таким образом, алгоритм самокорректируется и со временем «учится» навыкам каждой команды.

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

    Давайте посмотрим, как рейтинги сравниваются на снимке во времени:

    Официальный рейтинг World Rugby (23 сентября) по сравнению с расчетным рейтингом

    Вот некоторые интересные результаты - Австралия заняла более высокое место, чем ожидалось, а Ирландия и Уэльс оказались ниже истинного рейтинга. Я подозреваю, что на высокий рейтинг Австралии сильно повлияла их первоначальная высокая отправная точка (в 2003 году они заняли 3-е место среди лучших команд мира).Ниже вы можете увидеть, как оценки навыков некоторых команд менялись с течением времени по мере обучения алгоритма. Обратите внимание на устойчивый рост в Англии, Ирландии и Уэльсе примерно с 2014 года.

    Относительная оценка командных навыков с течением времени

    В итоге, данные для каждого исторического матча включали: дату матча, результат матча, количество очков, количество очков против, рейтинги World Rugby для обеих команд и относительный рейтинг навыков для обеих команд.

    Для прогнозирования результатов я использовал Keras, высокоуровневый API нейронных сетей. Самая простая модель в Keras - это последовательная модель.

    Я выполнил настройку гиперпараметров (см. Отличный учебник Джейсона Браунли здесь) и экспериментировал как с широкими (один слой с большим количеством нейронов), так и с глубокими (больше слоев, но меньше нейронов на слой) сетями. В итоге я использовал первый слой из 15 нейронов и второй слой из 8 нейронов, оба с Rectified Linear Activation Unit (ReLU). Мы не используем функцию активации для выходного слоя, так как мы не хотим преобразовывать выходные значения.

    Топология нейронной сети

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

    Потери модели нейронной сети по сравнению с количеством эпох

    Я также попробовал любимый фанатами XGBoost, но получил немного лучшие результаты с нейронной сетью за счет более длительного времени обучения.

    Для ввода модели я создал набор данных о предстоящих матчах группового этапа чемпионата мира по футболу и назначил каждой команде их последние очки навыков и рейтинг.

    Так как же сработали прогнозы? Намного лучше, чем я ожидал (по крайней мере, для первых 15 игр)! Из 30 предсказанных игр он правильно предсказал победителя в 27 (предсказание расстроенного матча между Японией и Ирландией было бы поразительным).

    Модель особенно хорошо показала себя в первых 15 играх, в 10 из которых разница в счете не превышает 5 очков.

    Сравнение результатов прогноза модели с фактическими результатами

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

    В любом случае неплохие результаты за пару вечеров работы! Машинное обучение - увлекательная область, дайте мне знать, если вы решите попробовать это самостоятельно, есть много того, что нужно улучшить, и интересные функции, которые можно добавить. Надеюсь, вам понравилось прохождение!

    Вот несколько полезных ресурсов, которые помогут вам начать:

    Скрейпинг веб-страниц с помощью BeautifulSoup

    Управление данными с помощью Pandas

    Наука о данных

    Я настоятельно рекомендую отличный справочник Джейка Вандерпласа по науке о данных Python (включает пример ноутбуков)

    Начало работы с Keras и нейронными сетями

    .

    jgoerner / SportsPrediction: Прогнозирование результатов спортивных событий.

    перейти к содержанию Зарегистрироваться
    • Почему GitHub? Особенности →
      • Обзор кода
      • Управление проектами
      • Интеграции
      • Действия
      • Пакеты
      • Безопасность
      • Управление командой
      • Хостинг
      • мобильный
      • Истории клиентов →
      • Безопасность →
    • команда
    • предприятие
    • Проводить исследования
      • Изучите GitHub →
    .

    Как написать спортивный репортаж за 4 простых шага

    Стиль написания новостей так же важен для спортивных репортажей, как и для общих новостей, деловых историй или любой другой журналистской работы.

    Преимущество спортивного письма в том, что у вас есть немного больше свободы в выборе слов. В криминальной или деловой переписке вы ограничены в использовании прилагательных и наречий, и вам рекомендуется уделять больше внимания существительным и глаголам. Однако спортивные статьи позволяют вам отправиться в город, чтобы описать игры, атмосферу, болельщиков и другие красочные аспекты спортивного мероприятия.

    Использование цитат в спортивных отчетах

    В идеале, в любой спортивной истории должны быть цитаты победителей и проигравших. Действительно, многие спортивные статьи написаны вокруг того, что говорят спортсмены, а не на том, чего они достигли на игровом поле.

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

    Мы адаптируем игру НБА между Бостон Селтикс и Кливленд Кавальерс 1 апреля в качестве примера статьи.

    1. Введение

    Самый важный новостной аспект спортивной игры - это счет. Кто выиграл? Как они победили и какой эффект имела победа? Также важно, пишем ли мы с точки зрения Бостона или Кливленда. В этом случае мы пойдем с Кливлендом.

    «Кливленд Кавальерс проиграли« Бостон Селтикс »со счетом 98–96 после того, как Делонте Уэст забил два штрафных броска на последних секундах, проиграв« Пистонс »на три с половиной гейма, и стал лучшим результатом Восточной конференции.”

    2. Подробнее

    Этого достаточно для тех, кто проявляет временный интерес к спорту. Однако фанаты НБА хотели бы получить больше информации, и вы могли бы дать им ее в одном или двух абзацах.

    «Кавальерс остались без звездного игрока Леброна Джеймса, получившего травму колена, в то время как« Селтикс »были без Пола Пирса. Джеральд Грин возглавил «Селтикс» с 25 очками, а Кендрик Перкинс имел 12 очков и девять подборов.

    «Кавальерс», у которых Ларри Хьюз забил 24 гола, а Саша Павлович - 17, уже вышли в плей-офф, а «Бостон» выбыл из игры.”

    3. Цитата

    Здесь вы можете предоставить цитату тренера или ключевого игрока обеих команд. Вы можете предварять каждое высказывание вводным абзацем или сразу переходить к цитате.

    «Селтик, нападающий Эл Джефферсон, сказал:« Им не хватало своего лучшего игрока, а нам не хватало нашей лучшей игры. Мы просто застряли там ».

    Тренер

    Cavs Майк Браун сказал, что отсутствие Джеймса стало ключевым фактором их поражения.

    «Мы скучаем по Леброну. Мы скучаем по Леброну каждый раз, когда он не играет.- Он наш парень, - сказал Браун.

    4. Остальные

    После того, как вы получили основную информацию и ключевые цитаты, вы можете переходить к описанию игры. Еще лучше было бы описать всего одну или две пьесы и включить больше цитат.

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

    Существует множество видов спортивных новостей, которые ежедневно предлагаются во всем мире. Мы просто показали вам его простейшую форму. Конечно, это полезная форма написания новостей для журналистов, которые любят свой спорт. А структура, которую они используют, позволяет им адаптировать свои навыки к любому типу журналистской литературы.

    ,

    Смотрите также