Машинное обучение для лотерей

Предоставлено Стивеном Пенрисом. С 23 сентября по 18 декабря 2015 года он прошел 12-недельную программу обучения в Академии наук данных Нью-Йорка по программе Data Science Bootcamp .

Предоставлено Стивеном Пенрисом. С 23 сентября по 18 декабря 2015 года он прошел 12-недельную программу обучения в Академии наук данных Нью-Йорка по программе Data Science Bootcamp . Это сообщение было основано на его четвертом учебном проекте (срок сдачи - 8-я неделя программы).

Счастливые числа, часть 2: машинное обучение для понимания предпочтений игроков в лотерею

Стивен Пенрис

Вступление

В ходе быстрого ненаучного опроса на недавней встрече NYC Data Science Academy большинство людей указали, что они когда-то играли в лотерею, но из тех, кто играл, лишь немногие указали, что они выбирают свои собственные числа. Но была ли моя аудитория на встрече представительной выборкой игроков в лотерею? Скорее всего, нет, учитывая количественные навыки, которые можно ожидать от людей, которые предпочитают проводить вечер, слушая презентации по науке о данных. Цель этого проекта - понять поведение участников лотереи при выборе в целом. В частности, я хочу ответить на следующие вопросы:

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

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

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

Вот краткая предыстория для читателей, которые не знакомы с лотереями. В играх, которые я изучал, лотерея разыгрывает 5 или 6 различных чисел из набора примерно из 40 целых чисел, и порядок, в котором выпадают числа, не влияет на размер призов. Например, New Jersey Cash 5 рисует 5 чисел от 1 до 43. Набор, из которого выбираются числа, называется «матрицей» (не путать с одноименным математическим объектом). В играх Cash 5 есть несколько сотен тысяч возможных исходов, а в игре Oregon - около 12 миллионов исходов. Шансы на выигрыш призов, которые я обсуждаю, варьируются от 1 из 100 до 1 из 1000. Целевое количество для каждой модели - это сумма приза, которую лотерея выплатит каждому победителю с учетом набора выпавших номеров.

Организация и инфраструктура анализа

Первая проблема, с которой я столкнулся в этом проекте, заключалась в том, чтобы различные компоненты были организованы и достаточно единообразны. Необходимость в организации частично возникла из-за моего плана по созданию отдельных моделей не только для каждой игры, но и для разных уровней призов в играх (например, приз за совпадение трех чисел и приз за совпадение четырех чисел для каждой игры «Cash 5». .) Более того, в данных есть идиосинкразии, которые не связаны с выбором игроков, но все же влияют на призовые выплаты:

  • Нью-Джерси расширил свою «матрицу» в сентябре 2014 года и соответственно изменил распределение призовых денег. Мне пришлось ограничить свой набор данных розыгрышами, к которым применяется текущая схема призов.
  • В Texas Cash 5 приз за угаданные 4 числа зависит от того, выиграли ли какие-либо игроки приз за угаданные 5 номеров, потому что, когда никто не выигрывает главный приз, деньги джекпота делятся между обладателями второго приза, а не переходят к следующему. розыгрыш джекпота. Я создал отдельные модели для каждого из этих случаев.
  • В игре «Фэнтези 5» во Флориде вторые призы увеличиваются, когда нет главного победителя, а также существует ограничение в 555 долларов на вторые призы. Если главный призер отсутствует, а выплата второго приза равняется более чем 555 долларов США, лишние деньги добавляются к третьему призовому фонду. Я справился с этим, просто ограничив свои данные розыгрышами, в которых был выигран джекпот, а это в подавляющем большинстве случаев.

Всего было проведено 12 анализов.

  1. FL Fantasy 5, приз за 3 матча, розыгрыши как минимум с 1 победителем джекпота
  2. FL Fantasy 5, приз на 4 матча, розыгрыши как минимум с 1 победителем джекпота
  3. NJ Cash 5, приз за 3 матча
  4. NJ Cash 5, приз за 4 матча
  5. PA Cash 5, приз за 3 матча
  6. PA Cash 5, приз за 4 матча
  7. NC Cash 5, приз за 3 матча
  8. NC Cash 5, приз за 4 матча
  9. TX Cash 5, приз за 3 матча
  10. TX Cash 5, приз за 4 матча, без джекпота
  11. TX Cash 5, приз за 4 матча, минимум один победитель джекпота
  12. ИЛИ Megabucks, приз за 4 матча

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

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

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

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

- регрессия

- эластичная сеть

- k ближайших соседей

- случайные леса

- усиление, применяемое к случайным лесам с деревьями глубиной до 3

