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

Кластеризация K-средних – это метод векторного квантования, который направлен на разделение n наблюдений на k кластеров, в которых каждое наблюдение принадлежит кластеру с ближайшим средним (кластерные центры или центроид кластера).

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

Для обучения К-средних и группировать игроков на основе факторов сходства.

Начнем с импорта необходимых библиотек и загрузки файла Excel («FB_stats.xlsx»).

Давайте посмотрим на все имена позиций, чтобы отфильтровать набор данных по позиции.

В этом случае я хочу обучить алгоритм K-средних только для крайних защитников.

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

Мы будем фильтровать набор данных с позициями («DF», «DFFW»), чтобы оставаться с защитниками и более атакующими защитниками.

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

Чтобы упростить и не получить результат со слишком большим количеством игроков, мы будем анализировать только игроков Премьер-лиги.

Фильтрация набора данных только по игрокам Премьер-лиги. Мы остаемся с 71 игроком из первого набора данных для анализа и применения алгоритма K-средних.

Далее отфильтруем интересующие нас столбцы для кластеризации.

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

  • 'Игра 90-х' – количество сыгранных минут, разделенное на 90.
  • TotDistance — общее расстояние в ярдах, пройденное выполненными проходами в любом направлении.
  • PrgDistance — прогрессивная дистанция паса — общее расстояние в ярдах, которое пройдено выполненными пасами до ворот соперника. Примечание. Пасы от ворот соперника засчитываются как ноль прогрессивных ярдов.
  • «Ключевые пасы» — пасы, которые непосредственно ведут к броску (ассистированные броски).
  • «Пенальти пасов» — выполненные пасы в штрафную 18-ярдовую штрафную площадь Не включая стандартные положения
  • «Навесы в штрафную зону» — выполненные навесы в штрафную площадь 18 ярдов Не включая стандартные положения
  • «Прогрессивные пасы» — выполненные пасы, перемещающие мяч к воротам соперника не менее чем на 10 ярдов от его самой дальней точки за последние шесть пасов или любой выполненный пас в штрафную площадь. Исключает передачи от защитников на 40% поля.
  • «Завершенные передачи в пространство между защитниками» — Завершенный пас, отправленный между задними защитниками в открытое пространство.
  • 'Sw (ширина паса +40 м) – пасы, которые проходят более 40 ярдов по ширине поля.
  • «Наземные проходы»
  • «Низкие передачи» — передачи, которые отрываются от земли, но остаются ниже уровня плеч.
  • «Высокие передачи» — передачи выше уровня плеч на пиковой высоте.
  • "Помощь"
  • 'Получены прогрессивные передачи'
  • Completion Total % – процент успешного завершения
  • «Короткие завершенные передачи %» — процент завершенных передач, передачи от 5 до 15 ярдов.
  • 'Средние пасы %' – процент успешных пасов, пасы на расстоянии от 15 до 30 ярдов.
  • «Длинные передачи %» — процент завершенных передач, передачи длиннее 30 ярдов.
  • 'Выиграно воздушных дуэлей%'
  • ‘Tackled dribbled%’ — процент дриблеров, совершивших бросок, разделенный на количество дриблеров, совершивших бросок, плюс время ведения.
  • "Dribbled Past" – количество дриблинга соперника.
  • 'Touches Mid 3rd' — касания середины 1/3
  • 'Touches Att 3rd' — касания в атаке на 1/3.
  • 'Touches Attacking Area' — касания в атакующей штрафной площади.
  • «Дриблинг успешен» – nº успешных дриблингов
  • «Успех ведения%» — процент успешно завершенных дриблинга.
  • «Игрок обыграл» — количество игроков, прошедших мимо.
  • "Carries" – сколько раз игрок контролировал мяч ногами.
  • Общее расстояние – общее расстояние в ярдах, на которое игрок переместил мяч, контролируя его ногами, в любом направлении.
  • ‘Progressive Distance’ – прогрессивное расстояние – общее расстояние в ярдах, на которое игрок переместил мяч, контролируя его ногами, к воротам соперника.
  • «Прогрессивные переносы» — переносы, перемещающие мяч к воротам соперника не менее чем на 5 ярдов, или любые переносы в штрафную площадь. Исключает керри из защиты на 40% поля.
  • 'Выносы в финальную 3-ю позицию' – Выносы, которые входят в 1/3 поля, ближайшую к воротам.
  • «Вынос в штрафную зону» — Вынос в штрафную 18-ярдовую.
  • Выстрел в цель
  • ‘npxG’ — ожидаемое количество голов без пенальти за 90 минут игры.
  • «Действия, создающие бросок» — действия, создающие гол — два атакующих действия, непосредственно ведущих к голу, например пасы, ведение мяча и фолы в розыгрыше.

Примечание. Один игрок может получить баллы за несколько действий, и игрок, делающий выстрелы, также может получить баллы.

  • "Действия по созданию цели" – аналогичный предыдущим показателям, но для целевых ситуаций.
  • 'On-Off' – xG Plus/Minus Net – чистое ожидаемое количество голов за 90 минут команды, пока игрок был на поле, минус чистое ожидаемое количество голов за 90 минут, когда команда отсутствовала. шаг.
  • xG+/-90 — xG Plus/Minus — ожидаемое количество забитых голов минус ожидаемое количество голов, разрешенных командой, пока игрок находился на поле, за 90 сыгранных минут.

Давайте проверим, есть ли у нас недопустимые значения.

Копия df_eng для использования позже

Удалите идентификаторы игроков и нормализуйте наши данные с помощью Min Max.

Мы используем PCA здесь как способ уменьшить наши размеры. Давайте уменьшим его до двух измерений, чтобы мы могли видеть данные в 2D-графике с результатами K-средних.

Теперь, когда мы уменьшили размеры с помощью PCA, мы можем построить график наших игроков и искать отношения в 2D-анализе.

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

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

Чтобы узнать достаточное количество кластеров (K), мы используем метод называемый локтем, применяемый ниже. Затем мы создаем цикл, который будет обучать 11 моделей K-средних (для разных K) и удаляем WCSS для каждого обучения.

WCSS определяется как сумма квадратов расстояний между каждым членом кластера и его центром тяжести.

По методу локтя мы считаем, что это K=6 (как локоть нашего графика WCSS), так как это, возможно, значение, от которого WCSS перестает так быстро падать.

Итак, давайте обучим k-средних для K=6 и посмотрим, как они себя поведут.

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

На этом графике каждый цвет представляет кластер.

Кластер 5

Это всегда личное мнение, но в этом кластере лучшие крайние защитники Премьер-лиги на старте сезона.

  • Атакующие, прогрессивные и очень хорошие техничные игроки

Кластер 4

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

Лично я ожидаю увидеть Saliba в этом кластере.

Интересно, что Кайл Уокер, который до сих пор является крайним защитником, находится в этом кластере. Однако Гвардиола с годами превратил его в центрального защитника, несколько раз занимая эту роль.

Кластер 0

Полные защитники с показателями выше среднего

Кластер 3

Кластер 2

Кластер 1

Кластеризация 3d K-средних

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

Действительно интересно, как мы смотрим на результаты, и большинство из них имеет смысл. Это хороший способ найти на рынке игрока с похожим профилем на того, которого мы собираемся заменить.

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

Подпишитесь на меня:
https://www.linkedin.com/in/ricardoandreom/
https://twitter.com/HspaceAnalytics
https:/ /www.instagram.com/halfspace_analytics/
https://linktr.ee/ricardoandreom

Надеюсь, вам понравилось чтение!!! :)