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


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

Точный прогноз – это залог успеха в спортивных ставках. Если вы можете спрогнозировать наиболее вероятный исход матча, о финансовых стратегиях можно даже не задумываться. Однако составление прогнозов – это сложная и кропотливая работа, требующая исследования и аналитики большого количества материалов. И справиться с таким объемом данных сможет не каждый. Ниже мы расскажем, как самому сделать качественный прогноз на спорт, что нужно знать и какими качествами обладать.

Как выбрать вид спорта

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

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

Этапы составления прогноза

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

  1. Просмотрите букмекерскую линию и выберите событие. Это может быть матч в престижном мировом первенстве или чемпионат района по футболу – главное, чтобы у вас был доступ к последним данным по этому матчу и турниру, а у букмекера – не было.
  2. Просмотрите турнирную таблицу. Просмотрите, где команды показывают наилучшую игру – на своей площадке или на поле соперника. Оцените количество выигранных и проигранных встреч за последний месяц – возможно, у одной из команд началась полоса неудач.
  3. Перед тем, как делать прогноз на спорт, просмотрите статистику совместных матчей. Некоторые команды выясняют отношения на протяжении нескольких десятилетий. В хоккее это – Вашингтон Кэпиталз и Питтсбург Пингвинз, в других видах спорта возможны другие разборки. Вашингтон может выигрывать проходные матчи в НХЛ, становиться лидером регулярного этапа, громить соперников на различных этапах, но финальную серию команда с большой вероятностью проиграет.
  4. Просмотрите последний матч, который команды провели между собой. Этот пункт особенно важен, если команды встречались в течение этого сезона. Просмотр матча позволит не спеша оценить возможности и шансы команд, увидеть их слабые и сильные места. Даже сами спортсмены часто просматривают такие записи перед встречей с серьезным противником.
  5. Уточните состав команд. Если лучший спортсмен, вокруг которого команда строит игру, по какой-то причине не будет участвовать в матче, это может изменить шансы на противоположные.
  6. Уточните физическую и психологическую форму, мотивацию и т.д. спортсменов. Если лучший спортсмен выйдет на игровую площадку, но будет играть спустя рукава (например, из-за последствий травмы или конфликта с руководством клуба), это также скажется на шансах команды на победу.
  7. Уточните, насколько данный матч важен для обеих команд. Если одна из команд серьезно оторвалась в турнирной таблице, она может использовать игру для тренировки молодого состава.
  8. Изучите новости о командах, турнире, определите наиболее вероятный исход и вариант ставки.

Эти пункты можно считать общими для всех командных видов спорта. В дисциплинах, где соревнуются одиночки, например, в теннисе, стоит обращать внимание на покрытие корта и предпочтения спортсменов (некоторые предпочитают грунт, другие лучше играют на траве), важность поединка, форму спортсменов (например, то, что Шарапова больше года не участвовала в мировых первенствах, неизбежно скажется на ее игре, несмотря на все тренировки), мотивацию. В боксе – на рост, вес, опыт, рабочую руку, работу на дальней и короткой дистанции.

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

Узнайте, как самому прогнозировать ставки на футбол. - Спорт

Узнайте, как самому прогнозировать футбольные ставки. by Nobody: 13:17 ноября 29 , 2014
Я буду добровольцем научить, как мне успешно делать ставки на выигрыш с помощью статистики с помощью www.soccerstatstracker.com, начиная со следующей недели, Я буду размещать фотографии для гида. В этом руководстве вы должны знать, как прогнозировать: -

1. Обе команды забьют,
2.Больше и меньше
3. Первый тайм Больше / меньше
4. Дальность голов.
5. Превосходное предсказание более 1,5 (хорошо в комбинациях)
6. Победа в перерыве
7. Двойной шанс с уверенностью. (Хорошо в комбинациях)
8. И т. Д.

2 лайка

