Enseignement 2022-2023 : Apprentissage et génération par échantillonnage aléatoire
    Séminaire du 31 janvier 2024 : Présentations de gagnants des challenges 2023-2024

    Professeur : Stéphane Mallat
    Chaire Sciences des données

    Présentation des challenges de données pour l’année 2023-2024 : challengedata.ens.fr

    Les challenges sont proposés par des services publics, des entreprises ou des laboratoires scientifiques, et sont issus de problématiques concrètes. Les participants soumettent les résultats de leurs algorithmes de classification ou de prédiction, qui sont mis en compétition par le site web. Les challenges sont intégrés dans le cours du Pr Stéphane Mallat au Collège de France, et proposés dans de nombreux enseignements de sciences des données en France et dans le monde francophone.

    Retrouvez les enregistrements audios et vidéos du cycle :
    https://www.college-de-france.fr/fr/agenda/cours/apprentissage-et-generation-par-echantillonnage-aleatoire

    Retrouvez tous les enseignements du Pr Stéphane Mallat :
    https://www.college-de-france.fr/chaire/stephane-mallat-sciences-des-donnees-chaire-statutaire

    Le Collège de France est une institution de recherche fondamentale dans tous les domaines de la connaissance et un lieu de diffusion du « savoir en train de se faire » ouvert à tous.
    Les cours, séminaires, colloques sont enregistrés puis mis à disposition du public sur le site internet du Collège de France.

    Découvrez toutes les ressources du Collège de France :
    https://www.college-de-france.fr

    Suivez-nous sur :
    Facebook : https://www.facebook.com/College.de.France
    Instagram : https://www.instagram.com/collegedefrance
    X (ex-Twitter) : https://twitter.com/cdf1530
    LinkedIn : https://fr.linkedin.com/company/collègedefrance

    [Musique] [Musique] donc on va avoir là maintenant [Musique] la la présentation des gagnants des challenges de leurs résultats et un débat autour de ça qui vous sera présenté mais je voudrais commencer par remercier les messenes qui ont financé tout ça c’est-à-dire d’abord la Fondation CFM qui nous soutient

    Depuis le début et puis depuis maintenant plus d’un an je vous en avais parlé l’année dernière mais vous étiez pour la plupart pas là on a commencé une initiative qu’on appelle matadata pour aider l’enseignement des maths aussi au collège parce que finalement ces challenge de données c’est une manière

    De découvrir les maths de façon un peu différente en passant par des vrais problèmes et en faisant émerger les maths à partir du problème plutôt que l’inverse et cette manière de faire des mathématiques en fait c’est la façon historique si vous prenez des gens comme Fourier comme gos comme la plupart des

    Mathématiciens les concepts de math la plupart du temps et ont émer de problématique souvent de la physique maintenant beaucoup de ces nouveaux domaines la biologie et la science des données et l’enjeu c’est de montrer pour des élèves de seconde de première de terminal que les maths qui font bah ce

    Sont des maths qui sont importante pour résoudre des vrais problèmes et pour leur donner des perspectives pour les motiver puis aussi pour avoir une intuition un peu différente des mathématique une façon un peu moins formelle et donc cette initiative qui est coordonnée par Hakim viené euh on

    Est en train maintenant de la faire de la développer avec le l’éducation nationale qui nous donne un accueil je dois dire assez enthousiaste et je voudrais remercier à cette occasion la Fondation NG et LV amche qui nous soutiennent c’est dans le cadre d’une initiative du Collège de France d’agir

    Pour l’éducation parce que actuellement il y a un véritable enjeu pas simplement en math mais aussi pour la lecture aussi dans les petites classes et donc c’est un aspect donc et je voudrais juste conclure en remerciant marine N qui est ici qui a été l’organisatrice de toute la saison

    Précédente et qui nous quitte qui part vers d’autres cieux donc je voudrais juste la remercier avant qu’elle introduise donc merci beaucoup marine et je passe la parole à et peut-être marine pour la présentation des gagnants bonjour à tous merci d’être venu si nombreux pour cette remise des récompenses de la saison 2023 des

    Challenge data euh je vais être assez rapide globalement cette saison a été une vraie réussite on a eu plus de 2500 inscriptions sur des challenges pour environ 12000 soumissions donc les gagnants qui sont là félicitations à vous euh tous les benchmark sauf un ont été batttu donc c’est quand même positif

    Pour les les entreprises euh moi je vais tenir à remercier du coup toutes les tous les providers de données qui sont présents aujourd’hui sans qu’ les challenges pourrai pas exister les betta testeurs qui ont travailler sur la redéfinition des challenges et sur leur clarification ainsi que tous les participants qui ont

    Pu faire vivre ces ces challenge je remercie également Bertrand Cabo Alexis Dubo et romarie gut pour le maintien et le développement de la plateforme informatique de de du site du challenge euh voilà on va pouvoir passer à la première partie de la cérémonie la première partie de la cérémonie il y a

    Deux gagnant de challenge qui vont nous présenter leur solution donc le gagnant du challenge qrt et le gagnant du challenge in donc sans plus attendre pour le challenge qrt je vais appeler Eduardo penetti du coup le provider de données qui va nous rappeler la problématique ainsi que Mohamed Ali Benamara tu peux venir

    Maintenant voilà je laisse la parole merci bonjour à tous Je m’appelleardo peetti je travaille à kart et j’espère qu’il y a pas problème si je parle anglais c’est plus clair electricity prices it was not about predicting the price of the electricity in the future but explaining what was

    Going on today with information that we have today as a benchmark for the score if you if you knew all this information you could get 100% prediction on the on the price you know if you know the prices of all the commodities of all the production in France all the production

    In Germany you could predict this perfectly so you know the best score would have been 100% so the SC that we got in the beginning of the we use data which is weather data data production in France from nuclear wind coal both in Germany also in Germany and you know it was a

    Challenging problem because each of the countries have very different uh behaviors and uh we were very happy that there was so many people participating in in our challenge and something that that we saw you know like in the beginning scores were around 25% correlation to the score 27 and suddenly

    We saw a big jump in in scores and something that we noticed was that there there was a leak in the in the data in which you could uh we had anonymized the data in a way that you couldn’t tell you know the dates and you know you could

    Reproduce the you could sort The the the test set and that would give you some some information something that was very interesting after looking at many of the solutions from from students is that using this leak was not necessary to get a score one of the top scores you could really

    Use arguments both fundamental using a real knowledge of the electricity market or understanding the seasonality of electricity through time to do this in a nonleak way so you know we saw really some brilliant solutions both using just machine learning using fundamental arguments using you know physics arguments for the

    Seasonality and so so it was it was very interesting to see like all these very different solutions uh we hired a couple of people that participated in this challenge and gave us a a very interesting solution so you know for for us it was very good and I hope that the

    Participants also enjoyed it so you know very interested to see in your resolution and congratulations and I just want to to thank Marie no een [Applaudissements] donc bonjour je suis Mohamed Ali benara je suis étudiant 3e année à l’in Paris et le M2 MVA et je vais vous présenter ma solution pour le

    Challenge donc juste pour présenter le challenge un peu c’est le but est de d’expliquer ou de prédire euh les variations quotidiennes des prix de de l’électricité pour la France et l’Allemagne et pour comme variable explicative on a des données météorologiques quotidiennes dans la température pluie le vent et le prix des

    Produits énergétiques et la consommation comme le photovoltaïque et le nucléaire et on a aussi les des des informations sur l’utilisation au quotidien de de l’électricité comm la consommation et les échanges et les les imports export entre les deux pays euh donc on veut prédire les variations quotidiennes mais on veut pas juste

    Minimiser un erreur quadratique ou MSE ou MAE normal mais on veut maximiser la corrélation de spearmman donc les idées principales de de la solution sont juste dans la création des variables le feature engineering et un petit changement que j’ai fait sur le target alors pour la création des features on

    Peut voir que les données de consommation et les données de météorologiques ne sont pas stationnaires al pour la température pendant l’été c’est pas vraiment la même distribution que la température pendant l’hiver et donc le premier challenge était de d’enlever cette nonstationnarité donc ce que j’ai fait et de d’essayer de créer des features

    Basés sur des clusters je crée plusieurs clusters en se basant sur à chaque fois un groupe de featur et après je différencie par soit la moyenne ou la médiane de ce cluster pour avoir un peu de stationnarité et reconstruire un peu l’aspect temps genre par exemple si j’arrive à reconstruire

    Euh un cluster qui qui groupe les dates de l’été et un autre pour l’hiver je peux différencier la variation de la cons je peux différencier la consommation ou la température dans ce dans ce jour-là par la moyenne en juillet ou pendant l’été et c’est un peu plus stationnaire et cette idée m’a j’ai

    J’ai eu une solution qui a 032 de score dans donc dans le top 10 ou le Top 12 sans leak qui est juste en se basant sur cette création de feature et un petit changement sur le target mais j’ai aussi trouvé une correspondance entre les

    Idées et les les ID genre le feature ID et les clusters et donc j’ai un j’ai fait un reclassement par ID et quand j’ai fait les plotes j’ai trouvé que je peux reconstruire l’aspect temp genre je trouve un time series donc ce que j’ai fait et j’ai différencié

    Les les les bases et après j’ai j’ai fait un une différenciation par des moyennes mouvantes sur les valeurs passées et c’est ce sont les features principals qui qui m’ont aidé pour pour faire le Jump et après pour changer le target la corrélation de spearmman vérifie principalement les rangs des prédictions

    Il faut avoir une relation monotone entre ce qu’on prédit est ce qu’on est ce qu’on a mais par contre la plupart des algorithmes optimise soit l’erreur quadratique ou absolu genre MSE ou Mae et et et même des petits changements sur dans l’ MSE par exemple dans le premier

    Exemple l’ MSE est très il est très faible mais on a une corrélation de spirman de 0,5 car car le petite erreur entre 01 et 012 et 011 qui est prédite comme il faut on a un flip dans les dans les rangs et et ça et ça va induire une

    Corrélation de spman de 05 donc ce que j’ai fait et j’ai remplacé j’ai remplacé les les targets par par leur rang si on a 01 011 et 02 on peut le remplacer par 1 2 3 et même si on a un un un MSE plus grand la corrélation de spirman elle est

    Un peu plus importante elle est bonne ce sont deux exemples un peu extrêmes mais c’est l’idée qui m’a aussi aidé à faire un un très bon jump et pour l’algorithme euh j’ai essayé plusieurs modèles en se basant juste juste un un petit point sur sur ça aussi il y a plusieurs variations

    De soft ranking des des implémentations différenciaables de la corrélation de spearmman mais j’ai expérienté avec por chez XJ boost mais c’est pas très stable et c’est c’est un suapprentissage en direct après deux trois itérations et pour l’algorithme j’ai essayé plusieurs modèles linéaires genre de régression linéaire des lassau et des

    Modèles sur les arbres et finalement j’ai décidé d’utiliser principalement le CAT boost car il est il est très bien avec les données catégoriques et la feature la plus importante et la feature de country gen Allemagne ou France et et après j’ai fait un petit feature un petit feature selection à partir du CAT

    Boost que j’ai entraîné et je l’ai entraîné sur la toute la dataset c’est tout merci euh bonjour du coup on va passer à la 2è présentation d’un gagnant donc c’est Rémy Dubois de hawin qui va nous introduire le challenge et féliciter les gagnants de son challenge merci donc bonjour à tous moi

    Je m’appelle réy Dubois je travaille chez Okin j’ai participé à à l’élaboration du challenge sur lequel certains d’entre vous ont pu travailler donc l’objectif du challeng il est très simple c’est de de de de de détecter en d’autres termes de prédire la présence d’une mutation dans le cancer du sein et

    Donc comment est-ce qu’on fait ça une manière de le faire c’est de travailler sur des échantillons d’histologie donc qu’est-ce que c’est qu’un échantillon d’histologie ça va être un ensemble de cellules qu’on va prélever chez un patient généralement on va en faire une tranche très fine qu’on va ensuite

    Prendre en photo donc en fait on travaille avec des images dans ce challenge et et qu’est-ce que c’est que la la mutation pic 3 ca donc déjà faut savoir une première chose c’est que ce qu’il y a de plus difficile quand on parle de mutation c’est de prononcer

    Correctement leur nom non donc ça donnera des idées peut-être pour les prochains challenges j’ai arrêté d’essayer mais en l’occurrence la mutation pic 3 ca elle est importante parce que elle permet de rendre éliggible ou non des patientes en l’occurrence surtout puisqu’on parle du du cancer du sein à certaines

    Thérapies et à l’enverse ça va éliminer certaines thérapieses possibles donc ça permet d’avoir des thérapies plus ciblées euh donc voilà Okin travaille plus généralement sur l’élaboration de ce qu’on va appeler des biomarqueurs donc en gros ça va constituer enfin ça va être consister en en en cons suer des espèces de dictionnaires d’information

    Sur les patients la présence de mutation en éint et donc typiquement ce qu’on essaie de faire régulièrement c’est de rendre plus accessible la constitution de ces biomarqueurs et donc utiliser ces images et des algorithmes automatiques on est un bon exemple puisque en temps normal comment est-ce qu’on obtiendrait

    Cette information il faudrait faire un séquençage de gène ou bien chercher des des conséquences de cette mutation qui sont des effets ricochets donc avec des approximations et qui résultent en un en une une détection de cette mutation qui est moins bonne donc voilà je je tenais à à féliciter les de manière générale

    Tous les participants à ce challenge j’espère que ceux qui ont pu travailler dessus l’ont trouvé intéressant on appris des choses et et j’espère aussi vont nous apprendre des choses et donc plus particulièrement au gagnants donc à à Monsieur Bonin je sais pas s’il est présent et puis au reste du podium

    L’équipe de Monsieur tardier et Monsieur Matra pou plein et trop trop donc je leur passe la parole pour nous présenter leur solution voilà merci à vous et bravo merci réi euh bonjour à tous donc on est ravi d’être d’être là aujourd’hui pour vous présenter cette cette solution donc on est une équipe

    D’étudiants au Mines de Paris et aussi au au au MVA et donc du coup on a réalisé ce challenge dans le cadre d’un cours au minine de Paris du coup comme ça a déjà été euh était un peu un peu introduit le but de ce challenge était de détecter une

    Mutation génétique donc à partir de coupes histologique donc dont vous pouvez avoir un exemple ici à gauche et euh en fait c’était des images qui étaient très très grande et de très très haute qualité et donc euh qui était beaucoup trop grande pour être entraîné euh avec des méthodes enfin pour qui

    Pour être utilisé pour des méthodes de classification de machine learning normal donc Okin en fait a proposé un un échantillonnage de petite tuile qu’on peut voir ici qui sont en fait tiré au sort donc au sein de la coupe histologique et donc ce sont les petites

    Taches noires qu’ qu’on peut voir là et donc du coup cette huile était de taille beaucoup plus adapté à des méthodes de machine learning et cette huile ont étit passé par Okin dans un réseau restnet qui avait été préalablement entraîné sur un ensemble de données médicales donc de

    De coup isologique de cancer du colon et donc en fait chacune de ces tuiles a eu avait en sortie de ce de ce réseau resnet une une une une une représentation dans un espace latant qui était donc un vecteur de longueur 2048 donc en fait pour chaque coupe

    Histologique on avait 1000 tuiles donc qui était chacune représentée par cette sortie du restnet qui était un vecteur de longueur 2048 donc qui est en fait la structure de données que nous avons utilisé dans ce dans ce dat challenge on était confronté à un problème d’apprentissage qui était faiblement

    Supervisé dans la mesure où le seul label qui était qui était disponible pour nous c’était est-ce que le patient dont cette coupe hisologique est extraite est porteur ou non de la mutation et donc en particulier on avait pas l’information sur est-ce que est-ce que la la la tuile est porteuse de cette

    De cette mutation génétique et est-ce qu’on peut voir une manifestation de cette mutation sur sur la tuile afin de contourner ce ce problème donc la baseline qui était euh qui était proposée par Okin faisait du multiple instance learning qu’en fait il faisait euh une moyenne euh sur les 1000 euh

    Vecteurs de longueur 2048 et ensuite procéder à une régression logistique sur euh sur euh sur ce vecteur de moyenne euh du coup euh Okin a déjà euh utilisé une architecture euh chaudeur avec donc euh une couche de de convolution pour euh résoudre un un problème qui était un

    Peu similaire donc on retrouvait encore des tuiles et et donc des des coupiesologiques et des tuiles qui qui qui en étaient extraites mais le but là c’était de euh de pouvoir détecter des métastases donc des des cellules cancéreuses qui étaient donc localisé et qui avait une une une une structure

    Enfin une une localisation bien bien précise sur les tuiles et le problème que on avait nous était un petit peu était un petit peu différent dans la mesure où on peut considérer qu’une mutation génétique est assez diffuse elle ne va pas être précisément localisée à un endroit précis dans dans

    La coupe hisologique mais on peut supposer qu’elle va être elle va être représentée un peu partout dans la coupe histologique de manière un petit peu homogène voilà donc comme Paul l’a dit notre approche se base sur cette observation qui est euh qu’on peut faire l’ on a fait

    L’hypothèse de modélisation que on peut observer la présence ou l’absence de la mutation sur chacune des tuiles indépendamment des autres tuiles donc ce qu’on a fait c’est qu’on a attribué à chaque à chacune des tuiles d’un patient le label de la coup hisistologique donc la conséquence immédiate de ça c’est

    Qu’on se retrouve avec un dataset qui est beaucoup plus gros donc de 344 x 1000 344000 tuiles que l’on a pu ensuite passer dans notre modèle indépendamment enfin sans savoir à quel paent elles appartenaient voilà donc finalement le modèle qu’on a utilisé donc en sortie du resnet est très simple

    C’est seulement deux couches de convolution 1 et ensuite une couche fully connected pour faire la tâche de classification donc on a choisi de faire un CNN parce que en fait le le resnet c’était déjà des couches de convolu donc on a juste rajouté deux couches là on a

    Fait un peu d’hyper paramètr tuning mais en fait ajouter des poids ou plus de profondeur ça ne changeait pas spécialement nos résultats donc on c’est une fois qu’on en fait dans le cadre de notre cours au MIN une fois qu’on avait ce modèle qui avait des des performances bonnes on n pas cherché

    À améliorer ce modèle de sortie et donc en fait aussi ce qu’on montre en présentant ce modèle c’est que le Grou du travail qu’on a fait en fait c’était dans trouver la bonne hypothèse de modélisation qui est de relabelliser les tuiles et que au final il y a pas

    Vraiment besoin d’utiliser une usine à gaz après pour pour avoir une bonne enfin une bonne performance voilà en tout cas on vous remercie pour votre écoute et si vous avez des questions on est disponible pour y répondre merci [Applaudissements] euh pour la suite de la cérémonie euh du

    Coup là on va passer sur la phase challenge où les malheureusement les gagnants n’auront pas le temps de de présenter leur solutions euh on va quand même féliciter challenge par challenge le podium de de de chaque compétition et ensuite après ça on atteindra le dernier challenge celui de CFM et la

    Présentation sera faite sous forme d’une table ronde avec les trois gagnants de ce challenge donc là on va annoncer le le le nom de chaque gagnant sachant que vos certificats de récompense seront à retiré à la fin de la cérémonie euh les providers enfin les fournisseurs de données donneront les certificats à

    Chaque à chaque membre du podium de chaque challenge voilà donc pour le challenge de l’université de Bristol on peut féliciter Monsieur Moro et M tia du coup on avait pas son nom félicitations à eux pour le challenge proposé par rum on peut féliciter Jude chondi on peut féliciter l’équipe de thibo

    Looiseau et on peut féliciter Hugo Masson bravo à vous pour BNP c’est Maturin H qui a remporté ce challenge suivi de yukiide nakada et enfin Guillaume Pontus et pour efficience c’est un des premiers challenge remporté par Franck Zibi mais pas le dernier il en a remporté 4 5 cette saison on peut

    Applaudir déjà très fort féliciter Jérém Dan et l’équipe de Thomas du boudin et Louis prononce certainement mal félicitations à [Applaudissements] vous et pour le challenge de plume le gagnant est de nouveau Fran Zibi et on a également sur le podium wdemarulgin et Harry Pomier [Applaudissements] félicitation continue ensite challenge

    De pladifess et impactful on félicite le gagnant Colin le noble je crois pas qu’il soit là mais voilà et les seconds et 3è Benjamin Morel et Paul Émile dunia [Applaudissements] pour pour l’AMF félicitations à Guillaume oups non pas Guillaume David Gautier et Tom lefè

    Pour être 1emier 2e et YFE dont on n pas le nom qui est 3e félicitations à tous les trois pour le challenge de l’université de Toulon qui était de détecter si dans des sons on avait la présence d’un n au Donon ou non c’est Frank Zibi qui a

    Gagné encore ce challenge donc en fait vous savez que l’année prochaine il faut juste battre Fran zbi sur tous les challenges si vous voulez avoir un peu de de Fame benjamin duget est 2 et Jérôme Gavot est 3e félicitations à vous et on a le challenge aussi d’accenta où

    Il y a beaucoup de groupes sur ce challenge là donc les premiers sont Gaetan serré et Perceval béjabatis les deuxièmes Nicolas breux et Arnaud Gardi et le 3isème d’utres on n pas le nom mais le pseudo est Jean-Jean félicitations à vous et on veut juste faire un petit mot

    Sur le challenge Transilien aussi donc il y a pas le classement encore pour l’instant on est en train de voir avec le provider pour récupérer les solutions euh des je sais pas de la dizaine ou de la quinzaine de premiers pour valider les solutions car il y a eu de la fuite

    De données et on préfère faire un classement fairplay donc on attend ça pour avoir le le classement officiel qui est qui sera potentiellement un classement final mais je crois que Franck a pu travailler dessus aussi donc si tu veux parler à remémy à la fin il y a pas de

    Souci comme l’a dit Enzo on va passer à au challenge CFM donc cette année on a voulu faire un peu différent c’est c’estàd de prendre les trois premiers et de les faire un peu discuter entre eux sur les mêmes questions donc ça sera Richard Beneton de CFM qui va animer la

    Table ronde et on aura Frank Zibi Amin Abdelkader et Joë Tang les 1er 2e et 3e qui vont vous présenter ce qu’ils ont fait vous pouvez venir bonjour à tous donc je vais présenter rapide je vais rappeler rapidement le challenge CFM qu’on a présenté cette désolé je vais présenter

    Rapidement le challeng FM qu’on a proposé l’année dernière donc le principe était relativement simple si on donne les l’évolution de prix du début de journée pour toutes les 5 minutes et il faut tout simplement trouver dans le sens dans lequel va évoluer le prix les deux dernières heures pour le contexte

    Et des actions américaines et il y en avait 4000 en tout et c’était sur 4 ans 2018 2019 2020 et 2021 et comme vous pouvez le savoir en 2020 il s’est passé quelque chose donc c’est pour ça que les données d’entraînement n’étaient pas du tout les mêmes que les données de test

    Donc Franck a gagné bien sûr comme pour tous les challenges ce challenge est intéressant parce qu’on on peut tester s’il y a de la mine réversion ou du ou du trend following on peut développer plein de futures intéressantes euh donc première question au candidats c’est à que pensez-vous disons en quoi votre

    Solution est meilleure que les autres de votre point de vue qui veut commencer passer les SL il y a un slide ah pardon on commence avec Franck bonjour donc je suis euh Franck Zibi et pour moi il y a deux spécificités à ma solution la première c’est l’architecture que j’ai utilisé qui est

    Derrière moi c’est une architecture où j’ai plusieurs niveaux qui vont se succéder donc c’est quelque chose qui va peut-être vous rappeler euh les arbres de décion boosté les lgbm les 4 boost les les XG boost et c’est un peu la même idée que j’ai essayé d’utiliser merci le premier niveau c’est un niveau

    Où on va juste faire de la classification et là j’ai utilisé des modèles C boost qui donnent de bons résultat ici ce qui est pas systématiquement le cas et j’ai remarqué que dans l’un des challenges précédents c’était aussi le cas donc 4 b ça peut être un modèle qui est extrêmement

    Intéressant il y a pas que la GBM et XG boost dans la vie le niveau 2 c’est un niveau où on va essayer d’estimer l’erreur commise par le précédent niveau on va faire une une estimation de résidu et pour ça je vais volontairement utiliser plusieurs modèles totalement différents je vais utiliser des arbres

    De décision mais je vais aussi utiliser des réseaux de neurones et notamment des réseaux RNN des réseaux récurrents des encodeurs décodeurs avec des réseaux récurrents qui donnent d’assz bon résultat j’ai testé une approche transformeer mais ça n’a pas permis d’améliorer les résultats donc là en sorti on va avoir plusieurs modèles qui

    Indépendamment vont essayer d’estimer l’erreur de classification du niveau 1 et le niveau 3 c’est un niveau qui va être extrêmement important dans ce type de challenge je vais uiser un stacking rressor qui va combiner les différentes estimations du niveau précédent et c’est quelque chose qui est fondamental dans

    Ce type de problème où il y a beaucoup de variances l’utilisation d’un stacking ressor donc d’un méta modè sur des modèles qui sont très divers va extrêmement va avoir un impact extrêmement bénéfique sur les résultats et c’est souvent dans les casagule quelque chose qui est quasi indispensable pour ce type de challenge

    Et enfin le dernier niveau c’est comme l’a dit Richard c’est un niveau qui est très spécial à ce challenge le la distribution de probabilité sur le test 7 était très différent de la distribution de probabilité sur le training et sur le validation 7 ça veut dire qu’il fallait recalibrer ces

    Résultats c’est ce que fait ce que ce ce 4e niveau de la distribution de probabilité obtenue sur training et validation vers la prob les probabilités du du testê et enfin la deuxième spécificité de ce enfin de ce challenge de ma solution c’est que j’ai développé pour ce challenge un premier outil de

    Feature engineering pseudo automatisé qui marche pas très bien et l’idée de cet outil c’est de proposer les features de recombiner des features numériques existantes et de les tester et de me dire si ça marche ou pas et pour ça le seul critère que j’ai utilisé pour l’instant c’est la somme des feature

    Importance la somme des chap values si la somme des chap values des features est supérieure à un certain seuil alors je les recombine sinon je enfin je les élimine directement voilà les deux spécificités de ma solution merci [Applaudissements] merci bonjour alors bonjour je suis amine donc j’étis donc classé 2e

    Là-dessus je vais vous donner en deux tro minutes qui je pense a fait la différence dans ma solution alors dans dans ce petit petit premier morceau de 2 minutes je vais vous dire ce qui m’a amené en score donc pour avoir une idée le benchmark était à 41.7 je crois je

    Crois qu’il y avait une bonne mêlée autour de 43.5 et puis après on pouvait monter très au-dessus vers 46 51 je crois pour Franck en travaillant sur le SLE mais ça ça sera la question d’après je vais vous dire ce qui m’a amené à 43.5 déjà pour commencer

    Euh je dirais ma solution ce qu’elle avaitre spécifique c’est que bon j’ai utilisé laigbm ce qui est un peu différent de Franck et Joë cette année mais bon moi j’ai utilisé LABM m et eu et je pense qu’il a bien marché chez moi euh pour arriver là c’était les features

    Que j’ai que j’ai créé donc une des futures que j’ai créé donc il fallait en fait il y avait des slots de 5 minutes de 5 minutes il fallait trouver le le le mouvement pendant les deux dernières heures de marché et et ce qu’on ce que je voyais c’est que quand j’étais trop

    Spécifique au au training 7 très vite on commença à overfeiter donc fallait trouver des features qui étaient assez robustes et notamment le feature robuste ce que j’ai trouvé c’est je faisais slider des des morceaux des intervalles de 2h et pour un un asset donné je je je

    Notais plus un si ce slot était supérieur à 25 bips qui était la limite dans le challenge fait fallit classifier plus 25 bip moin 25 bip il y avait trois trois classes donc en fait je faisais glisser ce cet indicateur de 2h donc ça correspondait aux 2h de fin et ça

    Donnait un entier à la fin c’est C ass 7 a passé 30 fois par exemple et je pense que ce ce fature c’était assez robuste et je pense ça a bien marché pour ça donc ça c’est un feature qui a très bien marché pour moi l’autre feature je pense

    Qu’ a très bien marché c’est que pour un asset donné donc il fallait donner un peu pour chaque ligne un peu des infos sur la journée et sur l’équity c’est il suffisait pas seulement de dire qu’a fait c assette pendant ce jour-là fallait dire voilà des infos sur la

    Journée et sur l’équity si possible en faisant des gros bail des choses comme ça et et ce que j’ai fait en fait c’est que pour un asset donné j’ai fait une table des corrélations je savais c’est c’est dire les les les assets les plus corrélés entre eux enfin j’avais la

    Liste et pour un asset donné je mettais à côté le comportement des 50 assettes les plus corrélées pendant ce jour-là voilà avec un indicateur du niveau de corrélation voilà ça c’est les deux features je pense qui ont été les plus efficaces pour moi pour m’amener à peu

    Près à ce au niveau des 43.5 à peu près voilà bonjour à tous euh alors moi mon approche était assez différente c’était une approche complètement deep learning je pense que j’ai pas fait assez de challenge pour UER des boosting comme tout le monde j’ai pas encore le réflexe

    Mais c’était donc en fait j’aié j’ai adopté une approche où j’ai d’abord regardé ce qui se passait sur sur le training 7 sur ce qu’on voit à côté en haut à droite euh c’est que on voit deux observations principales c’est qu’il y a une dépendance sur les sur les actions

    Euh sur la plupart des jours quand elles sont assez stable en fait pas de mouvement haussier très peu de mouvement baissier aussi d’une part et d’autre part qui a une forte corrélation en fait pour toutes les actions sur certains jours donc des jours où c’est des hausses de marché et des baisses de

    Marché donc c’est vraiment c’est ces bi là que j’ai essayé d’intégrer directement dans le modèle le modèle c’est un modèle deep learning basé donc les briques principales c’était des lstm stacké et un mécanisme d’autoattention euh j’ai fait assez peu de Data proc préprocessing à la place j’ai vraiment essayé de d’intégrer tout

    Ce que je voyais dans le training 7 directement dans l’architecture donc le lstm en fait il va servir à encoder les d’un point de vue temporel les séries les séries temporelles sur les quelques heures avant la avant la prédiction qu’on essaie d’achever euh d’une part euh je vais aussi encoder de la même

    Manière le vecteur moyen moyenné sur pour une action donnée sur tous les jours donc ça c’est le premier le premier billet que que j’essaie de l’information que j’essaie de donner au modèle dans les sport justement qu’il essaie qu’il puisse attraper les les actions avec une petite volatilité donc

    Ça ça se verrait sur le sur le vecteur moyen et je l’encode avec un lstm bon sur avec des paramètres différents d’une part et d’autre part avec le lstm ensuite je je vais simpler pour pour un jour donné je simpo une trentaine d’actions une trentaine de cours donc

    Leding post lstm et ça ça forme une séquence la séquence en fait elle est invariante elle inv variante euh elle est inv variante par par chuffling ça c’est l’ordre n’importe pas donc en fait là déjà c’est je peux appliquer une une self attention dessus sans position encoding sans rien du tout donc

    L’attention ça sert juste à dire euh j’ai cet embedding je regarde les autres embedding de des autres actions du même jour et ça c’est dans l’espoir de capturer la deuxième corrélation les les hausses de marché les baisses de marché euh le fait de sampler en fait ça me

    Permet aussi de faire de la test augmentation c’est-à-dire que je je peux passer plusieurs fois sur le même jour sur les mêmes actions avec des voisins différents donc les T1 tn sont différents je les chuffle et après je les recombine et je les refait prédire et ensuite je peux moyenner ou faire

    Voter sur ces différentes prédictions et donc je fais un skip connection et après je passe à la classification de l’ayer et donc ça ça a permis d’achever des d’assez d’assez bons résultats avec vraiment peu de peu de Processing j’ai j’ai même pas fait de compound finalement sur les sur les de comp de

    Temps sur les sur les TH series parce que bah ça marchait pas beaucoup mieux l’encoding des nan c’était juste un encoding en 01 donc je passais un vecteur d’un vecteur un vecteur R2 pour chaque pour chaque time step et ça marchait plutôt bien et j’étais assez content que ce modèle fonctionne parce

    Que c’était entièrement basé sur ce que je voyais sur le training 7 merci [Applaudissements] c’est plus une question sur le la spécificité du challenge en fait le le covid a changé énormément de dynamique dans les dans l’évolution des prix et la volatilité à explosé et comment vous

    Avez détecté ça en fait la solution de Fran est un peu automatique et le détecte sans le implicitement en fait mais comment pour amine et Joë vous avez détecté ça enfin si vous l’avez détecté oui oui alors donc oui je vais parler de cette partie donc j’avais dit donc dans

    La partie d’avant comment j’étais arrivé donc à peu près vers la ML vers 43.5 et alors pour la suite euh il avait été présenté déjà la présentation du challenge que les années sur lesquelles on faisait le le la prédiction était avec quelque chose de spécial c’était dit pendant la

    Présentation moi j’avais pas trop prêté attention mais en tout cas on pouvait euh euh montrer tracer la volatilité on pouvait voir qu’il y avait plus de volatilité sur la partie sur laquelle donc il y avait clairement une différence euh donc en gros Franck a pris des solutions et Joel ont pris des

    Solutions Franck surtout apris une solution où il a ajusté on va dire le test et le train moi j’avais pas de visibilité pour ajuster le train et le test et et j’avais pas très envie de les modifier manuellement de peur d’overfeiter quoi d’être bon sur la

    Partie publique et pas bon sur la partie privée donc ce que j’ai fait ce que j’avais déjà fait aux alentours de 6 mois à peu près j’ai j’ai ajouté des données de d’intrad qui sont disponible dans yaho finance on peut avoir 2 mois de d’intrad US je les avais injectés

    Dans le modèle pour voir qu’est-ce qui se passe donc je peux vous dire quel 2 mois de de Yo finance c’était trop fin c’est trop fin même si on mettait 5000 à c’est 2 mois versus 2 ans en fait de donnner c’était trop fin mais je me suis

    Replongé sur cette idée vers la fin 10 jours avant la fin et là je suis allé chercher 4 ans de Data donc je suis allé chercher l’année 2019 2020 2021 22 et en fait je les ai injecté dans mon dans mon set quoi et l’idée c’est de dire bah

    Avec plus de Data ça va stabiliser le modèle ça va le modèle va réagir des voilà unensemble différent et c’est ce qui s’est passé euh donc donc on peut dire on peut dire ça la réponse moi pour m’adapté au au test au test 7 j’ai injecté des vrais data et c’est là que

    J’ai fait un saut vraiment significatif donc 43 vers 46 à peu près et je pense de manière générale pour passer le cap des 43.5 il fallait faire quelque chose par rapport à la différence des deux donc voilà en tout cas pour ma part c’était ça c’est pas vraiment utiliser les vraies données

    Vu qu’il a enrichi son modèle avec des données du monde réel c’est exactement c’est dans la zone grise claire on va dire d’accord et Joel ouais alors moi j’ai vraiment pas osé recalibrer recalibrer mon modèle parce que j’avais déjà eu des mauvaises expériences quand j’essayé de calibrer

    Sur le test public et bon bah ça se passait pas très très bien euh je regrette euh parce qu’on m’ j’ai appris que le sampling était était identiquement suivit la même distribution entre le test public et le test privé donc ensuite sur les prédictions quand j’ai analysais mes

    Prédictions en fait sur le T7 je voyais tout de suite sur l’histogramme que enfin c’était un app PL bleu enfin un app plat de mo-1 donc c’était vraiment ça se voyait que c’était baissier et la seule chose que je me suis permis de faire c’est de regarder c’est de

    Regarder attentivement mon validation 7 parce que donc j’avais donc je savais à peu près quel quels étaient les nombres de jours haussier baissier ou ou flat et en fait j’ai vraiment fait attention à ce que mon validation 7 contienne à peu près soit à peu près équilibré à peu

    Près stratifié pour être sûr que d’avoir un modèle qui était robuste sur sur tous les à peu près toutes les situations donc voilà c’est à peu près tout ce que j’ai fait mais j’aurais volontiers recalibré mes probabilités comme tout le monde et c’est une solution propre et donc en fait si tu

    Avais eu la possibilité de continuer pendant des années sur ce challenge tu aurais fait quoi comme solution euh sur la trème question du coup ouais euh bah déjà j’aurais déjà sur mon j’avais donc plusieurs modèles de Deep learning qui suivent la même architecture que j’avais présenté entraîner sur entraîné en bagging donc

    Sur des training set des des subsets différents euh j’avais j’avais aussi analysé les probabilités les calibration et je voyais qu’il se passait quelque chose de pas très net parfois sur certains certaines certains de mes modèles overfité brutalement sur mais que sur des des petits des vraiment des

    Petits sets de de mon training de mon validation set j’ai regardé pour ça j’ai regardé la marge entre la prédiction 1 et la prédiction 2 et celle entre 2 et 3 pour avoir une idée une sorte deuristique de la confiance de mon modèle et je voyais vraiment des scores

    09 999 sur certains sur un subset très précis de certains modèles et donc ça j’aurais aimé bien plus j’aurais aimé creuser bien plus d’autant plus que je faisais de l’urly stopping et je voyais qu’en fait que certains modèles entraînaient sur beaucoup plus d’époque sans que ça se voit vraiment sur la

    Validation l ça baissait juste un petit peu mais pas vraiment et je pense qu’ il y a quelque chose de lié et j’aurais bien aimé creuser plus de ce côté-là sur la stabilité de l’entraînement d’ailleurs le fait que le fait que certains de mes modèles étaient très

    Très confiants a été ça ça overfitait et ça ça a été un peu mitig par par le fait que j’ai fait voter mes modèles au lieu de moyenner leur probabilité par exemple euh autre chose sur le l’architecture en elle-même donc moi je passe j’embê les modèles j’embête les time series en

    Passant par des lstm et ensuite je fais la ttention donc la tenstion c’est qui sert un peu à à regarder ses voisins ce qui se passe et en fait là je me dis pourquoi pas pourquoi pas faire les deux de manière les entrelacer en fait en fait en fait comme un transforme

    Encodeur comme un encodeur transformeer plus classique où on a des fit forward puis la tension puis des fit forward avec les fit forward qui transforment qui transforment le qui transforme le le vecteur le vecteur et ensuite je refais de la tension donc moi je l’ai fait finalement j’ai fait l’équivalent d’une

    Seule couche mais j’avais des lstm qui étaient stackés donc en fait pourquoi pas prendre un lstm puis faire de laatension et puis stacker et cetera donc en fait on se ramène un peu à un sorte dans l’idée à un sorte d’encodeur transformer mais avec d lstm au lieu de

    Au lieu d’un fit forward c’est c’est quelque chose que j’aurais aimé creuser sinon du club clering simple clustering aussi euh après en fait j’aurais bien j’aurais bien rajouté plein de modèles différents avec plein de d’idées simples pour les faire voter entre eux c’est quelque chose avec du

    Bgging derrière avec du bggging à la fin sur tous les modèles voilà c’est ça en fait il y a un moment du challenge où c’est le moment j’ai parce que j’ai commencé par du boosting quand même parce que j’ avais quand même le benchmark qui incité fortément à boosting j’ai boosting ensuite j’ai

    Développé ce ce modèle et j’ai essayé de les faire voter entre eux et sur T7 ça a pas bien marché alors j’ai peut-être pas eu de chance j’ai franchement j’ai peut-être pas eu de chance mais ça m’a clairement diriger vers vers cette approche là mais sinon dans l’idée je

    Pense queil y avait juste de la calibration à faire mais j’aurais volontiers pris des pris des modèles plus simple effectivement le clustering on a du on voit là qu’il y a des actions qui ont clairement des comportements différents bah déjà ceux qui sont tout le temps flat ça c’est quelque chose

    C’est une caractéristique spécifique donc oui un modèle de clustering ce qui aurait pu servir même d’entrée à un autre modèle plus complexe après je précise que les actions étaient disjointes entre le training 7 et le T7 mais c’était le la même dynamique d’action donc du clustering était toujours valable h et euh

    Amine si tu avais eu encore des années pour scrapper plus yo alors euh si j’avais eu plus de temps je pense naturellement sans avoir parlé aux autres participants je pense j’aurais probablement affiné la méthode bah de l’injection de Data en fait parce que moi je l’ai fait assez vite j’ai juste

    Mis 4 ans mais du coup on peut faire beaucoup mieux on peut j’aurais pu commencer à trouver c’est quoi les deux années finalement puisque c’était finalement 2020 202 c quoi 2020 2021 c’est ça le test 7 c’est 2020 2021 le covid donc j’aurais pu finir par trouver

    Les deux bonnes années puis à la limite une fois qu’on a les deux bonnes années j’aurais pu jeter le training 7 puisque j’aurais pu m’entraîner directement sur 2000 sur le bon test 7 après on avit parlé rapidement dans le col je pense on pouvait reconstruire les jours parce

    Qu’en fait il y avait des équit qui arrêtait soit qui était tiré de de l’indice soit qui apparaissait quoi enfin qui qui soit qui arrêtait d’exister soit qui apparaissait donc en regardant C ces équities qui qui montaient qui partaient on pouvait retrouver l’ordre des jours en fait donc

    Ça aurait été encore une étape supplémentaire en fait on aurait pu reconstruire peut-être même retrouver les assettes à un moment donné donc il y avit beaucoup de travail sur cette voie donc là on aurait pu aller vers des scores ou certainement très bon donc ça c’est la première voie donc l’autre voix

    Je dirais que même avec juste en injectant quatre années supplémentaires c’est en stabilisant le modèle l’autre voie c’est bah en fait de revisiter maintenant les features parce que moi jusqu’ici dans les features j’avais été très léger le but Ctait d’être léger pour pas être trop de pas overfiter et

    C’est celle que j’ai utilisé pour mon pour ma submission finale ici mais maintenant que mon que le modèle est est bon je serais revenu j’aurais fait des choses plus précises j’aurais sûrement eu un un test local en ligne avec le vrai résultat et là je pense on aurait

    Pu faire des choses assez précises et je pense monter en et les les futures gagnantes auraient sûrement été très différent de celle que finalement j’ai j’ai utilisé donc donc voilà voilà probablement ce que j’aurais fait si j’avais plus de temps et Franck alors si tu avais eu pas

    De limite à la soumission par jour et des années ben je pense qu’il y a trois aspects assez orthogonaux sur lesquels j’aurais travaillé le premier aspect c’est sur la partie modèle dans les modèles que j’ai utilisé je n’ai pas utilisé de transformer et intuitivement on se rend bien compte que les

    Mécanismes d’atention apportent énormément dans ce type de de challenge et donc mon intuition c’est comme l’a montré Joë dans sa solution il peut être extrêmement profitable dans un même ensemble d’utiliser à la fois des mécanismes d’attention et d’autres mécanismes typiquement lstm ou Gru et c’est quelque chose qu’on a vu récemment

    Dans tout ce qui est vision historiquement on avait des réseaux de convolution ensuite on est passé à des réseaux Transformers vision transformer et on se rend compte aujourd’hui qu’en faisant à la fois de la convolution et des transformeurs et des mécanises d’attention on arrive à aller encore

    Plus haut donc le premier aspect c’est améliorer cette partie transformeer ajouter cette cette capacité donc c’est c’est juste ser d’avantage et je pense ça permet de monter encore plus haut le le le deuxième aspect c’est sur la partie feature engineering l’outil que j’ai développé il est assez primitif

    Pour vous donner quelques KPI il arrive à tester à peu près 10000 combinaisons de feitur en une journée sur GPU et sur ces 10000 combinaisons il va y en avoir peut-être une ou deux qui sont pertinentes donc la rentabilité elle est pas au rendez-vous et il enfin l’idée

    C’est de trouver un moyen pour cette recherche et pour faire un parallèle avec l’yperparamètrur optimisation quand vous lancez une recherche baaisienne il va y avoir un modèle qui va être entraîné derrière un random forest par exemple et ce modèle va pouvoir guider vers la recherche des P hyperparamètres

    Et c’est quelque chose d’équivalent que je cherche que j’ai pas trouvé et qui permettrait d’aider énormément dans ce type de compétition où on fait l’hypothèse qu’on peut tester autant de combinaisons qu’on veut où on n pas de limite de ressources GPU ou CPU derrière et il y a un troisième aspect qui est

    Très important c’est un peu enfin dans la vraie vie il y a des conditions de production de maintenance de support et dans la majorité des projets de Data Scien à part peut-être les LM le coût de développement est nettement inférieur au coût de support et de maintenance qui va

    Arriver derrière et l’un des objectifs que j’ai essayé dans ce challenge c’était de trouver une solution qui était plus simple que la solution que j’avais qui m’avait permis de gagner il y a 2 ans le chez en CFM euh j’ai pas totalement réussi parce que ça reste une

    Solution compliquée je pense qu’on peut arriver à une solution peut-être avec trois modèles et arriver à des performances presque si bonnes avec trois modèles mais c’est aussi un axe et clairement dans toutes les solutions qu’on propose il faut avoir derrière en tête que ce ces solutions vont passer en

    Prod et que il va avoir des coups de maintenance qui peuvent être assez importants si on a mal géré ce qu’on a fait en production ou qu’on a pas pensé à toutes les à toutes les possibilités h merci et c’est typiquement ce challeng FM montre que des modèles entraînés sur des années sur

    Un monde relativement stables ne sont pas forcément robustes à l’évolution du monde c’était le la conclusion ce challenge on va dire et il nous reste quelques minutes vous auriez des conseils aux candidats en fait sur enfin j’aurais un conseil c’est quelque chose qui est extrêmement important dans dans une carrière en data

    Science c’est de toujours continuer à apprendre et c’est important parce que souvent quand on commence sa carrière on est extrêmement bien armé on connaît plein de choses et 10 ans après c’est enfin on peut avoir oublé des choses et une question qu’on peut se poser chaque année c’est qu’est-ce que j’ai appris

    Durant l’année écoulée et si la réponse c’est pas grandchose il y a peut-être des choses des questions à se poser et juste justement avec ces data challenge on a la possibilité que soit en début de carrière en milieu de carrière à tous les niveaux à tous les moments de

    Continuer à apprendre et c’est pour ça que voudrais remercier les organisateurs marine pour la dernière fois Enzo le professeur St mal l’ensemble des personnes qui proposent des équipes qui proposent des des challenges et qui permettent aussi bien à des étudiants à des gens un peu plus seniors de se

    Tester de se mettre à jour et d’apprendre énormément de choses et ce que je fais grâce à ces challenge chaque année donc merci à vous et amine et Joë peut-être aussi des conseils pas forcément à prendre il y a aussi un côté amusant au challenge non le moment vous vous souvenez pas du

    Moment où vous avez trouvé la solution ou des conseils plus terre à terre sur les sur les challenges donc c’est vraiment la variance l’avoir en tête parce que quand on voit des score de test ou de validation le modèle overfit mais nous aussi on peut overfiter en fait notre

    Notre nous notre réaction au score fait qu’on va on va faire des choses et en fait à ce moment précis on est déjà en train d’intégrer des informations qui nous viennent du test et qu’on aura pas peut-être si le modèle le modèle tourne en production donc faire attention à ses

    Propres bi en fait donc vraiment il y a le modèle qui fit mais nous aussi en fait on choisit le modèle selon ce qu’on voit sur le test on choisit les hyper paramètres on choisit voilà d’intégrer tel ou tel feature et tout ça c’est tout ça c’est intégré et il faut penser c’est

    Que ça ça ça creuse le gap entre la vraie performance entre guillemets du modèle et celle que vous voyez sur la validation ou le test en second ordre euh ouais alors je dirais un peu la même chose que Franck c’estàd que en fait de participer à des challenges comme ça que

    Ce soit ici ou peut-être Kagle j’imagine que beaucoup de gens qui participent ici participent peut-être aussi à Kagle ouais ça permet ça permet d’avoir un truc fun et et en même temps un peu difficile pour pour se mettre à jour un peu donc c’est pas mal et puis ça permet

    De voir la solution ici sur cagule on peut voir la solution sur les chats aussi un peu donc je dirais ou ça de ce point de vu- là c’est très intéressant euh peut-être je dirais autre chose parce que sur les challenge comme ça on

    Voit pas mais en fait il y a quand même une une grande inégalité sur sur sur le système enfin la machine sur laquelle on fait tourner quoi et je crois on av parlé avec Franck un peu donc moi j’utilise un un ordi voilà avec un un assez gros CPU mais par exemple j’ai

    J’ai appris de Fran cette année que lui utilisait des GPU et donc il utilisait quatre boost comme ça utiliser les GPU c’est peut-être quelque chose que je vais utiliser l’an prochain parce que du coup les les la différence de vitesse de calcul peut faire une très grosse

    Différence quoi que parfois on a les bons features mais on peut pas les faire tourner assez loin et on se rend pas compte c’est chose que j’avais remarqué quand j’avais une plus petite machine pendant les années précédente donc oui voilà j’ai des conseils un peu un peu un peu de ce type là

    Quoi ok ben merci beaucoup euh et et merci bien sûr et merci bien sûr à tous les candidats qui ont souffert sur ces challenges euh on va passer du coup à la conclusion merci à tous d’avoir présenté vos solutions euh vous avez pu voir qu’il y a plein de choses variées à

    Faire pour pouvoir être bien classé dans les challenges merci à tous pour votre attention là dans la salle euh j’espère que les huit challenges de cette année auront tout autant de succès et euh bah pour la suite de la cérémonie on va demander au provaide de aux participants

    Là qui sont sur le podium et au betta testeur de l’année dernière de patienter quelques instants on ira dans une autre salle pour le cocktail comme ça les participants et les provideurs de données pourront discuter entre eux récupérer leur certificat et cetera et cetera merci à tous au [Applaudissements] [Musique] revoir

    Leave A Reply