Paris sportifs Football

Comment maximiser ses gains sur les sites de paris sportifs ?

Par Aline BENABBOU, Gaspard CANEVET, Rida ENNAMIRI et Amaury TISSEAU, étudiants du parcours Data Science de IMT Atlantique.

Né au milieu du XIXe siècle, le football est aujourd’hui le sport le plus populaire et le plus médiatisé au niveau mondial, étant pratiqué par plus de 270 millions de personnes. Ce sport met en jeu des sommes d’argent colossales avec notamment l’essor des sites de paris sportifs. En 2019, le football concentrait 2,75 milliards d’euros de mises contre 415 millions en 2012 d’après AuStade. L’appât du gain est le premier facteur de motivation pour les parieurs, qui se creusent la tête pour prédire l’issue des matchs. Mais avec toutes ces statistiques et données liées au Football, ne serait-il pas possible d’être meilleur que l’instinct du parieur à l’aide des outils de Data Science ?

Business understanding

Dans un premier temps, nous allons vous expliquer le fonctionnement des paris sportifs de football. La cote est l’élément central du pari. C’est un nombre supérieur à 1.01 qui va caractériser à la fois les gains potentiels du parieur mais aussi la certitude du pari (certitude = (1/cote)*100). En effet, lorsque le parieur va miser sur la victoire de l’équipe B, les gains potentiels du parieur seront cote(Victoire équipe B)*mise. De plus, plus la cote est élevée, plus le pari est dangereux. Prenons un exemple : 

Le Vendredi 11/12/2020 à 21h aura lieu le match St-Etienne contre Angers. Ce match comporte trois issues. Soit St-Etienne gagne, soit Angers gagne, soit les deux équipes se quittent sur un match nul.

Nous pouvons donc observer les trois cotes : 

  • cote de 2.40 pour St-etienne gagnant
  • cote de 3.30 pour le match nul
  • cote de 2.60 pour Angers gagnant

Ainsi si :

  • Vous décidez de parier 10€ sur la victoire de St Etienne, votre gain potentiel s’élève à 24€.
  • Vous décidez de parier 10€ sur le nul, votre gain potentiel s’élève à 33€.
  • Vous décidez de parier 10€ sur la victoire d’Angers, votre gain potentiel est de 26€.

Enfin,  ces trois cotes nous renseignent sur la certitude des paris. Parionssport estime que :

  • St Etienne a 42% (100/2,40) de chance de gagner.
  • Angers a 38% de chance de gagner.
  • il y a 30% de chance que les deux équipes se quittent sur un match nul.

Dans un deuxième temps, laissez nous vous expliquer comment les cotes des paris sportifs sont calculées. Pour ce faire, les entreprises de paris embauchent des bookmakers. C’est eux qui vont définir les cotes, en se basant sur des critères variés (dynamique de l’équipe, joueurs présents sur la feuille de match…) afin de caractériser la certitude du pari. Ces derniers prennent également une marge, en diminuant légèrement la cote annoncée par rapport à celle calculée. C’est ainsi que les sites de paris font leur chiffre. Cependant, les bookmakers ne sont pas les mêmes pour chaque plateforme de paris. C’est pourquoi les cotes diffèrent en fonction du site sur lequel on décide de parier. 

Une mise en situation

Paul est un fan de l’équipe de Toulouse, et mise toujours sur cette équipe sur Betclic lorsque celle-ci joue, et quelle que soit sa cote. Il croit en son équipe favorite, et se dit qu’un jour il touchera le gros lot, mais pourtant il continue inlassablement de perdre de l’argent sans savoir quelles sont ses chances de réussite.

Comment peut-il savoir pour quelle équipe parier afin de maximiser ses chances ? Pourquoi ne pas parier sur un autre site que Betclic ?

Proposition de valeur

Nous proposons aux parieurs de maximiser leurs gains sur les matchs de Ligue 1, en faisant des prédictions sur l’issue de matchs à l’aide de modèles de Machine Learning. Nous donnons ainsi au parieur une prédiction sur chaque match, ainsi que des pourcentages de certitudes sur les différentes issues. Enfin, nous comparons et présentons les cotes des différents sites de paris au parieur, afin qu’il choisisse au mieux sur quel site parier.

Comment évaluerons-nous la fiabilité de notre modèle ? 