Re: Узнай, как самому предсказывать футбольные ставки. по овердрайву (м): 14:01 29 ноября , 2014

ok

Re: Узнай, как самому предсказывать футбольные ставки.by siempere (m): 15:07 30 ноября , 2014

ждет тебя брат

Re: Узнай, как самому делать ставки на футбол. автор: danielz777 (м): 19:07 30 ноября , 2014
Пожалуйста, покажите сестре немного любви, нажмите на ссылку http://eplnaija.com/eplnaija-top-10 -whoworeitbest2-finalist / и проголосуйте за ms_ teenew, это 9-е изображение в списке d. все, что вам нужно сделать, это просто нажать на кнопку голосования.пожалуйста, пожалуйста, спасибо ... это будет много значить для нее ... Пожалуйста, я на коленях ... Пожалуйста, пожалуйста,
Re: Узнайте, как самому предсказать футбольные ставки. по denedene (м): 23:55 30 ноября , 2014

ожидание o!

Re: Узнайте, как самому прогнозировать футбольные ставки. by Никто: 10:30 вечера декабря 01 , 2014
Здесь мы начинаем. Вам нужно будет загрузить программное обеспечение с www.soccerstatstracker.com, это бесплатно. Для выигрыша ставок на футбол требуется много навыков, есть много матчей, которые можно скальпировать с помощью этого программного обеспечения. Держу пари, после этого урока вы не будете бояться проиграть любую ставку с коэффициентом 1,30. Эта программа удобна для пользователя и идеально подходит для комбинаций / одиночных игр. Имейте в виду, что не все лиги вводятся в программу.

Изображение 1: Здесь вы можете увидеть тенденции команды, прежде чем делать ставки на победу, или вы можете выбрать, вы можете изменить лигу и настроить программное обеспечение, все, что вам нужно, изменив его на полное время, перерыв, общее количество голов и так далее.Вы можете видеть, что Kaiserslautern имеет 14 из 14 1X, что означает двойной шанс выигрыша, следовательно, вероятность того, что вы выиграете такую ​​ставку, составляет 100%. Вам нужно будет нажать Tools в верхнем левом углу, затем прокрутить вниз до Fixtures , чтобы получить сегодняшнюю игру, а затем перейти к картинке 2.

4 лайка 2 акции

Re: Узнайте, как самому прогнозировать футбольные ставки. by Nobody: 22:34 декабря 01 , 2014

Изображение 2: Вы можете уменьшить количество дней матча, которое хотите, затем щелкните матч, статистику за день вы хотите увидеть, например : Брауншвейг - Нюрнберг.Нажмите на матч, а затем в правом верхнем углу окна вы найдете h3H Fixed щелкните его, чтобы перейти к фото 3

Re: Узнайте, как самому предсказать футбольные ставки. автор: Nobody: 22:38 декабря 01 , 2014

Изображение 3: На странице анализа, «Нажмите на Edit Stat », здесь вы можете редактировать ставки, которые вам нравятся, гол / отсутствие голов, ничья в перерыве, голы в перерыве, двойной шанс, тотал гол (дальность забитых мячей - это тот вид пари, который я люблю больше всего) и многое другое.для указанного совпадения вы хотите узнать статистику, затем нажмите OK. Теперь вы увидите наиболее вероятный исход указанной домашней игры и выездной игры в процентах. В правом верхнем углу вы затем просмотрите историю h3H , чтобы увидеть, подходит ли результат.

Re: Узнайте, как самому предсказать футбольные ставки. by obedfynez (m): 11:50 am Dec 04 , 2014
danielz777 :
, пожалуйста, покажите сестре немного любви, нажмите на ссылку http: // eplnaija.com / eplnaija-top-10-whoworeitbest2-finalist / и проголосуйте за ms_ teenew, это 9-е изображение в списке d. все, что вам нужно сделать, это просто нажать на кнопку голосования. пожалуйста, пожалуйста, спасибо ... это будет много значить для нее ... Пожалуйста, я на коленях ... Пожалуйста, пожалуйста,
. Кто такой 1, мы говорим о деньгах. Вы говорите или показываете, что любите, щелкнув по сайту ... mtchewwww ..
Re: Узнайте, как самому предсказать футбольные ставки. by Никто: 12:00 pm декабря 04 , 2014

