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


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

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

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

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

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

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

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

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

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

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

«Зарабатывайте большие деньги» со стратегией ставок на спорт на основе данных | by Tuan Doan Nguyen

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

Как насчет сравнения моих результатов с результатами профессиональных футбольных экспертов?

Источник: SkySports.com

Итак, я узнал, что каждую неделю веб-сайт SkySports публиковал прогнозы на матчи этой недели Пола Мерсона [1], бывшего игрока «Арсенала», ставшего экспертом, выигравшего несколько титулов.

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

Просто послушайте, что бывший менеджер «Арсенала» Венгер сказал о нем:

Эти дебаты, которые я слышу, - шутка, фарс. Люди [Мерсон], которые провели нулевые игры, учат всех, как вы должны себя вести.Это фарс.

Тем не менее, это золотая жила для меня, потому что теперь я могу сравнить свой алгоритм с «экспертом». Независимо от того, что вы думаете о нем, предсказание бывшего игрока «Арсенала» на матч «Арсенал-МЮ» наверняка будет более надежным, чем неясная модель, основанная на случайном выплевывании чисел.

Матрица неточностей, которая показывает, насколько точны прогнозы Мерсона и моего алгоритма, более 273 совпадений. Слева: Merson’s правильно предсказывает 150 совпадений или 54.9%. Справа: алгоритм процесса Пуассона дал 51 + 7 + 117 = 175 совпадений, колоссальные 64,1%

Здесь я сравнил результаты 273 матчей, предсказанных Мерсоном в этом сезоне. Он достиг 54,9% точности , в то время как мой алгоритм пуассоновского процесса достиг удивительной точности 64,1% .

Интересно, что Мерсон предсказал ничью 2–2 между «Арсеналом» и «Манчестер Юнайтед», сказав: « обе команды будут бороться друг с другом и забьют голы. «Мои алгоритмы, усредняющие количество голов, забитых и пропущенных« Арсеналом »дома, присваивают« Арсеналу »небольшое преимущество и вероятность победы 45% по сравнению с 27% для« МЮ ».

Результат меня поразил. Превышение мнения эксперта на 10% - это огромно. И мне даже не пришлось много делать, кроме как попросить любимые процессы Пуассона выделить числа.

Тогда я начал заниматься спортивными ставками. И я вступаю в новую игру против нового соперника: это я против букмекеров .

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

Возьмем, к примеру, американские коэффициенты. Если вы видите коэффициент + 300, это означает, что ваша выплата составит 300 долларов, если вы поставите 100 и выиграете. Это нормально, но тогда у них будет отрицательный коэффициент , , например, коэффициент , -150. Что это за @ # *! $%? Это означает, что для получения прибыли в размере 100 долларов вам необходимо сделать ставку в размере 150 долларов США. Таким образом, шансы в США - это число, большее или равное 100, иногда перед ним стоит знак +, чтобы указать, что это ваша прибыль, а иногда перед ним стоит -, чтобы указать сумму, которую вам нужно поставить, чтобы выиграть 100 долларов.

Я имею в виду, они все равно все равно используют футы и градусы Фаренгейта

Для целей этого проекта мы будем использовать более удобную систему: европейский коэффициент . Все просто: мне говорят, сколько я получу, если поставлю 1 доллар. Например, Bet365 дает коэффициент 2,4 для случая, когда «Арсенал» обыграет «Ману», 3,6 для ничьей и 3 для победы Ману. Это означает, что я бы вышел из ставки с 2,4 доллара (1,4 доллара прибыли) в кармане, если бы я сделал ставку 1 доллар на «Арсенал».

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

Предположим, что коэффициенты букмекерских контор идеально отражают вероятность победы, ничьей или проигрыша различных команд. Итак, в этой схватке «Арсенал» и «Манчестер Юнайтед», поскольку коэффициент Bet365 на победу «Арсенала» равен 2.4, вероятность их выигрыша составляет просто 1 / 2,4 = 41,6%, что на удивление близко к моему прогнозу в 45%. Точно так же вероятность победы МЮ составляет 1 / 3,0 = 33,3%, а вероятность ничьей составляет 1 / 3,6 = 27,8%.

Погодите !!!

41,6% + 33,3% + 27,8% = 102,7%! Это странно (это не каламбур !!!)

Причина, по которой вероятности не составляют 100%, заключается в том, что шансы не справедливы . Эти дополнительные 2,7% составляют преимущество букмекера .Чтобы получить реальные вероятности, нам нужно скорректировать прибыль, разделив ее на 102,7. Таким образом, истинная вероятность выигрыша «Арсенала» у букмекеров составляет 41,6 / 102,7 = 40,5%, вероятность выигрыша «Юнайтед» составляет 33,3 / 102,7 = 32,5%, а для ничьей - 27,8 / 102,7 = 27,06%. Для абсолютно эффективного букмекера это вероятности каждого исхода.

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

