Un nouveau modèle d’Expected Goals en français

Dans le monde anglo-saxon, des dizaines de modèles d’expected goals (xG) sont disponibles à portée de clic. Aux Pays-Bas par exemple, pays de 17M d’habitants, je dénombre via twitter pas moins de 3 modèles plus ou moins partagés. En France, grand pays européen, il n’y a à ma connaissance qu’un seul modèle publique, celui de Julien Assuncao décrit sur les Cahiers du Football. À-t-on en France une culture particulière du secret et en fait, des modèles privés fleurissent au sein des clubs ? Ou simplement, se désintéresse-t-on du sujet, n’en voyant pas réellement l’utilité ?

Pour remédier à ce manque de diversité et aussi, pour l’amour de l’art, j’ai décidé d’élaborer mon propre modèle à partir des données que Stratabet a gentiment accepté de me fournir pour la Ligue 1 2016/2017.

Ces données sont composées des tirs ou actions dangereuses de chaque match ainsi que d’un ensemble de caractéristiques liées : l’équipe du tireur, le nom du tireur, la position du tir (x,y), la partie du corps utilisée, le type de passe clé, la position de la passe clé, la minute etc. etc.

Le modèle a été conçu sur une base d’environ 6 500 tirs, ce qui ne fait pas beaucoup lorsque l’on compare aux jeux de données utilisés par mes homologues anglo-saxons. Mais peu importe, l’idée est avant tout d’exposer une méthode relativement complète sur le développement d’un modèle, d’autant plus que les résultats sont plutôt satisfaisants pour un échantillon encore faible.

Pourquoi les xG ?

L’utilité des xG n’est plus à démontrer et je vous renvoie sur ce point à l’article des Cahiers. L’utilisation qu’on peut en faire est quasi-sans limite, mais l’intérêt principal réside selon moi dans leur caractère prédictif. En effet, il a été démontré que les xG, au cours d’une saison, sont le meilleur « prédicteur » de performance future en termes de buts marqués et de points gagnés. La raison en est simple, ils se concentrent sur la performance sous-jacente de l’équipe (être dangereux et ne pas subir d’actions dangereuse), et non sur le résultat immédiat, davantage soumis à la réussite et à la variance. Pour reprendre une image que j’aime bien, gagner sans fond de jeu, c’est comme réussir à traverser la route en fermant les yeux, tu sais qu’à plus ou moins court terme tu finis par te faire écraser.

La méthode 

Pour construire mon modèle, j’ai utilisé une méthode différente de celle présentée dans les cahiers du foot, même si les fondements footballistiques sont les mêmes. Plutôt que découper de terrain en zones puis d’appliquer des pondérations en fonction du type de tir, j’utilise directement la distance et l’angle par rapport aux cages.

D’un point de vue statistique, mon modèle s’appuie ensuite sur une régression binomiale. Cette méthode est généralement utilisée pour déterminer, à partir d’un ensemble de critères prédéfinis (appelé un vecteur de variables), la probabilité d’occurrence d’un événement, pour nous : marquer un but. Cette régression est dite binomiale car l’événement que l’on cherche à modéliser peut prendre deux valeurs : but ou pas but. Le choix de ces critères, nous le verrons, est l’aspect le plus important de la modélisation.

Le résultat d’une régression binomiale est une équation dont chacune des variables reçoit un coefficient. Ce coefficient indique l’effet de la variable sur le résultat attendu et il peut être positif comme négatif. Toutes choses égales par ailleurs, un tir de la tête à l’entrée de la surface a moins de chances de finir au fond des filets qu’un tir du pied, notamment en raison de la différence de puissance. La variable « tête » devrait donc recevoir un coefficient négatif et le tir une probabilité moindre d’être converti en but.

C’est dans le choix de ces variables que l’on commence à parler football et compréhension du jeu. Le choix est vaste, et les données mises à ma disposition sont nombreuses : température, qualité du terrain, arbitre, heure du match,… pourraient très bien être utilisés comme variables. Je n’ai toutefois pas exploré ces pistes alternatives et me suis concentré sur ce qui me semble avoir du sens footbalistiquement parlant. Après plusieurs itérations, pour les tirs dans le jeu, les variables qui m’ont donné le plus de satisfaction sont :

  • La distance par rapport au centre des cages
  • L’angle par rapport aux cages
  • La partie du corps utilisée (tête ou pied)
  • Précédé d’un corner
  • Précédé d’un centre haut
  • Précédé d’un centre bas
  • Précédé d’une passe en provenance des half-spaces
  • Précédé d’un rebond (sur la cage ou un joueur)
  • Intensité de la pression défensive
  • La différence de but pour l’équipe qui tire