Nous simulerons sur une saison nos gains en suivant à la lettre les prédictions de nos modèles, avec les cotes correspondantes récupérées dans un dataset archivant ces dernières (site de pari Bet365).

Et concrètement ?

a. Nos datasets

Nous utilisons plusieurs datasets. 

Les datasets initiaux concernent les caractéristiques des différents matchs de la Ligue 1 entre les saisons 1993/1994 et aujourd’hui : issue du match, issue du match à la mi-temps, nombre de tirs/tirs cadrés, nombre de corners de chaque équipe, nombre de fautes commises par chaque équipe, etc.

Avec ces datasets initiaux, nous décidons de créer une nouvelle feature dynamique d’une équipe, avec un score allant de -3 à +3. Par exemple, une équipe qui a gagné ses 3 derniers matchs à l’extérieur aura une dynamique extérieure de +3.

Également, nous prenons en compte 3 paramètres extérieurs récupérés sur d’autres sites : 

  • le budget d’une équipe par saison car, une équipe avec un gros budget aura peut-être tendance à gagner plus souvent ses matchs.
  • les scores du jeu vidéo Fifa de chaque équipe en fonction des saisons car, les équipes changent entre chaque saison. Ce score, donné par des spécialistes, est souvent une bonne approximation du niveau actuel de l’équipe. Nous utilisons les scores FIFA qui donnent les capacités offensives, défensives et de milieu de terrain des équipes. Une forte attaque contre une défense faible peut être un bon indicateur de victoire. Au contraire, deux fortes défenses avec des attaques moyennes peuvent indiquer une plus forte probabilité de match nul !
  • Le public moyen pour chaque équipe car, nous remarquons que les équipes à domicile ont tendance à marquer plus de buts. De même, les équipes extérieures sont plus sujettes à prendre un carton jaune ou rouge. Ces deux observations peuvent être expliquées par un public plus présent à domicile, qui donne son appui pour l’équipe à domicile et fait pression sur l’équipe extérieure.

b. Vers un grand nettoyage

Seuls les datasets de la saison 2007/2008 à aujourd’hui possèdent toutes les informations importantes pour trouver l’issue d’un match (fautes, corners…). Nous éliminons donc les datasets de la saison 1993/1994 à la saison 2006/2007.

De plus, entraîner nos algorithmes sur une saison x pour les tester sur la saison supérieure à x+4 n’est pas pertinent : la composition des équipes change, de nouvelles équipes entrent dans la Ligue 1 tandis que d’autres en sortent.

Nous décidons donc d’entraîner nos algorithmes sur les saisons 2015/2016 et 2016/2017  et de les tester sur la saison 2017/2018.

c. Pour une bonne préparation des datasets

Afin de pouvoir utiliser nos datasets, il faut les préparer. Nous ajoutons aux datasets initiaux les features budget, public et scores Fifa, ainsi que la dynamique d’une équipe.

Ensuite, nous modifions certaines features afin qu’elles puissent être utilisables par les algorithmes. Un exemple concret :

Nous éliminons les features « HomeTeam » et « AwayTeam » donnant le nom des équipes.

d. Sans oublier la récupération des cotes des sites de paris sportifs

Notre but final étant de permettre au parieur de maximiser ses gains, nous récupérons les cotes de plusieurs sites de paris avec du web scrapping afin de les utiliser pour vérifier la fiabilité de notre modèle.

En route vers le machine learning!

a. Un problème de classification

Qu’est ce qu’un problème de classification ? En clair, il s’agit de prédire la valeur d’un attribut (ici le résultat d’un match) à partir des valeurs de ses autres caractéristiques (résultat à la mi-temps, public présent pour l’équipe, etc).

b. Direction les algorithmes

Nous séparons notre dataset en deux : la première partie sert à entraîner nos algorithmes et la deuxième partie sert à les tester. Nous utilisons les datasets des saisons 2015/2016 et 2016/2017 pour entraîner nos modèles, et les testons sur la saison 2017/2018. 

En comparant différents algorithmes sur nos datasets initiaux, nous nous rendons compte que le Random Forest est celui qui donne les résultats les plus convenables, en termes de score mais aussi de répartition des prédictions.

Devons-nous utiliser toutes les nouvelles features ?

