Использование кластеризации K-средних для поиска игроков, похожих на Роберта Левандовски из Баварии, и визуализации результатов.

Это для всех сумасшедших футбольных аналитиков! Наблюдать, как Роберт Левандовски каждую неделю забивает гол за голом, кажется вполне нормальным уже на протяжении многих лет. Его карьера была наполнена головами на каждом этапе, кульминацией которого стал прошлый сезон великолепным тройным мячом. Хотя он не подает никаких признаков замедления, мы должны признать, что ему сейчас 32, что значительно превосходит лучшие показатели нападающего и, вероятно, в ближайшем будущем он начнет снижаться. Когда придет время, «Баварии» будет довольно сложно найти подходящую замену, и правильно, такие игроки, как он, - большая редкость. Лично для меня он лучший нет. 9 в мировом футболе. В этой статье используется кластеризация K-средних для набора данных Fifa 21, чтобы найти игроков с атрибутами, аналогичными атрибутам Lewa. Давайте углубимся!

Набор данных и K-средние:

Я использовал набор данных Fifa 21 от Kaggle для этого подхода. Ссылка содержит наборы данных от Fifa 15 до 21. Теперь перейдем к кластеризации K-средних.

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

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

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

Заглянем в Код!

Часть 1. Анализ данных и выбор функций

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

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

Часть 2. Определение количества кластеров и применение К-средних

K-Means требует от нас определения количества выбранных кластеров, и выбор правильного числа является неотъемлемой частью алгоритма. Идеальным способом определения правильного количества кластеров было бы вычисление внутрикластерной суммы квадратов (WCSS). WCSS - это сумма квадратов расстояний каждой точки данных во всех кластерах до их соответствующих центроидов. Цель - минимизировать сумму.

Затем мы строим WCSS для диапазона N и наблюдаем за графиком, который называется кривой изгиба.

Теперь мы должны выбрать значение N (ось x), после которого падение WCSS будет минимальным или линейным. Как мы видим, значение на этом графике равно 6. Следовательно, мы должны применить K-средние с N равным 6, что в конечном итоге даст нам 6 кластеров.

Я использовал Sklearn для выполнения кластеризации, и это сработало довольно быстро. Используемые параметры - это количество кластеров, количество итераций и метод инициализации. Обратите внимание, что во избежание проблем важно правильно инициализировать центроиды кластера. Случайная инициализация часто приводит к ловушке, и, следовательно, чтобы избежать этого, мы должны использовать инициализацию k-means ++.

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

Часть 3. Поиск нападающих в том же кластере, что и Левандовски, и использование PCA для визуализации некоторых похожих нападающих.

Найти игроков в кластере Левандовски легко с помощью нескольких умных циклов. Я отфильтровал игроков, которых не было в списке нападающих.

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

Вот простые шаги для PCA

  1. Масштабируйте данные и стандартизируйте их.
  2. Вычислить ковариационную матрицу
  3. Найдите собственные значения и векторы для этой матрицы
  4. Отсортируйте собственные значения в порядке убывания величины, а затем отсортируйте собственные векторы, соответствующие этим собственным значениям, в том же порядке.
  5. Выберите первые n собственных векторов. (n - количество измерений в плоскости проекции.)
  6. Верните матричный продукт (собственные векторы.T, данные.T) .T, где T - транспонированная матрица. (Обратитесь к коду, чтобы узнать о формах задействованных элементов)

Получив преобразованный вектор, я выбрал 15 лучших нападающих (в целом) для визуализации. График прекрасно дополняет простые числа и складывает убедительную историю.

Вот результат!

Заключение и анализ

Я был очень доволен результатами, так как лично выбрал бы несколько из них из этого списка! Самое интересное, что нужно отметить, это то, насколько близок Обамеянг к Левандовски. Это хорошо отражено, поскольку оба являются машинами для забивания голов, схожими по характеристикам и одного возраста! Другие, такие как Лукаку и Кейн, немного далеки, вероятно, из-за разницы в возрасте. Лично я бы сказал, что Кейн был бы лучшим кандидатом, но слишком дорогим! Он на пике карьеры и очень разносторонний игрок! Лукаку и Икарди тоже подойдут! Иден Азар стал здесь сюрпризом, поскольку телосложением он сильно отличается от Левандовски. Приятно было видеть в списке таких игроков, как Иличич, который был так важен для успеха «Аталанты» в прошлом сезоне, и Джеко, который все еще набирает силу на 34-м месте. Immobile тоже является веским аргументом! Надеюсь, Лева будет забивать еще долго.

Это моя первая статья на Medium, поэтому, пожалуйста, дайте мне знать, что вы о ней думаете. Пожалуйста, оставьте несколько аплодисментов, если вам понравилось! Загляните в мой github, чтобы узнать о других проектах. Вы можете связаться со мной здесь. Спасибо за уделенное время!

Полный код приведен ниже