«Мы с тобой одной крови». Какие команды НБА играют в одном стиле?
Чтобы выжить, нужно адаптироваться.
НБА меняется - эра трехочковых подвинула классических центровых, дав дорогу малышам с броском. Голден Стейт сезона 2015/2016 - плоть от плоти современного баскетбола, фактически именно они задали стандарты современной игры, пройдясь катком в регулярке и побив "вечный рекорд". Но, как и в природе, невозможно занять одну и ту же экологическую нишу всем сразу. Набор исполнителей, тренер и другие факторы определяют, как именно будет играть команда в реалиях нынешней НБА. Спектр широк - от "трехочковых" Кливленда или Голден Стейт до "двухбашенных" Пеликанс. Вопрос в том, насколько он широк? Попытаемся выяснить.
Все дальнейшие рассуждения опираются только на одну гипотезу - по статистике команды можно понять, в какой баскетбол она играет. На официальном сайте НБА (stats.nba.com/teams) есть порядка 100 различных характеристик для каждой команды, усредненных по всем матчам этого сезона. Они включают в себя как стандартные "число очков за игру", "процент реализации трехочковых", так и довольно экзотические "очки соперника после потерь".
Важный момент, который хочется особо отметить - для выявления закономерностей в игре команд характеристики вида "число побед", "общее число очков", "число пропущенных очков" учитывать конечно не надо, так как они являются следствием этой самой игры (которая может быть хорошей, а может быть плохой, что и влияет на эти значения). А вот например "число попыток трехочковых" - хорошая характеристика, которая показывают, как часто команда уповает на трехочковые.
Итак, каждая команда определяется сотней чисел. Отлично! Теперь кластеризуем команды!
В этом параграфе приведено более подробное описание метода. Во-первых, нормализуем все статистики, чтобы исчислять их в одной шкале (что важно для кластеризации, где шкала влияет на важность статистики). Например, число подборов команды в среднем лежит в интервале [0, 20], а процент реализации бросков в интервале [0.40, 0.60]. Нормируем каждую статистику с помощью линейного преобразования так, чтобы она лежала в интервале [0, 1]. Теперь каждая команда задаются сотней чисел, каждое из которых больше 0 и меньше 1, и всего команд 30. Экспериментальным путем было установлено, что оптимальное число кластеров - 5. Для каждого полученного кластера определим его "центр" - то есть типичный набор статистик для представителей этого кластера, и собственно его типичного представителя - команду, наиболее близкую к "центру" кластера. Также вычислим, насколько "центры" кластеров удалены друг от друга, какие их статистики наиболее различаются, чтобы понять особенности каждого кластера. И, наконец, с помощью метода понижения размерности попробуем визуализировать все клубы на одной картинке - сложность заключается в том, что изначально команда задается сотней чисел, а нужно разместить их на плоскости, т.е. задать команду двумя числами (координатой x, координатой y) так, чтобы расстояния между командами почти не изменилось (похожие статистически команды были близки на картинке, не похожие - далеки).
Визуализация получившегося разбиения:
По полученным "центрам" кластеров можно описать, что из себя представляют вошедшие в него команды:
"Желтые". Типичный представитель - Houston Rockets Хьюстон и Голден Стейт. Космос. Сливки общества. Олицетворения сегодняшнего баскетбола. Эти две команды отличаются высоким количество дальних попыток (и процентом их попаданий), числом ассистов и стилов. У них достаточно высокий показатель PACE, т.е. скорость игры. Двухочковые - атавизм в их игре, они несут им мало очков. Эти две команды позволяют двигать мяч своим соперникам, что выражается в увеличении числа ассистов оппонента, но при этом они стараются не давать бросать соперникам трехочковые, чтобы не погибнуть от своего же оружия.
"Черные". Типичный представитель - Sacramento Kings Типичные характеристики этих клубов - более медленный темп, больше фолов на сопернике. Их защита заставляет соперника совершать больше потерь. Эти команды очень эффективно играют 2х очковые изоляции, в основном за счет индивидуального мастерства. Но при этом плохо забрасывают трехочковые после комбинаций. Эта старая схема с эволюционировавшими большими, которая позволяет держаться на плаву в современных условиях.
"Красные". Типичный представитель - LA Clippers Самые заметные отличия этих клубов - меньше число потерь благодаря выстроенной системе или талантливым разыгрывающим. Это заметно уменьшает число очков соперника в быстрых отрывах, то есть число "легких" очков. True shooting percentage этих команд не очень эффективен, так как они не совсем отказались от 2х очковых. Эти клубы - своеобразный гибрид старого и нового.
"Синие". Типичный представитель - Los Angeles Lakers Даже статистика говорит, что команды имеют в своем составе атлетичных игроков или неплохих больших. Это сказывается на числе подборов в нападении, количестве очков в краске и количестве блоков за игру. Все это несомненно несет за собой увеличение числа фолов и уменьшает скорость игры. Отличительной чертой клубов являются частые потери мяча вследствие манеры игры их игроков. Так же из-за плохо выстроенной защиты или набора исполнителей повышено количество бросков соперника. Если в вашей команде нет Рассела Уэстбрука - эта схема вряд ли будет жизнеспособна. Она не похожа ни на старые команды, ни на команды новой эры. Можно сказать, что эти команды сами пока не знают, во что они играют.
"Зеленые". Типичный представитель - Orlando Magic Сюда входят клубы, которые пока что плохо приспособились к изменившимся условиям. Упор на двухочковые, большое число изоляций как в защите, так и в нападении, частые проходы в краску. Кажется это было популярно лет 10 назад...
Проведенное исследование не претендует на 100% истину. В идеальном мире разные статистики должны учитываться с разным весом, так как не все они равнозначны по важности. И еще - приводить полученные "центры" кластеров сейчас я конечно не буду, если вы конечно не хотите увидеть полотно из 500 чисел :)
Хотелось бы подвести итоги. НБА, как и весь баскетбол, не стоит на месте. Постоянно меняются тенденции, что-то приходит, а что-то уходит. К сожалению, не все клубы вовремя осознают это, чем расстраивают своих болельщиков. Ведь в современном мире команды должны уметь приспосабливаться к новому баскетболу, чтобы быть успешными.
Чтобы выжить, им нужно адаптироваться.
Для примера Бруклин в атаке играет в гибрид Атланы, ГС, Сперс и Хьюстона (конечно куда менее эффективно чем оригиналы (отсюда и большое количество потерь)) но не попал в группу ни к одной из этих команд, а попал в группу, которая охарактеризовывается как: "Даже статистика говорит, что команды имеют в своем составе атлетичных игроков или неплохих больших. Это сказывается на числе подборов в нападении, количестве очков в краске и количестве блоков за игру. Все это несомненно несет за собой увеличение числа фолов и уменьшает скорость игры" Бруклин далеко не самая атлетичная команда с самым быстрым темпом в лиге, что как раз добавляет количество подборов и блоков (хотя отношение количества подборов к возможностям подобрать у Бруклина очень не высоко). Так что для более объективной картны нужно либо убирать так много критериев и оставлять какие-то основные, либо хотя бы учитывать их не с одинаковой ценностью...
p.s. не углублялся в статистику, но красная группа выглядит максимально далеко друг от друга: Кливленд с его трешками и Торонто вообще без трешек практически, бегущий и высоко темповой Портленд и максимально медленная Юта... )))
Я использовал k-means - самый простой.
Весь код на питоне - думаю, что для таких задач это самый оптимальный язык, можно написать все буквально "на коленке" + к нему есть куча библиотек. Для скрэпинга сайта я использовал selenium (так как надо было исполнять javascript при загрузке сайта), для кластеризации - sklearn, numpy, для картинки - matplotlib
А также разные +/-, общее число очков - про эти я написал в статье. В общем то, что сразу захотелось отбросить, было отброшено, остальное никак не было тронуто.
Конкретно в моем случае выходит:
%PTS PITP - Percent of Points (Points in the Paint):
Желтые - 39.95 %
Черные - 42.3571428571%
Красные - 38.1888888889 %
Синие - 44.32 %
Зеленые - 41.1 %
Потому что я вижу группировку по "трехам". Но можно бросать трехи и ходить в краску - это одна игра. А можно бросать много трех, а кроме них средние, и быть джампшутинговой командой, у которой в краске не получается. И если две такие команды попадают в одну категорию, то к принципу отбора будет много вопросов.
Кстати, спасибо за ваш блог. Люблю, когда информацию подают в таком соусе.
Интересна тех.часть вопроса: какой использовался алгоритм кластеризации? И каким инструментом пользовались (мат пакет какой-либо или ЯП с библиотеками)? Если есть на гитхабе было б вообще круто.
И не только этот показатель. Все деление как будто построено на двух показателях: темп и трехи. Это все? Orly?