Если у вас возникли трудности с пониманием программного обеспечения, я могу научить вас использовать его через teamviewer бесплатно.Это удобное программное обеспечение, подходящее для скальпинга.

1 Нравится 1 Поделиться

Re: Узнай, как самому прогнозировать ставки на футбол. от Никто: 12:01 декабря 04 , 2014
obedfynez :
. Кто такой 1, мы говорим о деньгах. Вы говорите или показываете, что любите, щелкая по сайту ... mtchewwww ..

Хахахаха, очень забавно. Этот человек просто спамер.Ржунимагу.

Re: Узнайте, как самому прогнозировать футбольные ставки. от obedfynez (м): 15:29 декабря 04 , 2014
eddie011 :

Хахахаха, очень забавно. Этот человек просто спамер. Ржунимагу.

, пожалуйста, я нахожу его под программным обеспечением stnd d, пожалуйста, я бы хотел узнать номер вашего телефона, чтобы связаться с вами .. Tnx
Re: Узнайте, как самому предсказать футбольные ставки. by Nobody: 16:01 4 декабря , 2014
obedfynez :
, пожалуйста, я нахожу это под программным обеспечением stnd d, пожалуйста, я бы хотел av ur num, чтобы связаться с вами., Tnx

Я не в Нигерии, поэтому мне сложно назвать свой номер. Попробуйте скачать www.teamviewer.com бесплатно, я буду внутри вашего компьютера, и мы вместе спрогнозируем совпадение. Посмотрите, работает ли он нормально? Я могу научить вас бесплатно и объяснить вам на вашем собственном ПК.

1 Нравится

Re: Узнайте, как самому прогнозировать ставки на футбол. by EDWARD20: 19:51 декабря 04 , 2014
eddie011 :

Я не в Нигерии, поэтому мне сложно назвать свой номер.Попробуйте скачать www.teamviewer.com бесплатно, я буду внутри вашего компьютера, и мы вместе спрогнозируем совпадение. Посмотрите, работает ли он нормально? Я могу научить вас бесплатно и объяснить вам на вашем собственном ПК.

ПАРЕНЬ, УР ЗДЕСЬ ВЫПОЛНЯЕТ КРАСИВУЮ РАБОТУ, КАК КТО-ТО МОЖЕТ ПОДПИСАТЬСЯ НА СОВЕТЫ UR.
Re: Узнайте, как самому прогнозировать футбольные ставки. by soccerpicksmast: 7:37 am Dec 05 , 2014

Перейти к: soccerpicksmaster.blogspot.com с советами по ставкам на футбол ....

Re: Узнайте, как самому прогнозировать ставки на футбол. by feclaquence (m): 8:35 am Dec 19 , 2014

все совпадения в вашем блоге старые совпадения ... hw do i chek 4 daily picks

Re: Узнайте, как самому прогнозировать футбольные ставки. by jennylyon6: 8:16 am января 10 , 2015
ПОЛУЧИТЕ 100% ПРОГНОЗ И ВЫИГРАЙТЕ...

ВСЕ ФИКСИРОВАННЫЕ ИГРЫ

СВЯЗАТЬСЯ С НАМИ; 08115521605

LUCKY PREDICTIONSSSSSSS [b] [/ b] [color = # 9

] [/ color]

Re: Узнай, как сам предсказывать футбольные ставки. by 2special (m): 8:32 am Jan 10 , 2015

o.p где u

Re: Узнайте, как самому предсказать футбольные ставки. от Mojjynatty: 7:21 pm 10 апреля , 2015