Nous nous rendons compte que la combinaison des features ‘budget’ et ‘public’ aux datasets initiaux donne la meilleure prédiction, avec un score moyen de 0.54.

c. Fiabilité de notre modèle

Le but est de conseiller au mieux le parieur. Pour cela, nous devons nous assurer de la fiabilité de notre modèle. Nous montrons au parieur le pourcentage de certitude de chacune des issues d’un match, lui permettant d’évaluer le taux de confiance d’une prédiction. 

Pour évaluer notre modèle, nous récoltons les cotes de la saison 2017/2018 du site Bet365 et nous simulons nos gains sur cette saison en misant 10 euros sur chaque pari.

Dans 9 cas sur 10, nous récupérons de 2 à 10% de la somme misée au total sur l’année. Mais le seul cas où l’on perd de l’argent nous montre que notre modèle n’est pas encore assez certain.

Si le projet voit le jour… 

Si le projet se concrétise, plusieurs points sont à prendre en compte. Tout d’abord il faut penser aux coûts de structure :  

  • maintenance et gestion de la plateforme et de l’algorithme de prédiction
  • contrats pour l’utilisation des données sur les équipes
  • salariés permanents
  • coûts marketing

Pour contrer ces coûts, il nous faut des sources de revenu, qui peuvent être un abonnement avec un compte pour avoir accès aux prédictions et conseils, la revente des données clients ou encore des publicités sur les sites web.

Enfin, nous devons penser aux aspects juridiques de notre projet, notamment au respect des normes RGPD car nous utilisons les données des sites de paris sportifs qui ne peuvent être utilisées à des fins commerciales.

Références bibliographiques

Qui sommes-nous ? 

Amélioration de l’organisation des centres d’appels en Inde grâce à la détection de langue

Par: Julien Marcotrigiano, Aminata SY, Parth Tripathi, Vanessa Vanderberghe

Un exode problématique

Ces dernières années, un exode rural massif a rassemblé les populations de nombreuses régions indiennes dans les grandes villes du sud de l’Inde. Cette évolution démographique a eu pour impact de faire de ces villes, qui étaient jusque-là des bastions de leur langue régionale (Kannada, Tamoul), un melting pot de toutes les langues indiennes. On retrouve ainsi dans ces villes des populations entières qui ne parlent pas la même langue et qui ont des problèmes pour s’exprimer dans la langue historique de la ville.

Dans ce contexte, les centres téléphoniques de relations clients d’une grande entreprise du sud de l’Inde sont dans l’incapacité de rediriger les appels de ses clients vers des opérateurs parlant la même langue qu’eux. Alors qu’ils utilisaient jusque-là des données géographiques pour savoir vers quel opérateur rediriger un appel. Un système inefficace aujourd’hui. C’est dans cette optique que cette entreprise cherche à développer un assistant vocal permettant de détecter la langue parlée par le client et de le rediriger vers le bon opérateur.

Un assistant vocal: pour qui ? comment ?

Dans ce cadre, nous intervenons pour Airtel, le premier opérateur de téléphonie mobile en Inde. Grâce à cet assistant vocal, le client sera directement redirigé vers un conseiller pouvant répondre à sa question dans sa langue natale.

Pour sa création, l’entreprise nous demande à partir d’un clip vocal de moins de 5 secondes sous format .wav de détecter la langue parlée par le client pour pouvoir rediriger l’appel vers le bon conseiller. L’entreprise se chargera par la suite de rediriger la personne directement vers quelqu’un qui sera familier avec son problème à l’aide d’une reconnaissance vocale du problème exposé.

Schéma illustrant le cas d’usage

La grande majorité des habitants et néo-habitants des grandes villes du Sud de l’Inde maîtrisent les rudiments de l’anglais et de l’hindi, qui sont les langues officielles de l’union indienne. L’idée est donc de demander à l’utilisateur en Anglais et en Hindi d’exposer son problème dans la langue de son choix. Airtel se charge d’envoyer les 5 premières secondes de parole du client à notre système qui devrait pouvoir analyser et détecter la langue à partir des 5 premières secondes d’audio. Après avoir détecté la langue, notre système renvoie la réponse chez Airtel qui pourra rediriger l’appel vers le bon conseiller.

Il a été convenu avec l’entreprise d’obtenir un taux de réussite supérieur à 80% pour que le système soit considéré comme satisfaisant.

