Хабривет!

Хочу рассказать о своем мобильном приложении BTracker.

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

  • в каких компонентах игры она проигрывает и на что надо обратить внимание в будущих тренировках

  • есть ли у нее прогресс в игре

  • случайно или закономерно был выигран матч, в котором силы соперников примерно равны.

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

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

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

А вот и текущий результат: BTracker

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

Математическая модель событий и обработка данных

Прежде всего, я исходил из того, что при ручном вводе событий человек успеет нажать одной рукой на выбор одну из не более чем 3-х кнопок, так как в бадминтоне темп ударов может быть очень высоким. Каждому удару должно соответствовать одно нажатие на кнопку. Но какими должны быть варианты удара? В бадминтоне есть несколько классификаций удара (по типу траектории и по способу нанесения и силе удара). С одной стороны таких вариантов получается много и, с другой стороны, человек вряд ли успеет рассмотреть и классифицировать удар по сложной системе классификации. Поэтому я рискнул ввести свою классификацию ударов, по принципу “атакующий VS защитный”. В этой классификации очевидно, что смэш удар - это будет атакующий удар, а отброс на заднюю линию - защитный. Все остальные удары пользователь должен отнести к одному из этих двух типов или выбрать вариант “неопределенный удар”. Из этой классификации немного выпадает подача (первый удар), но классификацию для подачи было решено оставить для будущих версий.

Розыгрыш очка заканчивается одним из следующих исходов:

  • либо команда допустила попадание волана в своё поле

  • либо команда сделала удар вне поля соперника, в аут (со своей стороны сетки или со стороны противника)

  • либо команда допустила фол (допустила касание сетки, допустила касание волана тела игрока, сделала двойное касание).

Этот исход тоже можно фиксировать.

Далее, очевидно, что вывод об уровне мастерства можно сделать по частоте невынужденных ошибок. Поэтому это значение тоже следует фиксировать.

Соответственно, экран для трекинга получился следующим:

Для собранных данных можно считать различные виды статистик. Для основных статистик были выбраны следующие статистики:

  • Очки вподряд. В бадминтоне преимущество своей подачи - сильный фактор и оценка на количество очков, набранных вподряд без потери подачи, характеризует разницу сил игроков. Медиана в качестве оценки математического ожидания была выбрана потому, что вначале матча, до наступления момента “стационарности” в игре, могут быть значения, которые по своей сути скорее являются выбросами (распределены не так, как все остальные значения).

  • Разница очков при смене подачи - значение разницы в счете при переходе подачи. Если “очки вподряд” говорит о том, “сколько набираем”, то это значение говорит о том, к какому значению разницы очков обычно приходим. Для оценки значения выбрана медиана, по той же причине, что для “очков вподряд”.

  • Успешная подача и свой успешный прием. Это частота следующего события:

    • подающая команда сделала успешный удар? Нет - результат=неудача, Да - см. дальше.

    • принимающая команда успешно отбила волан? Нет - результат=успех, Да - см. дальше.

    • подающая команда сделала следующий удар (без учета результата удара)? Да - результат=успех, Нет - результат=неудача.

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

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

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

И вот два остальных экрана с статистиками по матчу:

Стоит пару слов сказать о методике обработке данных, получении оценок для сравнения и методике сравнения. Значения любой статистики вычисленные для 1-ой и 2-ой команды (номер команды является параметром) и которые независимы по построению (т.к. для 1-ой и 2-ой команд выбираются разные данные) будут выражать разницу сил команд. Однако для статистически значимого сравнения значений подходят только оценки параметров для известного распределения вероятности. Распределение можно будет считать известным только в предположении о том, что эмпририческое распределения сошлось к известному асимптотическому распределению, как правило, к нормальному. Все значения цветовых индикаторов вычислены в этом предположении как значение t-критерий Уэлча (поправка к критерию Стьюдента для случая разных дисперсий).

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

Итог

В итоге было создано приложение BTracker, которое позволяет статистически значимо сравнить силы двух игроков (двух команд):

  • по количеству набора очков вподряд и разницы в очках при смене подачи

  • по качеству подачи

  • насколько хорошо игрок (команда) использует преимущество своей подачи

  • насколько хорошо игрок (команда) обороняется, если преимущество подачи у противника (команды противника)

  • насколько хорошо игрок (команда) атакует

  • насколько хорошо игрок (команда) обороняется

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

  • разница в количестве ошибок “в поле”, как показатель разницы сил игроков (команд).

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

  • покомпонентно оценивать прогресс/регресс игрока

  • сделать версию для iPhone и web

  • на основе имеющихся данных давать советы для будущих тренировок

  • давать советы к игре против соперника с заданным профилем.

Удачи в бадминтоне и не только.

---

Cсылки:

Комментарии (7)


  1. soloveid
    24.10.2021 12:02

    Как происходит работа с приложением совсем непонятно.

    Кто-то должен постоянно фиксировать и классифицировать каждый удар всю игру?

    Что нового может сказать приложением, чего не может сказать тренер?


    1. ady1981 Автор
      24.10.2021 12:13

      Да, верно, пользователь должен фиксировать каждый удар, чтобы собрать данные.

      Тренер может сказать свое субъективное мнение. Отследить компоненты игры у каждого игрока тренер не в состоянии, так как зачастую у него много спортсменов. И тем более он не может оценить прогресс или регресс в компонентах игры по времени.


  1. GomboTs
    24.10.2021 13:20

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


    1. ady1981 Автор
      24.10.2021 13:38

      Нет, не пробовал. Прикольно, что оно само что-то меряет. Но замерять оно может только частоту ударов и, возможно, силу удара и положение ракетки.


  1. depadep
    19.11.2021 18:40

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

    Но верно ли это для современных правил?


    1. ady1981 Автор
      19.11.2021 22:11

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


      1. depadep
        20.11.2021 11:56

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

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