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

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

Модель:

Для построения модели я буду использовать Python и его библиотеку машинного обучения LightGBM, которую я буду использовать для его инструментов классификации с градиентным усилением. Если вы не знаете, что такое алгоритм классификации с градиентным усилением, и хотите узнать больше, не стесняйтесь посмотреть это отличное видео от StatQuest для более глубокого изучения. На данный момент все, что вам нужно знать о нашей модели, это то, что это, по сути, алгоритм двоичной классификации, в котором две классификации являются либо колебанием, либо взятием (Примечание: нас не волнуют результаты колебания, независимо от того, тесто качнулось).

Данные:

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

Особенности:

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

  1. Расположение поля
  2. Скорость подачи
  3. Вертикальный и горизонтальный разрыв поля
  4. Счетчик, в котором выброшена подача
  5. Тип шага предыдущего шага (если это не первый шаг бита)

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

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

Счет, в котором выбрасывается подача, также влияет на решение бьющего замахнуться или нет. Например, тесто обычно намного более избирательно при подсчете нападающих, например, 3–0, и не будет качаться ни в чем, если оно не будет идеальным; но когда нападающий проигрывает 0–2, он часто замахивается на все, что находится рядом с зоной удара.

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

Теперь, когда у нас есть все эти данные, мы можем наконец приступить к обучению модели.

Обучение модели:

Чтобы тренировать модель, я выбрал первым игроком с низов Reds Джоуи Вотто в качестве нападающего. Я выбрал Вотто, потому что он известен своей предельной избирательностью в выборе высоты тона, и я хотел посмотреть, будет ли это отражать наша модель. После обучения модели с пошаговыми данными за последние 5 сезонов Джои Вотто мы получили оценку точности 0,795. Это означает, что наша модель смогла правильно предсказать, качался ли Вотто на шаге в 79,5% случаев. Хотя это и не идеально, но выглядит многообещающим. Невозможно рассчитывать на точность, близкую к 100%, потому что из-за человеческой ошибки и случайного характера бейсбола невозможно предсказать с абсолютной уверенностью. После небольшой настройки гиперпараметров я смог получить оценку точности до 80,5%, что должно быть более чем достаточно для целей нашей модели.

Использование модели:

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

Этот график дает нам прогнозируемую моделью вероятность того, что Джои Вотто нанесет удар по фастболу Тайлера Гласноу, если тот бросит его на первой подаче биты. Использование прогнозируемой вероятности модели таким образом гораздо более полезно и дает больше понимания, чем просто указание модели, будет ли изменение высоты тона или нет. Модель будет предсказывать питч с вероятностью 51% и питч с вероятностью 98%, так как оба будут качаться, но это явно два очень разных шага. Визуализируя данные, мы вместо этого можем увидеть, насколько вероятно, что Votto будет колебаться на определенной высоте, а не просто получить ответ «да» или «нет».

Глядя на предыдущий график, мы видим, что вероятность того, что Вотто нанесет удар по фастболу, составляет около 80% на питчах над сердцем тарелки, но быстро уменьшается по мере того, как вы добираетесь до краев зоны удара. Это похоже на то, что мы знаем о Джои Вотто. Он очень избирательный нападающий с элитным взглядом, поэтому имеет смысл, что по мере того, как вы удаляетесь от центра тарелки, вероятность его удара снижается. Это дополнительно подчеркивается на первом шаге бита, когда нет необходимости замахиваться на что-то, что нелегко ударить. Наша модель кажется точной на основе этого первого результата, но давайте копнем глубже, чтобы убедиться в этом. Один из способов проверить точность нашей модели - это посмотреть на скорость колебания Вотто в отсчетах 0–0, чтобы увидеть, похоже ли она на то, что дала наша модель.

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

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

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

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

Первое и наиболее очевидное применение - улучшение отчетов о разведке нападающих для питчеров. Хотя данные о частоте колебаний доступны и могут быть хорошо визуализированы на таких веб-сайтах, как Baseball Savant, данные часто могут быть очень ограниченными или слишком общими. Если нападающий встречался с питчером всего пару раз за свою карьеру, размер выборки слишком мал, чтобы дать какое-либо значимое представление. Точно так же, если вы попытаетесь сделать обобщения и смоделировать скорость поворота для определенного типа шага, вы потеряете конкретность. Подобные модели помещают медленную, зацикленную кривую Клейтона Кершоу в ту же категорию, что и быстрые, ломающиеся кривые Тайлера Гласноу, что вредит точности модели в отдельных случаях. Используя модель, подобную той, которую мы создали здесь, вы можете получить лучшее из обоих миров. Даже если нападающий не встречался с определенным питчером, он, скорее всего, встречался с несколькими разными питчерами с похожими подачами. Используя среднее движение / скорость подачи каждого питчера, модель может с относительной точностью предсказать поведение нападающего, даже если данные об их конкретном матче скудны. Это может помочь составить отчеты о разведке, адаптированные к конкретному питчеру, и дать представление о поведении отбивающего, которое в противном случае осталось бы незамеченным.

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

Если вы зашли так далеко, спасибо за чтение и не стесняйтесь оставлять мне какие-либо советы и / или критические замечания! Если вы хотите ознакомиться с кодом модели, вот ссылка на репозиторий GitHub.