Привет, найраландцы, есть ветки для публикации ежедневных пиков? Я собираюсь это сделать, но где?

Re: Узнайте, как самому прогнозировать ставки на футбол.автор: vicsoj007 (m): 8:12 am Apr 13 , 2015
Re: Узнайте, как самому предсказать футбольные ставки. по almujeebe (м): 11:18 18 апреля , 2015
.

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

Фото Томаса Серера на 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 и нейронными сетями

.Машинное обучение

для ставок на спорт: это не основная проблема классификации. | Чарльз Малафоссе

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

Давайте реализуем базовые стратегии ставок на основе коэффициентов биржи ставок. Десятичные коэффициенты - это отношение полной выплаты к ставке. Например, коэффициент 2 означает, что для ставки в 1 доллар вы можете выиграть 2 доллара (включая вашу ставку). Обратите внимание, что инверсия шансов дает предполагаемую вероятность оказаться правым. Вероятность 2 означает 50% шанс на победу (1 / коэффициент). Следовательно, вы хотите делать ставки на команды с наименьшими шансами, то есть с наибольшей вероятностью выигрыша.

Для иллюстрации мы разработали две основные стратегии:

  • « Win »: ставка на команду с наименьшими коэффициентами, с наибольшей вероятностью выигрыша.
  • « Win or Draw »: ставка на команду с наименьшим значением коэффициента и ставка на ничью.

Предположим, что у нас есть шансы 5,5–1,61 на игру Борнмут против Челси. У «Челси» коэффициент 1,61. Следовательно, мы делаем ставку на победу «Челси» по стратегии « выиграть » и на победу и ничью по стратегии « побед или ничья ».

Теперь сравним две стратегии ставок: « Win, » и « Win или ничья.
Для данных мы использовали Betfair API . Betfair - одна из крупнейших бирж ставок, и ее API содержит навигацию по биржевым рынкам, поиск коэффициентов и операции размещения ставок.

Столбчатые диаграммы выше представляют точность и прибыль, достигнутые обеими системами ставок. Точность означает, сколько раз наши ставки были правильными, деленное на общее количество ставок (в данном случае 200). Прибыль представляет собой сумму, которую вы могли бы заработать, вложив 1 фунт стерлингов в каждую ставку.
Первый график слева показывает коэффициент точности 61% для стратегии «Победа» против 80% для стратегии «Победа или ничья». В этом случае вариант «Победа или ничья» кажется намного лучше. Однако второй график показывает, что прибыль, которую он приносит, намного меньше, чем у «выигрышных» стратегий. 1 £ против 12.

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

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

В частности, мы могли бы использовать классификационную нейронную сеть. Классификация NN идеальна, когда применяется к проблемам, для которых существует дискретный результат, или говоря иначе, когда идентифицируется, к какой категории относится конкретное наблюдение. В качестве примеров подумайте о забавном « Hotdog, а не Hotdog » или «Анализ настроений», который пытается классифицировать текст на положительные или отрицательные.

Применительно к ставкам на спорт мы могли разработать нейронную сеть с тремя простыми категориями. Ниже представлена ​​архитектура такой сети.

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

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

Не все ставки дают одинаковое вознаграждение. Ставка с коэффициентом 2 может принести 1 фунт прибыли, в то время как коэффициент 1,1 дает меньшую прибыль в размере 0,1 фунта стерлингов. Обе ставки, однако, несут одинаковую потерю в 1 фунт стерлингов в случае неудачи.Следовательно, они не равны; рисковать 1 фунтом стерлингов, чтобы заработать 1 фунт стерлингов, не то же самое, что рисковать 1 фунтом стерлингов, чтобы заработать 0,1 фунта стерлингов.

Чтобы учесть это в нашей нейронной сети , нам нужно использовать настраиваемую функцию потерь . Функция потерь (или целевая функция) - это мера того, «насколько хороша» нейронная сеть с учетом ее обучающей выборки и ожидаемого результата. В стандартной нейронной сети классификации мы используем функции потерь, такие как категориальная кросс-энтропия. Однако такие функции будут давать одинаковые веса всем ставкам, игнорируя расхождения в доходности.

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