К счастью, пакет R «caret» («обучение классификации и регрессии») использует стандартные функции, упрощающие настройку и обучение различных моделей.

Как только я все стандартизировал, обучение моделей стало несложным. Я отключил данные 31 июля 2015 года, чтобы у меня был набор последних данных, которые не были затронуты никакими процессами обучения, проверки или выбора модели. Я разделил обучающие / тестовые наборы в пропорции 75/25 и использовал среднеквадратичную ошибку на тестовом наборе в качестве критерия для окончательного выбора модели. Я использовал 5-кратную перекрестную проверку для настройки моделей и обычно использовал сетки каретки по умолчанию для возможных параметров настройки.

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

Модель Производительность

Вот сводные данные по результатам розыгрышей моделей с 1 августа 2015 года. (Помните, эти розыгрыши не использовались для обучения или выбора моделей.) Для анализа, в котором рассматривались призы за 3 матча, я округлил прогнозы до ближайшего 1,00 или 0,50 доллара (в зависимости от степени детализации реальных призов игры) и представил результаты в матрице неточностей. Я также показываю среднюю абсолютную процентную ошибку или MAPE. Ошибки стабильно составляют около 5% от фактических значений.

Для анализа с четырьмя совпадениями я сделал диаграммы рассеяния, а не матрицы путаницы. Процент ошибок обычно находится в диапазоне от 10% до 15%. Я считаю, что более низкая точность связана с тем, что в этих случаях меньше победителей, поэтому на суммы призов больше влияют случайные вариации.

Применение моделей

Это точные модели, но у них есть один недостаток:ОНИ НЕ ОТВЕЧАЮТ НА НАШИ ВОПРОСЫ.Они просто отвечают на вопрос: «Какую предполагаемую сумму приза лотерея выплатит победителям за данную выпавшую комбинацию?» Можно утверждать, что модели что-то говорят о том, какие комбинации наиболее популярны, потому что низкие призовые выплаты соответствуют популярным комбинациям. Но они не очень помогают в понимании нашего второго вопроса: насколько сильно это повлияет на ожидаемый приз данного выбора? Например, если мы хотим узнать ожидаемый приз за 3 матча для выбора, мы должны применить соответствующую модель к нескольким тысячам других возможных розыгрышей, которые совпадают в 3 местах, и к, и к нескольким тысячам других возможных розыгрышей. Возможно, что когда мы усредним все выигрышные комбинации, не будет большой разницы в ожидаемой сумме приза. Итак, нам нужно сделать несколько применений моделей, и мы должны делать это эффективно.

Более формально, учитывая модель для оценки ожидаемого приза за матчи, следующее выражение дает ожидаемую сумму приза для данного выбора:

В общем, большой: когда игра выбирает числа из. Например, в 3-матчевом анализе New Jersey Cash 5. Поскольку это выборки для оценки (962 598 в примере Нью-Джерси), нам нужно сделать расчеты модели как можно более эффективными. Одна тактика состоит в том, чтобы предварительно вычислить модель для всех комбинаций и просто найти эти значения при оценке. И список предварительно вычисленных значений будет наиболее эффективным, если он находится в лексикографическом порядке, потому что тогда существует быстрый алгоритм для поиска позиции данного значения в списке, используя только элементы.

К сожалению, я обнаружил, что даже с такой эффективностью для одного выбора требуется около 0,8 секунды. При такой скорости потребуется от 8 до 9 дней, чтобы оценить все ожидаемые призы за 3 матча для New Jersey Cash 5, и это только один из моих двенадцати анализов! Поэтому мне нужно было найти более быструю реализацию.

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

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

что можно оценить очень быстро: все 12 моих анализов были выполнены примерно за час. (См. Приложение для доказательства этого.)

Итак, мы наконец можем найти варианты для каждой игры с 10 наименьшими ожидаемыми суммами призов. Вот результаты для каждого 3-матчевого анализа.

Кэш Нью-Джерси 5:

Пенсильвания Кэш 5:

Кэш Северной Каролины 5:

Уровень согласия между различными наборами данных поистине замечателен. Цифры низкие, все меньше 12, но 2, 4 и 6 не фигурируют ни в одном из списков. Между тем числа 7 и 11 встречаются почти в каждой комбинации.

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

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

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

Выводы

Помимо понимания лотереи, я думаю, что здесь можно извлечь несколько уроков по науке о данных:

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

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

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

Приложение

Чтобы доказать это, нам нужно показать две вещи:

- Если то из наборов в contain

- Если то из наборов в contains

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

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