Explication de certaines variables

Half-Spaces

Les half spaces, ces couloirs entre le poteau et l’extérieur de la surface, sont considérés par les théoriciens de la tactique comme étant des zones de dangers pour le passeur et in fine là où il faut amener le ballon avant de le donner au tireur. L’idée peut paraître conceptuelle mais elle résiste à l’épreuve des faits : les données confirment cette construction théorique. Une passe depuis les half-spaces améliore significativement les chances de marquer (le taux de conversion passe de 11% pour une passe dans le jeu hors half spaces à 15% au sein du half space et on monte même à 22% pour l’intérieur de la surface). On retrouve cette idée dans le schéma ci-dessous.

Passes clés

Centres hauts et bas

J’ai également intégré une distinction entre centre haut et centre à ras de terre (trois fois rond) puisqu’il s’avère que ces derniers sont également beaucoup plus efficaces que les premiers.

Pression défensive

L’indicateur de pression défensive est un indicateur propre à Stratabet et va de 0 à 5 ; 5 étant la pression la plus forte avec un tireur n’ayant que très peu d’espace pour déclencher sa frappe.

Les variables non retenues

Même si cela améliore très fortement les résultats (on verra ensuite comment on les mesure), je me suis refusé à utiliser l’évaluation subjective de la qualité des tirs, puisqu’elle induit une dépendance à un mode d’encodage des événements et le risque qu’un tir se voit attribuer une bonne qualité parce qu’il a fini en but. Un des modèles de référence utilise d’ailleurs le concept de Big Chance développé par OPTA, qui consiste à identifier « humainement » une grosse occasion. Ce modèle lui applique toutefois une régression pour éviter le biais que j’ai décrit ci-dessus. Pour ma part j’ai préféré ne pas l’utiliser.

Enfin, et c’est un débat qui a fait rage dans le milieu, doit-on tenir compte du joueur qui prend le tir ? Au-delà des difficultés techniques que cela pose (comment évaluer les qualités de finisseur de tous les joueurs), tout le débat tourne autour du fait de savoir si au-delà de la capacité de placement et d’anticipation il existe quelque chose de similaire à « l’adresse » au basket-ball. Dans un contexte identique (distance, angle, pression défensive, …) y a t-il au fond une différence fondamentale entre les joueurs. Il s’agit en fait de questionner la capacité de placer son tir hors de portée du gardien. Et la réponse est étrangement loin d’être évidente, notamment parce que les joueurs de foot prennent trop peu de tirs pour que l’on puisse identifier une forme « d’adresse ». Peut-être un sujet d’article pour le futur ? Toujours est-il que je ne corrige pas mon modèle de l’attaquant qui tente le tir.

J’ai également essayé d’intégrer la masse salariale des clubs au sein de d’algorithme mais les résultats étaient peu convaincants. Je pensais initialement que cela améliorerait significativement le modèle, l’idée étant que les clubs riches ont des joueurs plus talentueux et donc qui convertissent mieux leurs tirs. Mais au final, l’effet est relativement faible en l’état. Sûrement une autre piste à explorer dans le futur.

Pour les coups francs, le modèle est simple, je n’utilise que la distance et l’angle par rapport aux cages. Pour les penaltys, j’attribue au tir la moyenne des penaltys convertis jusqu’à présent (environ 78%, ce qui est proche des résultats trouvés par les experts du sujet).

Les résultats 

Lorsqu’on construit un modèle à visée prédictive il est conseillé de séparer ses données en deux : d’un côté un jeu d’entraînement pour que le modèle s’exerce à reconnaître des buts et de l’autre un jeu de test pour s’assurer qu’il a bien appris sa leçon. En effet, si on teste le modèle sur des données qu’il a déjà vu, on risque le surapprentissage et des résultats non généralisables.  En séparant mes données de manière aléatoire avec une répartition égale entre le jeu d’entraînement et le jeu de test, mon modèle prédit 352.8 buts sur les données de test alors qu’il y en a eu 348 soit 1.4% d’erreur.

