Использование настраиваемой функции потерь для определения справедливых шансов.

«Дилер всегда выигрывает» - типичная поговорка в азартных играх. Это отражает тот факт, что в большинстве азартных игр казино (например, казино или букмекерская контора) имеет статистическое преимущество. Другими словами, предполагая, что сумма ставки равна 1, казино имеет ожидаемую доходность выше 1, в отличие от игрока, у которого ожидаемая доходность меньше 1. Следовательно, если вы посетите казино, скорее всего, вы получите чистую прибыль. потеря в долгосрочной перспективе.

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

Вот небольшой пример. Давайте возьмем двух игроков в дартс, которые имеют одинаковую квалификацию и, таким образом, объективно у обоих будет 50% шанс на победу в очной игре. Букмекерская контора может установить коэффициенты, которые мы определим как O₁ и O₂ для игрока 1 и 2 соответственно. Для этой конкретной игры O₁ = O₂ = 1.90 было бы разумным коэффициентом. Это означает, что за каждую ставку в 1 доллар вы получите обратно 1,90 доллара в случае выигрыша. Но какова ожидаемая стоимость вашего дохода, X? Что ж, если вы поставите 1 доллар на выигрыш игрока 1, ваш ожидаемый доход от этой игры будет (помните, что вероятность выигрыша для каждого игрока составляет 50%):

Таким образом, в конечном итоге каждый потраченный доллар приносит 95 центов, и вы понесете убытки! Т.е. «Выплата», которую устанавливает букмекерская контора для этой игры, составляет 95%, что означает, что букмекер ожидает получить прибыль в размере 5% по всем ставкам, если они правильно оценили вероятность выигрыша. Таким образом, мы видим, что букмекерские конторы не справедливы, справедливые коэффициенты были бы O₁ = O₂ = 2,0. Обратите внимание, что эти шансы также соответствуют равным шансам на выигрыш для каждого игрока, а именно P₁ = O₂ / (O₁ + O₂) = 0,5 и P₂ = O₁ / (O₁ + O₂) = 0,5.

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

Как обыграть букмекера

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

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

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

Рис. 1 показывает, что букмекеры оценивают вероятности прямо на большой выборке игр. Но они все равно могли ошибаться в ряде отдельных игр. Стратегия 2, как указано выше, основывается на определении того, где букмекеры неверно оценивают фактическую вероятность. Например, в нереалистичном событии, когда букмекерская контора предложит равные коэффициенты, например O₁ = O₂ = 1,90, в матче между действующим чемпионом мира Майклом ван Гервеном против 94-го номера в мире наша интуиция уже подсказывает нам, что мы, вероятно, сможем получить прибыль, сделав ставку на ван Гервена. Цель состоит в том, чтобы идентифицировать все такие игры. Однако, поскольку в большинстве случаев нелегко определить, когда букмекеры ошибаются, мы можем попробовать использовать алгоритм машинного обучения (ML), который сделает это за нас.

Ставки на дартс с помощью ML

Для целей этого проекта мы использовали статистику по дартс, включая такие функции, как средние значения, процент кассовых сборов, количество 180 (максимальный результат с 3 дротиками) и статистику личных встреч. Кроме того, мы использовали исторические коэффициенты, чтобы оценить, могла ли эта модель принести прибыль.

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

Пользовательская функция потерь

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

Пользовательская функция потерь содержит два элемента, члены в квадратных скобках - это доход, если мы сделаем ставку 1 доллар - на игрока 1 или 2 соответственно. Обратите внимание, что это зависит от результата игры (yᵢ), если мы ошибаемся, мы теряем свои деньги. Функция ReLu содержит нашу стратегию ставок. Он обладает тем свойством, что Relu (x) = 0, когда x ≤ 0, и Relu (x) = x в противном случае. Аргументом является наша ожидаемая доходность: шансы, умноженные на нашу предполагаемую вероятность выигрыша минус 1. Учитывая свойства функции ReLu, это означает, что она больше 0 только в том случае, если мы считаем, что шансы благоприятны для нас. Другими словами, если наша модель считает, что шансы несправедливы, она не будет делать никаких ставок. С другой стороны, чем более благоприятны шансы, тем большую ставку модель сделает.

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

Так как же это работает?

Чтобы протестировать производительность нашей модели, мы построили плотносвязную нейронную сеть с двумя скрытыми слоями. Последний слой - это сигмовидный слой, который предсказывает вероятность выигрыша игрока 1. Затем, используя коэффициенты букмекерской конторы и результат игры, мы вычисляем проигрыш с помощью пользовательской функции проигрыша, описанной выше. Все это реализовано в PyTorch.

Поскольку это временной ряд, модель обучается на исторических данных до заданного момента и впоследствии применяется к следующим 50 играм. Затем этот процесс повторяется для следующих 50 игр и т. Д. Результаты показаны на рис. 2.

Наша модель смогла получить прибыль, хотя и с большими колебаниями во времени. Он понес несколько крупных убытков, но также получил некоторые крупные выигрыши, компенсирующие убытки. В итоге рентабельность инвестиций составила около 10%. В качестве эталона мы взяли стратегию, в которой мы всегда делаем ставку на игрока, который, по мнению букмекера, с наибольшей вероятностью выиграет (что не сильно отличалось бы от модели, в которой мы оптимизируем с использованием бинарной кросс-энтропии для прогнозирования победителя). Поскольку шансы нечестные, в конечном итоге мы теряем около 5%.

В итоге

  • Букмекеры получают прибыль, контролируя выплаты.
  • Что касается дартса, они, как правило, хорошо оценивают вероятность выигрыша. Это затрудняет получение прибыли, просто прогнозируя исход игры в дартс.
  • Модель машинного обучения с настраиваемой функцией потерь - с целью выявления недостатков в букмекерских коэффициентах и ​​получения прибыли, а не оптимизации точности правильного предсказания победителя - может обеспечить прибыльную стратегию ставок.
  • Возврат инвестиций в любой момент времени подвержен значительным колебаниям, и прибыль можно ожидать только в течение продолжительных периодов времени.
  • Представленная модель отнюдь не является гарантированно прибыльной машиной. Вместо этого он служит доказательством концепции, описывающей, как настроить вашу модель машинного обучения, чтобы превзойти букмекерскую контору.

Благодарности

Спасибо Guido Tournois, с которым я работал над этим проектом.

Об авторе

Ричард Бартельс - специалист по анализу данных в Vantage AI, консалтинговой компании в области анализа данных в Нидерландах. Если вам нужна помощь в создании моделей машинного обучения для ваших данных, не стесняйтесь обращаться к нам по адресу [email protected].