Quelles données utiliser ?

Pour réaliser notre part de cet assistant vocal, nous avions besoin d’enregistrements vocaux d’Indiens. Le nombre de langues parlées en Inde étant élevé, nous avons décidé de nous concentrer sur les langues principales du sud de l’Inde. Ces dernières correspondent à celles traditionnelles du sud de l’Inde, le Kannada, le Tamoul et le Telugu, ainsi que l’Hindi (parlé par plus de 50% de la population Indienne) et l’anglais. De plus, ces cinq langues couvrent environ 99% des habitants des grandes villes du Sud de l’Inde et représentent l’intégralité des langues gérées dans les call centers.

Dans un premier temps, nous avons utilisé des données de différents datasets: Common Voice, Google Research, LibriVox, LibriSpeech et Microsoft Research.

Lors de notre projet, nous avons dû effectuer un changement de dataset car les audios provenaient de datasets différents pour chaque langue. Ils représentaient chacun des conditions d’enregistrement différentes (matériels professionnels ou amateurs, lieux d’enregistrement…). C’est ce facteur qui influe la classification et c’est ce facteur qui peut être détecté par notre modèle plutôt que la langue parlée.

Ainsi, nous avons donc testé notre modèle avec de nouveaux datasets pour les trois langues régionales provenant de la même source (Google Research). Nous considérerons donc, par la suite, les nouveaux jeux de données.

Descriptions des datasets

Après une étude des statistiques descriptives de nos données, nous remarquons que la majorité des fichiers audios dont nous disposons ont une durée entre 5 à 10s.

Graphique représentant le nombre d’enregistrements correspondant à une certaine durée pour chaque langue

LanguesDurée d’enregistrement
Anglais323 min
Tamoul424 min
Telugu341 min
Hindi173 min
Kannada458 min
Tableau synthétisant la durée d’enregistrement pour chaque langue

Graphique représentant le nombre d’enregistrements pour chaque genre (femme ou homme)

Enfin, les locuteurs sont différents et ces enregistrements concernent globalement autant d’hommes que de femmes, d’âges variés, parlant de différents sujets. Ces données sont donc très utiles dans notre cas.

Des enregistrements aux images

Afin d’homogénéiser nos différentes données audios, celles-ci doivent être mises sous le même format, les fichiers MP3 seront donc convertis en fichier WAV car c’est ce format qui est le plus utilisé pour les traitements audio. Tous les fichiers audios seront aussi échantillonnés en 8 kHz car c’est la fréquence utilisée en téléphonie.

Nous avons ensuite découpé nos fichiers audios pour ne garder que des enregistrements de cinq secondes pour correspondre à notre cas d’usage.

Enfin, en s’inspirant de certains travaux de Deep learning pour le speech-to-text, nous avons décidé d’utiliser un modèle de réseaux de neurones convolutifs qui prend en entrée une image d’un mel-spectrogramme. Un spectrogramme est une représentation visuelle du son en temps et en fréquence avec des intensités de pixels représentant l’amplitude ou l’énergie du son à ce moment et à cette fréquence. L’avantage d’utiliser des spectrogrammes par rapport aux données wav brutes est que notre analyse sera abordée comme étant un problème de classification d’image.

Image d’un mel-spectrogramme générée à partir d’un audio de 5 secondes

Ci-dessous, le nombre d’images obtenues pour chaque langue :

LanguesKannadaTeluguTamilAnglaisHindi
Nombre d’images30391478286115852081
Nombre d’images obtenues pour chaque langue

Des résultats satisfaisants?

Comme évoqué précédemment, nous avons utilisé un réseau de neurones convolutifs créé à l’aide de Keras sous Python.

Premier modèle (différentes sources de datasets)Deuxième modèle (changement de datasets)
Notre algorithme arrive à prédire la bonne langue, en moyenne, pour 94% (accuracy) des données.Notre algorithme est moins performant puisqu’il se trompe dans 18% des cas (accuracy = 0.82).
Tableau des résultats obtenus pour les deux modèles

Les matrices de confusion permettent d’exprimer les prédictions de notre algorithme par rapport à la véritable langue à laquelle appartient une image. On remarque clairement une baisse de l’efficacité du modèle avec le changement des datasets. Notre modèle semble avoir des difficultés pour différencier les trois langues traditionnelles du sud de l’Inde (le Kannada, le Tamoul et le Telugu). Cette différence d’efficacité s’explique par la grande ressemblance entre ces trois langues.