Если я поставлю 1 доллар на «Арсенал», я рассчитываю получить обратно:

Ожидаемая прибыль такая же, если бы я сделал ставку на «Манчестер Юнайтед»:

И, как вы уже догадались, если я сделаю ставку на ничью, я рассчитываю получить назад 97 центов. В среднем букмекерская контора берет с меня около 3 центов за ставку в 1 доллар.

Это понимание не мешает мне пытаться использовать любую потенциальную неэффективность на рынке. Сначала я придумываю общие стратегии ставок.

  • Я установил бюджет в 1000 долларов, разделенный поровну на 30 предыдущих раундов Премьер-лиги.Итак, каждые выходные я могу делать ставки примерно на 33 доллара.
  • Для каждого матча прогноз будет сделан одним из трех методов: (a) прогноз Пола Мерсона, (b) мои алгоритмы процесса Пуассона и (c) случайное присвоение равной вероятности выигрыша, ничьей и проигрыша.
  • С помощью прогноза я нахожу самый высокий коэффициент среди 6 онлайн-букмекерских контор . Это означает, что если я выиграю, я получу максимально возможную прибыль. Это будет коэффициент, на который я сделаю ставку.
  • Для каждого матча сумма ставки будет рассчитываться по критерию Келли [2], который работает по принципу: вы должны инвестировать только часть своего состояния.Отложив некоторые из них, вы не попадете в банкротство. Оптимальная доля ( f ) зависит от каждой отдельной ставки:
, где p * - вероятность того, что событие произойдет, а x - коэффициент

Реализовать критерий Келли довольно просто в R:

Остается вопрос, что считать истинная вероятность событий ( p * ) в формуле критерия Келли. Как мы видели в предыдущих частях, мы можем использовать обратные коэффициенты, данные любой конкретной букмекерской конторой, но это не будет в конечном итоге большим, поскольку они склоняются в пользу казино. Однако, если мы суммируем все коэффициенты от разных букмекерских контор, мы должны лучше понять, как букмекеры видят вероятность события, например, победы Арсенала над Man United:

, где n - количество букмекерских контор, а xi - заданные коэффициенты заведения i Результат этой стратегии ставок с использованием прогноза процесса Пуассона для последней Matchweek, Round 30. В этой таблице показано, как рассчитываются max_odd, вероятности прогнозируемых событий, доля ставки Келли, bet_amount

Для Matchweek 30, с 5 правильно предсказанными совпадениями и лучшими шансами, выбранными из 6 домов, мы получили чистый убыток в $ 0.9 или 90c для этого раунда с прогнозом Пуассона, встроенным в нашу стратегию ставок. Наша самая большая потеря произошла из-за того, что «Челси» не сумел вырвать 3 очка дома против «Волков».

Теперь, предполагая, что я использовал эту стратегию с самого начала Премьер-лиги, давайте посмотрим, как быстро нам удалось разбогатеть.

И мой алгоритм, и предсказания Мерсона - в сочетании с максимальными нечетными стратегиями с критерием Келли, чистый положительный доход к концу 30-й Matchweek 30, с предсказанием процесса Пуассона, достигающим колоссальных 9.1% доходности с нормализованной доходностью 0,3% за матч-неделю. Для сравнения, рыночная доходность ETF Vanguard S&P 500 составляет 4,6% [4].

Случайный метод приносит убыток 19% на первой итерации, главным образом потому, что несколько удачных ставок здесь и там («Манчестер Юнайтед» проиграл Вест Хэму) не могут компенсировать множество неудачных ставок (Лестер, Хаддерсфилд выиграли у Etihad. , Тоттенхэм проиграл Борнмуту, вроде честно?). Даже если я повторю случайное предсказание много раз, достаточно сказать, что я видел менее 10% случаев, когда случайные методы давали положительные результаты.

Очевидно, что этой оптимальной модели Пуассона присущи риски. Возьмем, к примеру, Matchweek 24, где мы получили чистый убыток в размере $ 14 доллара. И Мерсон, и модель процесса Пуассона (и я !!!) были очень уверены в том, что Ливерпуль, Манчестер Сити, Манчестер Юнайтед и Челси заработали 3 очка против Лестера, Ньюкасла, Бернли, Борнмута соответственно, предложив общую ставку в размере $ 19. Результат: «Ливерпуль» и «Манчестер Юнайтед» не смогли набрать все 3 очка, а «Челси» и «Манчестер Сити» потерпели поражение.Все в одни выходные !!!

Прежде чем вы клонируете мое репо на Github и привлечете капитал для своего спортивного хедж-фонда, я должен прояснить, что нет никаких гарантий. Вам нужен большой стартовый капитал (я моделирую с 1000 долларов, но каждую неделю у меня только 33 доллара на ставку), много терпения и хладнокровия.

