Настало время продолжить предыдущую статью про исследование футбольных трансферов.  В этот раз вы узнаете почему же Клопп Симеоне такой крутой, кого брать в агенты, если вы футболист и зачем все это читать, если футбол вам неинтересен.  Мы научились собирать много данных.  Посмотрите вокруг себя, например, на работе, я уверен вы найдете ту или иную табличку с, вроде как, нужными данными, оставленными на потом, "когда мы поймем что с этим делать". Отчасти это происходит потому, что зависимости внутри них сильно нелинейны и неинтуитивны. А хочется просто понять на что из этих данных обращать наибольшее внимание, что больше всего повлияло на результат. Дальше я на примере покажу как использовать один из простейших алгоритмов, который позволяет это сделать. Саму схему воспроизведения, а также полные результаты вы можете найти в этом ноутбуке, а ниже будет много графиков с самыми интересными из них. Но сначала немного о методе. Представим, что вы работаете не с футбольными трансферами, а у вас есть данные с продажами товаров магазина (ну, или чуть менее меркантильный пример — с результатами матчей в вашей MOBA-подобной игре) и много справочной информации: о магазине, товарах, продавцах (ну или о выбранных героях, игроках, их силе) и т.д. Дальше вы хотите достичь вполне конкретного результата — повысить продажи определенного товара (или поправить баланс вашей игры). В любом из случаев план простой:  Все просто, осталось только разобраться с пунктом 1. На самом деле задача эта далеко не новая и ее достаточно легко решить не применяя никаких нейросетей, используя лишь старую добрую статистику… Если у вас данные Магнита. Или League of Legends. Но есть большой шанс, что нет: что вы — сеть из пары магазинчиков, умеренно популярная игра, и у вас просто не так много данных, которые вы можете использовать. Да, LoL собирает результаты миллионов матчей, и там будет так много сочетаний параметров, что можно сравнивать как влияет на победу данного героя отдельно выбор его компаньонов, при прочих практически равных условиях. При недостатке же данных приходится сравнивать яблоки с апельсинами — у нас просто не найдется достаточного количества изолированных случаев. Если упростить ситуацию, то для того, чтобы понять как, например, связка карта-матчап влияют на вероятность победы в вашей игре, в идеале надо бы иметь несколько тысяч результатов, в которых все параметры кроме интересных нам одинаковые. То есть, чтобы одни и те же игроки, с одинаковым уровнем скилла играли одним и тем же героем на разных картах с разными противниками. Этого трудно достичь, если вы не Riot Games.  Но вернемся к трансферам. Представим, что мы хотим исследовать один параметр — "футбольный агент", например, для того, чтобы понять клиентом какой компании лучше всего становиться футболисту. Ясно, что надо идти к тому агенту, который организует продажу игрока дороже всего. Если мы применим стандартные методы статистики, то увидим, что удачнее всего продает своих клиентов компания GestiFute, что вполне соответствует их репутации. Но как тут отделить мастерство продажи от силы самого игрока? В конце концов не так сложно продавать дорого, если клиентами твоей конторы являются Деку, Данни, Пепе, Диего Коста и скромный парень по имени Криштиану. Честно можно сравнивать агентства только если им всем дать одинаковый набор игроков (и хороших, и не очень) и заставить продавать их в одни и те же клубы. Но такую мультивселенную сложно представить в реальной жизни. Зато у нас есть модель, которая выдает результат (стоимость трансфера) при любом наборе данных. Да-да даже если заставить ее посчитать стоимость трансфера Гогуа из Тамбова в ЦСКА, если бы его проводил Жорже Мендеш. И Глушакова в Ахмат, и Азара в Реал и всех остальных. Потом проделать тот же трюк со всеми остальными конторами. Идеально равные условия. Затем только останется посчитать цену всего набора игроков для каждого из агентств и вот у нас ответ на вопрос насколько принадлежность к бренду, например GestiFute, увеличивает цену игрока.
То есть мы проанализировали как зависит целевой параметр от другого заранее заданного изолированно и только он него.  Это и называется Partial Dependency. И так можно проанализировать любой параметр, чем мы сейчас и займемся. Первое, на что я натравил алгоритм был возраст футболиста и получил вот такую картинку  Она, надо сказать, повергла меня в грусть. Потому что это абсолютно не соответствует моей интуиции. Что-то тут сломалось. Я хорошо знаю, что максимальная стоимость игроков достигает пика примерно к 25-27 годам, что игроки в 17 лет точно не самые дорогие. В чем я и убедился построив простую зависимость из исходных данных, безо всякой модели.  Да, вот это правильно, вот так ведет себя стоимость игроков в зависимости от возраста, размашистый горбик.  Но немного подумав над тем что мне моделька нарисовала, я понял, что она-таки права. Это был тот момент, когда я в первый раз поверил, что она действительно работает, что в этом что-то есть. Модель дала мне, с первого взгляда неожиданный, но парадоксально верный результат и позволила посмотреть на объект исследования немного с другой стороны. Что же мы видим на первом графике и почему мы привыкли ко второму?  Стоимость трансфера, на самом деле, очень сложно соотнести с возрастом игрока используя только сырые данные. Ведь почему игрок становится дороже к 25 годам? Разве потому что он стареет? Нет, он просто играет больше матчей, больше забивает, начинает выступать за сборную, становится более популярным у болельщиков в конце концов и т.д., все это, конечно, идет как бы в комплекте с возрастом и получением опыта, но на все это у нас есть отдельные параметры. А на первом графике мы видим зависимость только от возраста, в идеальном сценарии, когда все остальное одинаково. Конечно, в таком случае игрок, который забил 20 мячей в прошлом сезоне на свой клуб, регулярно играет за сборную, в 19 лет будет стоить дороже, чем точно такой же игрок с такими же показателями, играющий там же, но уже в 25!  Здесь еще интересно, что наклон кривой до 25 лет достаточно пологий, тогда как после этого возраста происходит просто обвал. Интересно будет подумать почему существует такое разительное отличие?  Предлагаю сравнить "дистиллированный" рост стоимости игроков в сезонах   Хорошо видно как пережив перегретость рынка 90-х и финансовый кризис начала 10-х годов график уверенно выходит на почти экспоненциальную кривую роста.  А вот тот же график построенный исключительно на данных. Обратите внимание насколько менее выражен рост стоимости игроков в последние годы   Агентство, возраст и, в меньшей степени, сезон — примеры достаточно редких независимых категорий параметров. В конце концов можно легко представить как игрок переходит из одного агентства в другое и на остальные параметры это будет влиять слабо. Но, допустим, мы хотим понять какому клубу-покупателю больше всего приходится платить за игроков. Можно взять один параметр to_club_name и посчитать результат. Но тут нам уже сложно не учитывать связанные величины to_clb_lg_name, to_clb_lg_country, to_clb_lg_group, которые показывают в какой лиге играет данный клуб. Да, мы можем их разделить и узнать насколько дороже Man Utd покупает игроков исключительно из-за силы своего бренда, а сколько вносит "английская наценка" отдельно, но чаще всего нам интересен совокупный результат. В конце концов никуда из Англии Манчестер переезжать не планирует, поэтому и исследовать мы будем сразу группу параметров. Число после "столбца" — коэффициент насколько данный параметр увеличивает цену трансфера относительно среднего Число внутри "столбца", равно как и его оттенок, показывают количество трансферов с этим параметром   То, что из 20-ти самых щедрых покупателей 18 английских клубов и один королевский клуб из города Мадрид меня не очень удивляет, но третье (!) место махачкалинского Анжи еще раз показывает, что он достоин приза в номинации "Party Like A Russian".
Кстати, только одного клуба из этого списка больше не существует.  Если выше был антитоп, то тут у нас клубы, бренд которых наоборот позволяет покупать тех же самых игроков дешевле рынка. Захвачено бельгийцами!  Где португальцы? — спросите вы. Скоро все будет, — отвечу я вам и себе.  Клубы, которые дороже всего продают. Радует второе место Шахтера (заслуженный респект); понятно наличие большинства топов Бразилии и Аргентины; Севилья; а вот наконец и Бенфика, причем с наибольшим числом продаж.
Но интереснее всего, конечно, будет внимательнее посмотреть на Аталанту. Кого же она так хорошо продавала в последние 10 лет? Так еще и в количестве под полсотни штук? Напомню, что данные за 2008-2018 год, это далеко не сегодняшняя Аталанта с блек Гасперини и Лигой Чемпионов!  В аутсайдерах голландцы, как раз про них в те времена говорили, что там качественных игроков можно купить дешевле всего. И, внезапно, Зенит с Вольфсбургом... Раз у нас есть данные о тех кто дороже всех продает и дешевле всех покупает, то нельзя не посмотреть у кого эта разница, в относительном выражении, наибольшая.  Жутко интересная картинка. Бельгийцы, аргентинцы с бразильцами, явно заслуживающие более пристального взгляда Бешикташ с Алкмааром, ну и, наконец, Бенфика и Порту с наибольшим числом сделок.  Особо стоит отметить Андерлехт — топ10 в списке и больше 100 трансферов.  Антитоп, на сей раз по "эффективности", снова захвачен англичанами с небольшим вкраплением Барселоны. 0,5 у Манчестер Юнайтед так и просто пугает. Здесь необходимо проговорить, что любые данные показывают только то, что они показывают. В данном случае это "наценка за клуб" при покупке деленная на "наценку за клуб" при продаже.
Не зря я "эффективность" взял в кавычки. В топе "эффективности" не могли отказаться лучшие клубы мира, их задача не продавать игроков как можно дороже, а брать от них лучшие годы карьеры, выжимать максимум, превращать в результат клуба. Отличный игрок в топ-клубе может годами выходить только на замену, да это уменьшит его цену, но если это нужно для клуба, он будет это делать. Если топ-клуб продает игрока середняку (а это больше влияет на график так как переход из топа в топ почти не изменяет общий баланс), то чаще всего это значит, что он проверку не прошел (ну или так обычно кажется), что снова продать его в другой топ-клуб (а именно они завышают цену игрока) будет уже сложнее. То есть по "эффективности" на данном графике если и имеет смысл сравнивать, то только клубы одной категории (топ-клубы, доноры, бельгийские клубы :) и т.д.)  Как например тут — "эффективность" российских клубов. Лидерство ЦСКА очень ожидаемо. Спартак удивил, пока я не вспомнил, что они все-таки неплохо своих игроков продавали. Например, они ухитрились продать провалившегося в России Кавенаги почти за ту же цену, что и покупали. Про Зенит и Анжи мы уже говорили.  А вот и раскрыта "тайна" лидерства англичан в антитопах (и бельгийцев в топах). Английская наценка во всем своем безобразии. Она больше, чем сумма наценок всех остальных стран топ6 вместе взятых.  Ну что тут скажешь… С топ-тренерами как с топ-клубами — вы их приглашаете, чтобы они давали результат, а не увеличивали стоимость игроков. Наоборот, под них придется переплачивать, покупая нужных им футболистов. Удивительно видеть Манчини только в конце этого списка, хотя и с большим количеством игроков. Не менее удивительно, что в топе наличествует Жардим с Почеттино. Но будем считать это присвоением им титула "топ-тренер".  Жардим, Луческу и Почеттино дорого покупают, но и дорого продают. Неудивительно, что каждый из них наиболее известен работой в означенное время с клубами (Монако, Шахтер и Тоттенхем) статуса "почтитоп". Симеоне — бох: система игры, вывод Атлетико в лидеры, невероятное увеличение стоимости игроков.  Самая большая наценка при покупке у пары клуб-тренер: 1.Гус Хиддинк, в Анжи; 2. Сэр Алекс Фергюссон, понятно где; 3.Луи ван Гаал, понятно где Юнайтед.  Дешевле всего, из значимого числа трансферов, покупал Шенол Гюнеш из Бешикташа, снова стоит посмотреть повнимательнее.  Пара клуб-игрок, но по продажам: 1.Мирча Луческу, Шахтер; 2.Диего Сименое, Атлетико; 3.Леонардо Жардим, Монако.  Только второе место Диего здесь, парадоксально, говорит о том, что до Атлетико он даже лучше продавал игроков. Ну и напоследок топ эффективности агентов  Про Gestifute мы уже говорили. Но теперь можно выдать вердикт: да, они лучшие.  Они хороши сами по себе. У них не только есть Криштиану Роналду и другие великолепные игроки, они еще и умеют их продавать, фактически, лучше всех в мире.  На первые 2 агентства тоже стоит посмотреть особо внимательно, хотя работают они почти исключительно на итальянском рынке.  Нераскрытые агенты, видимо, не раскрывают себя не просто так — продают дорого, чтобы за этим ни стояло.  Очередное доказательство, что Мино Райола — не чита Жорже Мендешу, всего лишь чуть выше рынка. Пиар делает свое дело. Ну а если вы молодой российский футболист, то у вас итак уже все хорошо смело выбирайте агентство из топа этого списка, не прогадаете. Засим все, результатов еще много, но я отобрал самые, на мой взгляд, интересные.
Более подробно рассмотреть эти и другие графики, вместе с полными таблицами можно в ноутбуке. А вот тут я провел еще больше экспериментов над этими данными. И главное, хочу напомнить, что этот метод работает практически с любым набором табличных данных. Сначала вы определяете какие параметры сильнее всего влияют на результат (Feature Importance), а затем — каких именно значений параметров (Partial Dependency) надо добиваться, чтобы максимизировать выбранную функцию с помощью метода, который и был описан в этой статье. Желаю удачи в экспериментах, будет интересно узнать что получилось у вас :)