Nous avons donc joué sur les variables de notre modèle, pour améliorer sa performance. Voici les résultats du modèle final:

Notre modèle final estime la bonne langue dans 91% des cas. De plus, les résultats pour chaque langue sont supérieurs à 80%. Ces derniers respectent donc le taux fixé par l’entreprise (taux d’erreur inférieur à 20%).

Et pour la suite ?

Des améliorations sont possibles pour notre algorithme, l’entreprise Airtel pourra continuer l’entraînement de l’algorithme avec ses propres datasets. La taille du dataset peut aussi être augmentée en ajoutant un bruit de fond qui correspondrait à l’environnement d’un client qui appellerait le call center, cela permettrait d’augmenter l’efficacité de l’algorithme pour notre cas d’usage. Notre algorithme de détection de langues peut être testé sur d’autres langues indiennes (comme le Bengali, le Gujarati, le Punjabi) afin de vérifier l’efficacité de celui-ci.

Déploiement

Pour la mise en production de notre algorithme, celui-ci utilisera la voix du client afin de faire une prédiction sur la langue de celui-ci. Les lois en Inde concernant l’enregistrement de la voix des clients ne sont pas clairement définies, les entreprises peuvent enregistrer des appels de clients sans leurs consentements. Notre algorithme est donc en adéquation avec la loi indienne.

Le plomb : un enjeu sanitaire majeur aux États-Unis

Par Jérémie Sicard, Malo Gendry, Louis Dubois-Leprou, Lucas Beretti

On estime aujourd’hui, qu’aux États-Unis l’intoxication au plomb serait la cause indirecte de près de 400 000 décès. Malgré une tendance à la baisse, ce problème demeure l’une des principales causes de mortalité dans ce pays.

 Le saturnisme pouvant entraîner divers symptômes, tels que des troubles moteurs ou des troubles du comportement, est encore très difficile à diagnostiquer. Le plomb étant présent dans de nombreux composants environnementaux, la contamination affecte les individus durablement et touche particulièrement les enfants.

Afin de mieux limiter les effets de cette intoxication et de mieux en comprendre les causes, la ville de New York a levé plusieurs campagnes de dépistage d’intoxication au plomb. Afin d’être efficaces, celles-ci doivent être réalisées à grande échelle, et sont donc très onéreuses.

Notre aide à la ville de New York

Afin d’aider la ville de New York, nous avons essayé de développer deux outils d’aide à la décision. Le 1er modèle a pour but de prédire l’évolution des cas de saturnisme dans les quartiers de New York. À court terme, cet outil pourrait partiellement remplacer les dépistages massifs. Il devrait ainsi permettre à la ville de New York de concentrer ses efforts de dépistages et de soins dans les zones considérées comme les plus à risques pour la contamination au plomb.

Nous désirions aussi développer un deuxième outil permettant la compréhension des principaux facteurs d’intoxications. Nous saurions ainsi quelles sont les zones sensibles et quels sont les facteurs environnants ayant le plus d’impact vis-à-vis de cette problématique sanitaire. Sur le long terme, ceci pourrait nous permettre de proposer un plan d’actions à la ville de New York en désignant des zones prioritaires et les actions à y mener.

Les données utilisées

Notre premier travail a été bibliographique afin de recenser différents facteurs pouvant influencer la contamination au plomb chez les enfants de moins de six ans tels que la présence de traces de plomb dans l’habitation ou encore la vétusté du logement. Puis, nous avons donc trouvé des jeux de données opendata comprenant les variables citées précédemment que nous avons qualifiées de variables explicatives environnantes.

Les individus de notre jeu de données ont été caractérisés par une des zones géographiques de la ville de New York à une année donnée.

Notre jeu de données comporta alors, pour chaque individu, une valeur de la variable cible qui est la proportion d’enfants pour 1000 testés ayant une concentration en plomb de plus de 5 mcg/dL dans le sang et une valeur des différentes variables explicatives environnantes.

L’enjeu de la fusion

Cependant, l’une des principales difficultés de notre projet était l’absence d’un jeu de données exploitable directement, listant les différentes variables environnantes et les variables cibles pour chaque zone géographique et année associée.