Мы настроили нашу пользовательскую функцию потерь с Keras поверх TensorFlow .

В Керасе функция потерь принимает два аргумента:

  • y_true : вектор истинных меток ( Win Home, Win Home or Draw, Draw, Win Away, Win Away or Draw, No bet ). В соответствии с архитектурой нашей нейронной сети это принимает форму вектора из 1 и 0.Например, игра, завершившаяся победой команды хозяев, имеет следующий вектор y_true (1,1,0,0,0,0).
  • y_pred : Вектор предсказаний. Это результат работы нашего классификатора нейронной сети.

Поскольку мы не можем передать шансы игры в функции проигрыша из-за ограничений Кераса, мы должны передать их как дополнительные элементы вектора y_true.

Ниже представлена ​​наша пользовательская функция потерь, написанная на Python и Keras.
В двух словах, он измеряет средней прибыли / убытка сверх входных данных для паевой доли.Шаги следующие для каждого наблюдения (каждой игры):

  • Получить коэффициенты из ввода y_true
  • Вычислить потенциальную прибыль от каждой ставки, используя коэффициенты.
  • Объедините прибыль по выигрышным ставкам и проигрыш по единичным.
  • В итоге мы получаем ожидаемую прибыль и убытки этого наблюдения. Мы умножаем это на -1, чтобы получить «убыток» до , минимизируя (а не прибыль, которую нужно максимизировать).
 def odds_loss (y_true, y_pred): 
"" "
Функция реализует настраиваемую функцию потерь

Входные данные
true: вектор размерности batch_size, 7.Версия вывода, закодированная на этикетке, и backp1_a и backp1_b
pred: вектор вероятностей измерения batch_size, 5.

Возвращает
значение потерь
"" "
win_home_team = y_true [:, 0: 1]
win_home_or_draw = y_true [:, 1: 2]
win_away = y_true [:, 2: 3]
win_away_or_draw = y_true [:, 3: 4]
draw = y_true [:, 4: 5]
no_bet = y_true [:, 5: 6]
odds_a = y_true [:, 6: 7]
odds_b = y_true [:, 7: 8]
gain_loss_vector = K.concatenate ([win_home_team * (odds_a - 1) + (1 - win_home_team) * -1,
win_home_or_draw * (1 / (1 -1 / odds_b) - 1) + (1 - win_home_or_draw) * -1,
win_away * (odds_b - 1) + (1 - win_away) * -1,
win_away_or_draw * (1 / ( 1-1 / odds_a) - 1) + (1 - win_away_or_draw) * -1,
ничья * (1 / (1 - 1 / odds_a - 1 / odds_b) - 1) + (1 - ничья) * -1,
K.zeros_like (odds_a)], axis = 1)
return -1 * K.mean (K.sum (gain_loss_vector * y_pred, axis = 1))

Для наших данных мы берем список из 200 игр из английской премьер-лиги. , сезон 2018–2019, с августа по декабрь 2018 г. Он содержит описательные данные об игре, такие как названия команд, коэффициенты от Betfair и оценка настроения (представляющая процент положительных твитов по сравнению с положительными и отрицательными). Data и блокнот Jupyter доступны на моей странице github.

Наши данные содержат результат каждой игры в виде 1, 2 или 3:

  • 1: Победа на своем поле
  • 2: Победа на выезде
  • 3: Ничья

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

 def get_data (): 