Во всяком случае, эта статья - игрушечный пример того, что вы потенциально можете сделать. Но букмекерские конторы сильно усложнили задачу получения стабильной прибыли. Если букмекер считает, что вероятность выигрыша равна 1/6, то он гарантирует, что его ожидаемое потребление минус выплата будет положительным, установив коэффициент меньше 5, может быть, около 4.6. Если по-прежнему много людей делают ставки с коэффициентом 4,6, то букмекер наверняка понимает, что вероятность выигрыша должна быть выше, чем его собственная оценка, и скорректирует коэффициент, указав коэффициент 4. Скорее всего, когда код определяет наиболее оптимальные шансы, он был изменен.

Кроме того, если вы начнете получать регулярную прибыль, букмекеры могут просто поблагодарить вас за ваш бизнес, выплатить ваш выигрыш и закрыть ваш счет. Это то, что случилось с исследовательской группой из Токийского университета [3].

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

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

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

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

Давайте реализуем базовые стратегии ставок на основе коэффициентов биржи ставок. Десятичные коэффициенты - это отношение полной выплаты к ставке. Например, коэффициент 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,
К.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)
output = Dense (output_dim, Activation = 'softmax') (l)
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 в классификатор нейронной сети, используя настраиваемую функцию потерь . Это выходит за рамки коэффициента точности, который может ввести в заблуждение при разработке систем ставок.Мы считаем, что это полезно для всех, кто хочет использовать машинное обучение в спорте.

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

.

Грамматика Прилагательные Прилагательные для описания чувств / настроения / тона Прилагательные для описания личности и характера Прилагательные с –ed или -ing Прилагательные: Градируемые / не градуируемые прилагательные Прилагательные: Несравненные прилагательные Прилагательные: Противоположные Прилагательные: Порядок прилагательных Степень Наречия частоты Наречия манеры Наречия места Наречия времени Наречия: Интенсификаторы Наречия: Порядок наречий Апостроф SA статьиСтатьи: определенные артикли (the) Статьи: неопределенные артикли (а / ан) Статьи: нулевой артикль Вспомогательные глаголы Обратный сдвиг во времени (напр.грамм. WILL / WOULD) BE (вспомогательный глагол) BE + инфинитивные конструкции (например, он должен был стать знаменитым) BE ABLE TOBE: WAS или WERECANCAN или BE ABLE TOCAN или COULD Обозначение противопоставления (например, хотя, пока) Предложения цели (например, для того, чтобы , так что, чтобы) Пункты причины (например, потому, что, из-за, как, поскольку) Пункты результата (например, так) Расщепленные предложения (например, мы ищем Джоуи) Команды (императивы) Сравнение ( сравнительная и превосходная) Сравнение: Сравнительные прилагательные и структуры Сравнение: Превосходные прилагательные и структуры Сравнение: AS или THAN Условный 0 (ноль) Условный 1 (первое условное) Условное 2 (второе условное) - было бы Условное 3 (третье условное) Условные условия - Я хочу / Если только Условные - Смешанные условные выражения Условные выражения: условные фразы (например,грамм. если, при условии, что, пока) Союзы (также известные как связки, например, и, но, или, так, тогда) Согласные и гласные, Контракции (сокращенные формы, например, не, не и т. д.) Координация Счисляемые и несчетные существительные Определители (слова которые могут стоять перед существительными) Маркеры дискурсаDO или DOES Эллипсис (пропуск слов

.

Как улучшить ставки на спорт - пошаговое руководство на Python

Статистический метод кажется более сложным, чем традиционные методы. Но как сравнить характеристики?

Давайте рассмотрим три других традиционных метода:

Метод № 1: выигрыш-проигрыш%

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

Метод № 2: Победа домашней команды

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

Метод № 3: Разница мячей с преимуществом дома

Это сложный метод, который также содержит информацию о разнице мячей и преимуществе дома.

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

*** Пропустите их, если вы ненавидите формулы ***

Во-первых, для каждой конкретной команды , мы вычисляем:

Командная разница голов за игру = (Голы, забитые командой - Голы, разрешенные команда) / (Игры, сыгранные командой)

Далее мы используем все результаты прошлых игр, чтобы получить одну статистику, учитывающую все домашнее преимущество команды:

Разница мячей домашнего преимущества = (Голы, забитые всеми домашними командами— Голы, забитые всеми командами гостей) / (Игры, сыгранные всеми командами)

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

Снова воспользуйтесь примером в начале. Команда А (хозяева поля) сыграет с командой С (команда гостей). Для прогнозирования результата мы используем следующую статистику:

Маржа = Разница мячей команды A за игру - Разница мячей команды C за игру + разница мячей домашнего преимущества

Если маржа> 0, то мы делаем ставку на команду A ( домашняя команда) на победу. Если Margin <0, мы выбираем команду C (команда гостей).

*****************************

Чтобы сравнить эти методы, мы используем перекрестную проверку.

Наша статистическая модель - победитель!

Он имел точность предсказаний результатов хоккейных игр 60%!

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

.

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