Nous avons donc dû fusionner une dizaine de jeux de données intermédiaires afin de créer notre propre jeu de données final. Mais ceux-ci ne possédaient pas la même temporalité ni le même niveau géographique d’analyse.

Nous avons alors défini une échelle géographique qui le “community district” associé à une clé d’identification que nous avons créée : le geoID (59 à New York). Nous avons également délimité une échelle temporelle allant de 2011 à 2018.

Des données incomplètes

Une nouvelle problématique est apparue lors de la fusion des jeux de données et notamment lors du choix de l’échelle temporelle.

En effet, trois des jeux de données intermédiaires ne possédaient pas des valeurs pour chaque année allant de 2011 à 2018. Nous avons donc dû répondre à ce manque en utilisant deux techniques faisant appel respectivement à l’évolution quasi-linéaire d’une variable et à la monotonie de l’évolution d’une variable pour différents “geoID” dans le temps.

Ainsi, à ce stade, nous possédions un jeu de données global comportant 472 individus défini comme suit :

Individus

Variable cible

Variables environnantes explicatives

geoID

Année

5 mcg/dl ou plus

Nb maisons avec plomb

Proportion de maisons construites avant 1950

101

2011

2018

102

2011

2018


L’intoxication : un processus lent et localisé

La contamination au plomb étant un processus lent, ancré dans le temps, les changements ne semblent pas s’opérer directement, il y a donc un fort lien de corrélation entre la contamination au plomb de l’année actuelle et celles des années précédentes.

Pour associer la dimension temporelle à notre analyse, nous avons donc directement incorporé, pour chaque individu, la proportion du nombre d’enfants contaminés par le plomb aux années N-1, N-2 et N-3.

Quant à la dimension spatiale, les enfants new-yorkais n’étant pas cantonnés à leur propre community district, ils peuvent facilement être contaminés lors de leurs activités dans des community districts voisins, nous avons donc voulu prendre en compte le voisinage des community districts.

Nous avons alors discrétisé la ville de New York en 5 zones géographiques de même superficie et associé à chaque barycentre d’un geoID son appartenance à l’une des zones géographiques.

Deux modèles pour deux objectifs

Notre objectif était de prédire le taux de contamination au plomb d’un community district d’une année sur l’autre. Actuellement, des tests massifs sont effectués chaque année à New York, nous donnant accès aux données de contamination des années précédentes. Ces données sont majeures dans la prédiction de la contamination d’une année : ce taux n’étant pas sujet à d’importantes variations pour des années consécutives.

Cependant, si dans le futur, la ville de New York est amenée à ne plus effectuer de dépistages massifs, mais simplement un dépistage dans certains quartiers de New York, notre modèle ne serait alors plus utilisable, car nous n’aurions plus accès aux données de contamination des années précédentes.

Par conséquent, nous avons décidé de construire deux modèles de régression selon chaque cas de figure :

  1. modèle comprenant les variables explicatives environnantes et la contamination au plomb des années précédentes
  2. modèle comprenant seulement les variables explicatives environnantes

Nous souhaitons construire à la fois un modèle ayant de bonnes prédictions et qui soit facilement interprétable pour expliquer les causes de la contamination au plomb dans un quartier donné. Ainsi, des modèles tels que la régression linéaire ou l’arbre de décision correspondent à notre étude.

Performance des modèles

Nom du modèleRoot MSE (Root Mean Square Error)
Régression linéaire0.002560.93
Régression de Ridge0.002330.94
Régression de Lasso0.002340.94
Arbre de décision0.003210.89
Comparaison des modèles utilisant les variables environnantes et contamination des années précédentes

On obtient de très bon résultats sur les modèles de régression linéaire.

Nom du modèleRoot MSE (Root Mean Square Error)
Régression linéaire0.007050.47
Régression de Ridge0.007150.45
Régression de Lasso0.006900.49
Arbre de décision0.007620.37
Comparaison des modèles utilisant seulement les variables environnantes

Les résultats se dégradent considérablement par rapport au premier cas de figure. Il est intéressant de constater que notre modèle n’est plus fiable pour prédire précisément le taux de contamination, mais arrive tout de même à tirer des tendances à partir des données comme le montre l’observation de ces 2 cartes (La couleur représente le taux de personnes contaminées au plomb au-delà d’un certain seuil).