data = pd.read_csv ('extract-betsentiment-com.csv')
X = data.values ​​[:, 5: -5]
y = data.values ​​[:, -1]
y_full = np.zeros ((X.shape [0], 8))
для i, y_i в enumerate (y):
, если y_i == 1:
y_full [i, 0] = 1.0
y_full [i, 1] = 1.0
, если y_i == 2:
y_full [i, 2] = 1.0
y_full [i, 3] = 1.0
, если y_i == 3:
y_full [i, 1] = 1.0
y_full [i, 3] = 1.0
y_full [i, 4] = 1.0
y_full [i, 6] = X [i, 1] # ДОБАВИТЬ ДОБАВЛЕНИЕ ДОМАШНЕЙ КОМАНДЫ
y_full [i, 7] = X [i, 2] # ДОБАВИТЬ ДОПОЛНИТЕЛЬНУЮ КОМАНДУ
return X, y_full, yX, y, result = get_data () # РАЗДЕЛЕНИЕ ДАННЫХ В НАБОРЕ ПОЕЗДНЫХ И ТЕСТОВЫХ ДАННЫХ.
train_x, test_x, train_y, test_y, = train_test_split (X, y)

Перед обучением модели нам нужно сначала ее определить. Мы используем полносвязную нейронную сеть с двумя скрытыми слоями . Мы используем BatchNormalization для нормализации весов и устранения проблемы исчезающего градиента.

Затем обучаем модель, используя набор произвольных параметров.

 def get_model (input_dim, output_dim, base = 1000, multiplier = 0,25, p = 0,2): 
input = Input (shape = (input_dim,))
l = BatchNormalization () (входы)
l = Dropout (p) (l)
n = base
l = Dense (n, activate = 'relu') (l)
l = BatchNormalization () (l)
l = Dropout (p) (l)
n = int (n * множитель )
l = плотный (n, активация = 'relu') (l)
l = BatchNormalization () (l)
l = выпадение (p) (l)
n = int (n * множитель)
l = плотный ( n, активация = 'relu') (l)
выходов = Dense (output_dim, activate = 'softmax') (l)
model = Model (входы = входы, выходы = выходы)
модель.compile (optimizer = 'Nadam', loss = odds_loss)
return modelmodel = get_model (21, 6, 1000, 0.9, 0.7)
history = model.fit (train_x, train_y, validation_data = (test_x, test_y),
эпохи = 200, batch_size = 5, callbacks = [EarlyStopping (терпение = 25), ModelCheckpoint ('odds_loss.hdf5', save_best_only = True)])

После завершения обучения мы смотрим на производительность нашей модели с помощью следующего отпечатка command:

 print ('Потеря обучения: {} \ nПотеря проверки: {}'. format (model.оценить (train_x, train_y), model.evaluate (test_x, test_y))) 150/150 [============================= =] - 0s 271us / 
step 50/50 [================================] - 0s 318us /
step Training Потеря: -0,05027060141166051
Потеря проверки: -0,08301501810550689

Как мы видим, мы получаем потерю на обучение в размере -0,05. Имейте в виду, что мы пытаемся минимизировать нашу функцию убытков, которая противоположна нашим прибылям и убыткам. Это число говорит нам, что в среднем каждая ставка принесет прибыль в размере 0.05 за каждую ставку в 1 £. Наш набор данных проверки показывает среднюю прибыль 0,08 на каждый фунт. Неплохо, учитывая, что мы просто предоставили базовые данные нашей нейронной сети. Более чем 200 игр наша теоретическая стратегия ставок NN принесла бы от 10 до 16,6 фунтов стерлингов, если предположить, что мы ставим 1 фунт стерлингов на каждую игру.

Мы представили способ включить ставки p & l в классификатор нейронной сети, используя настраиваемую функцию потерь . Это выходит за рамки коэффициента точности, который может ввести в заблуждение при разработке систем ставок.Мы считаем, что это полезно для всех, кто хочет использовать машинное обучение в спорте.

Звоните по номеру , свяжитесь со мной для получения дополнительной информации или вопросов . Также обратите внимание, что мы будем рады поделиться нашими данными, если они вам понравятся.

.

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

Piano Expert © 2012 - . All Rights Reserved.