Pour être sûr que les erreurs ne s’annulent pas entre elles, on peut tester les qualités prédictives du modèle en calculant ce qu’on appelle la RMSE (racine de l’erreur quadratique moyenne). Le score obtenu est de 0.292 sur l’échantillon de test (out-sample). Pour comparer, des modèles entraînés sur 3 ou 4 saisons et 5 championnats (donc environ 200 000 tirs) obtiennent un score autour de 0.265, le mien qui n’a eu que 32 journées d’apprentissage donne des résultats honnêtes et en conformité avec ce qu’on pouvait attendre. (NB. en ajoutant une variable comme la qualité de la frappe -shot quality- j’obtiens une RMSE autour de 200 et fais donc largement mieux que les modèles précédemment décrits, mais comme dit plus haut, c’est un peu tricher…)

Après la 32e journée de championnat, voilà ce que j’obtiens (j’ai enlevé du total de buts les csc qui sont en toute logique exclus du modèle). L’écart représente la différence entre les buts réels et les buts attendus.

xG pourxG contre

Certains de ces résultats sont surprenants au vu de l’écart entre les buts marqués/encaissés et les expected goals. D’où les cas d’étude qui suivent.

Cas d’étude – pour mieux comprendre les xG

1. Angers (facile)

Depuis son accession à l’élite, Angers est une équipe souvent bien classée aux xG mais qui moins bien au classement réel. Pour comprendre le décalage entre les buts réels et les buts attendus, il faut creuser davantage et décomposer les xG selon leurs deux constituants : le volume de tirs et leur qualité. A Angers, la réponse est sans grande surprise, et on peut dire qu’ils ont déjà fait la moitié du chemin :

  • En défense : ils concèdent très peu de tirs par match (3e de Ligue 1 sur mes données) mais lorsqu’ils en concèdent, les tirs sont généralement dangereux (12e de Ligue 1 à la dangerosité moyenne par tir, calculée en prenant la moyenne d’xG par tir)
  • En attaque ils tirent beaucoup (5e) mais sans grand danger (11e ).

De plus, le club fait avec les moyens du bord on ne peut pas attendre la même réussite pour tout le monde quand les budgets sont si disparates.

Cela étant dit, Angers illustre parfaitement bien l’idée selon laquelle il faut toujours regarder séparément volume et qualité lorsqu’on s’intéresse aux tirs.

2. Nice (moyen)

En ce qui concerne l’excellente défense de Nice (2e de ligue en buts encaissés), la solution ne semble pas être aussi simple. En effet, Nice est la 4e équipe qui subit le plus de tirs par match et les tirs subis sont de qualité moyenne (11e). Rien, en soi, qui nous permette de comprendre comment l’équipe de Lucien Favre encaisse aussi peu de buts.

Pire encore, lorsque je regarde la distance moyenne des tirs concédés, Nice est tout simplement l’équipe qui concède les tirs les plus proches de ses cages ! Cela explique en partie pourquoi le modèle anticipe un nombre important de buts concédés, la distance étant une des variables les plus significatives.

Toutefois, via l’indicateur de pression défensive, on se rend compte que Nice est là 2e équipe la plus oppressante sur le porteur du ballon au moment des tirs qu’elle concède.

La stratégie de Favre semble donc être de laisser venir l’adversaire relativement bas, quitte à le laisser prendre des tirs, mais de lui opposer une pression défensive suffisamment de tous les instants pour qu’il ne les convertisse pas. Ajoutez à cela un Cardinale qui a fait qq bons matchs et vous avez une partie de l’explication.

NB. Paris meilleure défense de Ligue 1 en xG et en buts a une stratégie diamétralement opposée.

3. Monaco (difficile – voire impossible)

Je ne m’étendrai pas sur Monaco, qui fait une saison offensive tout simplement hors normes. Quand bien même c’est l’équipe qui prend les tirs les plus dangereux, et quand bien même l’attaque et le milieu sont composés d’excellents joueurs, rien n’explique un tel taux de conversion. Pour plus de détails sur combien cette performance est quasi-unique dans le football des dernières années  je vous recommande cet excellent article.

Cas d’usage – pour illustrer l’intérêt des xG

1. Volume et finition