Après observation de l’impact de chacune de nos variables, on peut affirmer que la proportion de maisons construites avant 1950, la proportion d’habitations ayant déclaré des problèmes d’entretien et la proportion de maisons pauvres sont les trois facteurs qui influent le plus sur une intoxication au plomb.

Des perspectives d’amélioration

Notre projet dispose de résultats encourageants, mais ce dernier doit encore faire face à certaines limites. En effet, notre algorithme de prédiction se base trop sur les intoxications des années précédentes, ainsi si l’on veut garder de bonnes prédictions, il faut continuer le dépistage massif.

Une piste d’amélioration serait l’introduction de nouvelles variables telles que la présence de parents fumeurs ou encore la compréhension de l’anglais par la famille. De plus, l’utilisation de petits échantillons comme ceux que nous avons formés, peut limiter la détection d’associations importantes, qui pourrait réduire l’influence de certaines variables environnantes. Il faudrait donc pouvoir augmenter le nombre d’individus de notre jeu de données en se ramenant à des zones géographiques encore plus petites que celles que nous avons définies.

Automatiser le calcul des notes des joueurs dans le jeu vidéo FIFA

Par Sarah FEDOUACH, Corentine NICOLAS et Lola SPASOJEVIC

Le secteur des jeux vidéo est en pleine expansion. Les entreprises se doivent d’être concurrentielles et à la pointe de l’innovation. Parmi les jeux vidéo les plus populaires se trouve FIFA. C’est un jeu vidéo de football créé par EA Sport en 1993, une entreprise qui développe des jeux vidéo de sport en ligne. Dans ce jeu, les joueurs de football possèdent une note sur 100 qui définit leur prestation et donc leur niveau dans le jeu. Cette note est actuellement calculée à la main par 8000 bénévoles qui étudient tous les matchs de toutes les ligues chaque année et retravaillée par 200 data editors de chez FIFA.

