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

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

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

Генетические алгоритмы

Генетические алгоритмы являются одним из подмножеств моделей машинного обучения и соответствуют метаэвристике, которая применяет принципы естественного отбора. Идея состоит в том, чтобы, учитывая набор начальных кандидатов, выполнить «эволюционный поиск» с целью найти оптимальное решение для данной проблемы. Для достижения этого применяются различные механизмы для создания новых пулов кандидатов на каждой итерации (например, мутации, кроссовера и элитарности) и, следовательно, определения наилучшего возможного решения проблемы.

На иллюстрации выше мы видим общую блок-схему работы генетического алгоритма.

Генетические алгоритмы, применяемые в разведке игроков

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

Код, который я реализовал для решения этой задачи, можно найти в https://github.com/danielazevedo/Football-Analytics/blob/master/genetic_algorithms__Player_scouting/player_scouting_genetic_approach.ipynb.

Набор данных

В качестве набора данных использовалась статистика игр FIFA 2020: (https://www.kaggle.com/stefanoleone992/fifa-20-complete-player-dataset). Единственная использованная информация - это имя, должность и ценность игрока.

Пример

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

Далее мы рассмотрим различные этапы реализации (используя этот пример), которые вместе составят наш подход.

Представление

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

[Буффон, Фред, Ибрагимович]

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

Начальная популяция

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

Изменчивость

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

Для этого мы используем техники Crossover и Mutation. Реализовать могут по-разному, но будем проще:

Кроссовер: случайным образом выберите два разных возможных решения и поменяйте местами игроков на одинаковые позиции (позиции также выбираются случайным образом).

Мутация: выберите одного кандидата и замените случайную позицию другим допустимым игроком.

Выбор кандидата

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

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

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

Функция фитнеса

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

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

  1. Использованный бюджет. Где мы хотим минимизировать оставшийся бюджет
  2. Возраст игроков. Где мы хотим минимизировать средний возраст игроков

Следовательно, нашу фитнес-функцию можно определить следующим образом:

Где α представляет собой вес, присвоенный первому ограничению (бюджет), а β представляет вес, присвоенный второму ограничению (возраст игроков). Чем выше веса, тем большее значение придается соответствующему ограничению.

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

Запуск алгоритма…

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

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

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

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

Некоторые примеры

Пример 1:

  • Требуемые позиции: [вратарь, центральный полузащитник, нападающий]
  • Бюджет: 1000000
  • Критерии: Исполнение бюджета: 0,8 (α) | Возраст: 0,2 (β)

Это был пример, использованный выше, мы видим, что выбранные игроки были [W. Щенсны, К. Толиссо, Ф. Чалов]

Пример 2:

  • Требуемые позиции: [центральный защитник, центральный полузащитник, центральный полузащитник, правый фланг]
  • Бюджет: 5000000
  • Критерии: Исполнение бюджета: 0,6 (α) | Возраст: 0,4 (β)

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

Заключительные замечания

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

Надеюсь, эта статья вам понравится! Для получения дополнительной информации о футбольной науке о данных посетите мой репозиторий: https://github.com/danielazevedo/Football-Analytics. Вы также можете проверить меня в Твиттере по адресу @drgazevedo.