Le nombre de buts marqués masque souvent une réalité plus complexe. Comme d’habitude, il faut regarder le volume de tirs pour un but (l’info est facilement accessible), mais quand il s’agit de comprendre la qualité des tirs, l’exercice est plus complexe. C’est à cela aussi que peuvent servir les xG.

Je me suis donc livré à un exercice de classement des joueurs à plus de 50 tirs en L1 en fonction de la dangerosité moyenne de leur tir avec en regard, le taux de conversion.

topbuteurs

L’écart entre danger créé (xG/T) et conversion indique un joueur en sur- ou sous-performance. Ce qui peut avoir deux explications : le talent ou la réussite. Soit un joueur est très talentueux et il excède ce qui est attendu, soit il est chanceux et il l’excède de la même façon. Cavani caracole en tête de ce classement avec une performance  (buts marqués) qui est au niveau des attentes, Saint-Maximin ferme la marche avec également une performance au niveau des attentes.

Pour toucher du doigt la réalité de ce classement et montrer concrètement ce qu’il signifie à un niveau individuel, j’ai automatisé la production de shot maps qui contiennent en plus de la position et dangerosité des tirs, les chiffres clés du joueur en question.  Ces shot maps ne montrent que les tirs dans le jeu donc ni penalty ni coup-franc direct.

B. Gomis

A. SMaxB. Sarr

2. Expected points – Simulations Monte-Carlo

Une fois un match terminé nous pouvons lancer une simulation Monte-Carlo pour calculer les probabilités de victoire de chacune des équipes en fonction du danger qu’elles ont créé (la probabilité d’un tir de finir en but). L’idée est pour chaque tir, de générer aléatoirement un nombre entre 1 et 100 puis, chaque fois que ce nombre est inférieur à la probabilité de marquer, de comptabiliser un but.  Une fois l’opération réalisée pour tous les tirs, on obtient un score simulé. Répétez l’opération 10 000 ou 100 000 fois et vous aurez 1/ le vrai pourcentage de chance que l’équipe avait de gagner au vu de la dangerosité de ses tirs. 2/ les xPoints si vous multipliez les probabilités par le nombre de point pour une victoire ou une défaite.

Par exemple, en rejouant 10 000 fois le triste Marseille – Dijon, le modèle me donne :

69.20% Marseille, 20.96% Nul, 9.84% Dijon

  • Marseille a donc : 3*0.692+1*0.2096=2.29 xPoints
  • Dijon : 3*0.0984+1*0.2096=0.50 xPoints.

Répétez cela pour tous les matchs et vous aurez un classement en xPoints.

3. Prédictions du classement final

A partir des xGoals et des xPoints, vous pouvez également tenter prédire le classement final en utilisant la loi de poisson et la technique décrite sur cette page.

Conclusion

Les usages sont nombreux et je n’ai même pas parlé des Expected Assists et autres xG Chains qui permettent de distribuer aux autres joueurs de l’équipe le danger créé par l’occasion finale. On commence également à pouvoir quantifier la prise de décision d’un joueur en fonction de sa capacité à accroître les chances de marquer. Mais comme je l’ai dit en introduction, il est difficile de savoir comment tout cela s’applique au sein des clubs.

Pour ma part, maintenant que le modèle est stabilisé, je vais pouvoir l’utiliser pour écrire de nouveaux articles et notamment mon prochain, sur le niveau de performance de l’OM 16/17.

Comme d’habitude, je serai ravi d’avoir vos retours en tous genres via Twitter ou ici dans les commentaires. 

This article was written with the aid of StrataData, which is property of Stratagem Technologies. StrataData powers the StrataBet Sports Trading Platform, in addition to StrataBet Premium Recommendations.

3 réflexions au sujet de « Un nouveau modèle d’Expected Goals en français »

  1. Concernant les xG, une des limites concerne les occasions sans tir. Est-ce que ton modèle les prend en compte (ou ça correspond aux occasions « manuellement » calculées) ? Exemple type : l’attaquant dribble le gardien mais glisse et ne frappe pas dans le but vide, quel est l’xG ?

    J'aime

    1. Très bon point, je passe dessus très rapidement en introduction en disant que j’ai dans mes données les tirs et actions dangereuses. Les actions dangereuses sont des actions lors desquelles le ballon ne touche pas le pied de l’attaquant, un peu à l’instar de ce que tu décris. Je ne pondère pas différemment ce type d’action par rapport à un tir normal.

      J'aime

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s