Fig 1 : Meilleurs joueurs dans FIFA 21 (https://www.ea.com/fr-fr/games/fifa/fifa-21/ratings)

Comment rendre le calcul de ces notes plus rapide et moins cher?

Notre projet propose d’aider FIFA à simplifier le calcul des notes des 17000 joueurs qui composent le jeu en se basant sur leurs statistiques de matchs (buts, cartons, nombre de matchs sans prendre de buts…). La difficulté a été de comprendre quelles variables peuvent être utiles pour le calcul des notes et ainsi remplacer l’avis subjectif de 8000 bénévoles. Après avoir sélectionné les données pertinentes et grâce à des algorithmes de machine learning, nous pouvons prédire ces notes en fonction des performances réelles. Le produit que nous proposons serait donc directement intégré au système informatique de FIFA.

Choix du dataset et des statistiques footballistiques

Afin de construire notre modèle nous avons eu l’idée de récolter des données sur les performances réelles des joueurs mais aussi de leurs clubs. Dans un souci de simplicité, nous avons décidé de travailler uniquement sur les 5 plus grands championnats d’Europe (Premier League, La Liga, Bundesliga, Serie A et Ligue 1) et les saisons 2017/18, 2018/19, 2019/20, ce qui correspond à 45 datasets, 98 équipes et près de 2200 joueurs. A cela, on ajoute les datasets contenant les notes FIFA des années 2018, 2019, 2020 et 2021 qui vont nous permettre d’entraîner notre modèle.

Des statistiques à la prédiction de notes

Notre but étant d’obtenir un dataset par année (toutes ligues confondues), nous avons dû faire correspondre les noms des joueurs des datasets statistiques avec ceux des datasets de notes FIFA afin de les fusionner.

Les équipes de foot ne se valent … pas

Cependant, il nous paraissait important que les clubs des joueurs soient une features d’entraînement de notre modèle. C’est pourquoi nous avons dû créer un score équipe. Ce score a été créé en comparant (en termes de points et de nombre de buts) chaque club d’une ligue au premier de cette ligue. Grâce à ce score il est, par exemple, possible de comparer directement les performances du Real Madrid avec celles de Liverpool.

Regardons les données de plus près.

Nous avons étudié la corrélation de nos variables avec les notes des joueurs. Deux variables sont corrélées positivement si leur coefficient de corrélation est proche de 1 et corrélées négativement si leur coefficient de corrélation est proche de -1. Deux variables corrélées ou anti corrélées signifient qu’elles mesurent un phénomène similaire. Cela apporte du bruit et peut induire le modèle en erreur.

Fig 3 : Matrice de corrélation du dataset de la saison 2017/2018

Nous avons gardé une seule variable par groupe de variables corrélées et nos datasets finaux ont chacun 28 colonnes.
Nous avons ensuite décidé d’étudier l’influence de certaines variables par rapport aux différentes positions des joueurs sur le terrain. Quatre postes sont représentés dans notre dataset: les attaquants, les défenseurs, les gardiens et les milieux de terrain.

Fig 4 : Nombre de buts en fonction de la note
(à gauche pour les gardiens, à droite pour les attaquants)

Comme nous pouvions nous en douter, le nombre de buts n’a pas d’influence sur la note des gardiens tandis que cela est plus corrélé avec les notes des attaquants. Nous avons donc tracé les matrices de corrélation par postes pour trouver les variables qui influent le plus sur la note par poste.
Nous avons donc décidé d’établir deux modèles différents présentés ci-dessous:

Fig 5 : Présentation des méthodes de calcul des scores

Comment évaluer nos résultats ?

Nous souhaitons prédire une note pour cela nous allons utiliser des algorithmes de régression (le Random Forest, l’algorithme du plus proche voisin, XG Boost Regressor, Stochastic Gradient Descent Regressor et la régression linéaire). La métrique que nous avons choisie est la racine de l’erreur quadratique moyenne.
Notre but est de tester plusieurs modèles et algorithmes afin de déterminer ceux qui minimisent cette erreur. Nous avons décidé de vous présenter uniquement les modèles qui prennent en compte la note de l’année précédente, les autres ayant une erreur 3 fois plus élevée.

Algorithme GlobalGlobalPar poste : Forward
RandomForest1.124 1.141
KNeighbors4.0024.020
XGBRegressor1.2491.253
SGDRegressor192.19478.247
LinearRegression1.365 1.362

Concernant le modèle global, nous remarquons que le meilleur algorithme est le RandomForest suivi de près par XGBRegressor et la régression linéaire. Nous pouvions nous en douter car les forêts de décisions sont des algorithmes qui fonctionnent bien sur des petits datasets car ils utilisent la technique de Bootstraps.

Fig 7 : Étude des notes prédites en fonction des notes réelles pour le XGB Regressor
Fig 6 : Étude des notes prédites en fonction des notes réelles pour le Random Forest

Nous remarquons qu’il n’y a pas de valeurs aberrantes. Le nuage de points pour le Random Forest est plus resserré que celui du XGBoost : il fait donc moins d’erreurs.
Dans le cas du modèle par poste, les trois meilleurs modèles sont : le RandomForest, le XGBoost et la régression linéaire. Après analyse, nous pouvons tirer les mêmes conclusions que pour le modèle global.
Dans les deux cas de figure, le meilleur modèle est le RandomForest. Comparons donc les performances des modèles par poste pour ce modèle.

RMSEModèle globalModèle par poste
Defender1.1421.137
Midfielder1.1251.137
Goalkeeper1.0561.173
Forward1.1591.141

Le modèle global possède des performances supérieures au modèle par poste. Nous optons donc pour créer un modèle global. Nous supposons que le modèle par poste est pour l’instant moins efficace car nous ne présentons pas assez de données d’entraînement.

Déploiement et commercialisation

Notre produit sera intégré au système informatique de FIFA. Il permettra à FIFA un gain de temps et d’argent. En effet, les modèles mettent environ 3 secondes à faire les prédictions pour tous les joueurs. Il suffit de mettre à jour régulièrement les statistiques des joueurs dans la base de données pour avoir des notes les plus fiables possible. Ce qui est négligeable par rapport au
temps que FIFA met à coordonner les 8000 bénévoles et 200 data editors Le temps de calcul de ces notes est donc réduit. De plus, l’ajout de notre algorithme pourrait améliorer la satisfaction client grâce aux mises à jour régulières et donc conduire à une augmentation du taux de ventes.
On peut aussi quantifier le gain d’argent pour FIFA en termes de salaires économisés. En effet, FIFA économisera environ 14,5 millions d’euros.