 Bonsoir Montréal-Piton. Good evening Montreal-Piton, and welcome to Bearded Yokai. Bienvenue à Yokai Barbu, notre 84e rencontre mensuelle de Montréal-Piton. Alors, les Yokai, si vous n'êtes pas familier, c'est des monstres dans la mythologie japonaise. Ça inclut les démons, mais ça n'inclut pas les dragons. Je sais pas pourquoi. Si quelqu'un est familier avec la mythologie japonaise, je serais très intéressé à savoir comment on classifie qu'est-ce qu'il y a un Yokai et qu'est-ce qu'il n'est pas un Yokai. Donc pour ceux qui n'est pas familier avec Yokai, Yokai sont monstres dans la mythologie japonaise. Ça inclut les démons et les dragons, mais pas les dragons. Je ne sais pas pourquoi, mais si vous le faites, bon, s'il vous plaît, let's know in the comments. Montréal-Piton 94. Je vais changer mes slides, oui. First of all, I want you to know that we have a code of conduct at Montreal-Piton, and it's very simple. It basically says that we want everyone to be excellent between one and another. If you see something that doesn't feel excellent, find me on Slack. Let me know and we're going to make sure that we can resolve the situation. Première chose, à Montréal-Piton, on a un code de conduct et ça dit simplement qu'on veut que tout le monde soit excellent les uns envers les autres. Si vous voyez quelque chose qui vous semble pas excellent, trouvez-moi sur Slack. Je suis Yannick. Laissez-moi le savoir et je vais m'occuper de régler ça le plus rapidement possible. Et puis on vous invite à vous joindre sur Slack. L'URL est ici, mtlp.org.fr. Alors notre programme pour ce soir, on a justement un petit changement de dernière minute. On va avoir en premier Jules qui va nous parler de l'introduction à l'apprentissage automatique, de Machine Learning en anglais. Et puis par la suite, on a Thierry qui va nous parler de l'apprentissage automatique avec Technonic. Et puis par la suite, on se retrouve tous ensemble sur GTC en grosse vidéo conférence avec tout le monde et puis votre rafraîchissement favori pour discussion de votre choix technique ou pas technique. Tout est correct. Donc notre agenda pour ce soir, il y a un changement de dernière minute. Et c'est la beauté de faire live, c'est que nous pouvons faire des changements de dernière minute. Donc premièrement, on va avoir Jules qui va nous donner une introduction à l'apprentissage automatique et puis Thierry va nous donner une autre vue de l'apprentissage automatique avec Technonic. Et après ça, on va avoir notre habituelle heure virtuelle sur GTC en vidéo conférence. Tout le monde s'amuse avec votre rafraîchement favori et on peut être techniqueux. Qu'est-ce qu'il y a ? On a un couple d'autres événements. La prochaine semaine, exactement à cette époque, ou peut-être une heure plus tard, oui, une heure plus tard que ceci, à l'heure d'aujourd'hui, on va avoir un programme en soirée qui est tout de suite un programme d'apprentissage automatique. Nous allons couvrir l'apprentissage automatique et nous allons couvrir les best practices. Ce sera beaucoup en français, mais bien sûr, si tu as des questions en anglais, nous allons être vraiment heureux de leur répondre. Et en parlant de l'anglais, je vais revenir à l'une. Les deux présentations vont être en anglais aujourd'hui, avec beaucoup de... Sorry, les deux présentations vont être en français aujourd'hui, avec beaucoup d'anglais dans les slides. Si tu veux poser des questions en anglais, je serai heureux de transmettre tout pour toi. Et maintenant, on va retourner aux événements futures. Donc, un programme en soirée, la prochaine semaine, MP95, Zebra Antiseptic. Nous sommes encore en train de regarder les présentations. Donc, n'hésitez pas à nous contacter. Ce sera la dernière rencontre mondiale jusqu'à la fin de l'année. Nous allons prendre un break pour l'année. Et vous pouvez voir tous les autres événements, soit sur ce site, sur notre website, ou sur meetup.com. Nous essayons de garder tout en date. Et donc, nos événements futures, on va avoir une soirée de programmation, essentiellement de la programmation en pair, en plus gros groupes, disons. Lundi prochain, à 19 heures. On va parler d'apprentissage automatique. Et puis, on va parler de meilleures pratiques de développement amphidop. Et puis, on va avoir Zebra Antiseptic, notre rencontre du mois de juin, essentiellement quatre semaines. Quatre semaines? Oui, quatre semaines. Et puis, ça va être notre dernière rencontre avant notre pause pendant l'été. On va prendre des vacances d'été. Et on cherche encore des présentateurs pour Zebra Antiseptic. Donc, n'hésitez pas à nous contacter si vous voulez présenter. Et puis, merci à notre partenaire, FGNR, qui héberge notre videoconférence pour le 5 à 7 ce soir. Et puis, je dois dire, je dois passer toute ma gratitude à Toriyama Sekien. Je m'excuse si j'ai mal prononcé le nom. L'illustrateur que fait, c'est magnifique illustration de Yokai vers le milieu du 18e siècle. Donc, merci beaucoup à notre partenaire, FGNR, qui est hosté notre virtual Happy Hour aujourd'hui. Et je veux exprimer ma plus sincère gratitude à Toriyama Sekien. Pardon si je n'ai mis le nom. C'est dans le nom de l'illustrateur qui a engrave ces illustrations de Yokai des années auparavant. Et cela étant dit, je vais l'aider Jules. Jules travaille en machine learning et est une des co-organisateurs de notre programme Evenings. Jules, je te passe la parole. Donc, oui, est-ce que je chère en ce moment ou c'est... C'est arrangé, oui. Oups, pourquoi? Ça fiche pas la bonne chose. C'est le bon temps de régler nos paramètres de partage. Ça, c'est la beauté de faire du live. On a l'occasion de régler des problèmes techniques en direct et de mettre nos présentations plus dynamiques. OK. On va recommencer ça. Ça devrait être correct. Super. Je te passe la scène au complet, Jules. Donc, une présentation qui est vraiment une introduction de base au machine learning. En fait, c'est un peu l'équivalent un peu plus magistral de l'atelier qu'on va faire la semaine prochaine. Donc, si vous voulez être un peu plus hands-on sur les choses, donc là, on va plus aller un peu plus de théorie, un petit peu plus de choses, mais la semaine prochaine, ça va être un atelier un peu hands-on, puis on va vous donner du temps pour faire un peu des exercices et un peu à faire le code par vous-même. C'est ça. Bon, à qui s'adresse la présentation? Bon, à des gens essentiellement qui ne connaissent rien au machine learning ou à apprentissage automatique et qui ont des connaissances de base en piton et qui connaissent un petit peu panda, surtout pour l'atelier, donc je dirais à l'atelier, donc en tirer le plus partie, donc vraiment vous pouvez venir si ça ne correspond pas à ce que vous êtes, mais essentiellement ça correspond beaucoup à des gens essentiellement qui ont des connaissances un peu de base en piton et qui connaissent un petit peu panda. Donc un peu, qu'est-ce que les AI versus le machine learning ou apprentissage automatique en français? Grosso modo, les définitions peuvent changer de d'une personne à une autre, mais en gros souvent on prédique les AI et l'intelligence artificielle c'est quelque chose qui va essentiellement ressembler à un comportement qui a l'air intelligent et une sous-branche de tout ça et ce qu'on appelle l'apprentissage machine ou machine learning l'apprentissage automatique ou machine learning qui essentiellement va faire des trucs qui vont ressembler des comportements intelligents mais qui vont être construits à partir de données à partir de laquelle le programme va apprendre à partir de ces données là. Donc apprendre à partir de ces données là, essentiellement c'est ce qu'on va appeler machine learning et essentiellement on parle aussi souvent de ces dernières années de beaucoup de deep learning ou apprentissage profond puis c'est une sous-branche du machine learning dans lequel on a certain type d'algorithme si je peux dire spécifique. Donc un peu de manière très générique qu'est-ce qu'on prédique pour d'UML on peut peut-être les classifier entre types d'algorithmes de types de machine learning donc les supervisés non supervisés puis en renforcement donc supervisés donc c'est essentiellement on dit à la machine voici une donnée c'est la réponse que tu devrais donner donc on supervise en disant voilà quelque chose c'est la réponse que tu devrais donner non supervisés c'est essentiellement on donne des données puis on dit plus ou moins à la machine quoi faire avec puis on va faire quelque chose avec ça peut être assez varié de différents types d'algorithmes mais on va prendre un exemple classique que serait de regrouper ou clusterer différents types de données ensemble par exemple des types de différents clients donc clusterer différents types de personnes puis renforcement c'est plutôt que dans le supervisé de dire qu'est-ce qu'il faut faire exactement c'est plus le carot ou le bâton donc essentiellement on fait juste dire c'est bien ou c'est pas bien à la fin de la tâche mais on ne dit pas exactement qu'est-ce qu'il y aurait de faire on fait juste dire oui ça a été bien ou ça a été mal renforcement c'est beaucoup utilisé en robotique ou avec des jeux vidéo mais disons que la majorité des algorithmes qui sont utilisés en pratique ça va être des algorithmes supervisés on peut dire la majorité des cas on peut servir à quoi faire l'apprentissage supervisé c'est essentiellement faire du lissage de courbes je pense que lissage de courbes c'est le mot mais exactement c'est de faire fêter une courbe sur nos données par exemple ici on a des points de température de l'électricité en fonction de la température puis on fait une ligne qui va fêter le mieux ça et donc l'algorithme de machine learning c'est de trouver cette ligne et ça fait en sorte que quand on va avoir de nouvelles données essentiellement on a la température là on va pouvoir dire ah ok c'est quelle valeur de l'électricité que ça devrait donner c'est la prédiction que fait l'algorithme donc dans ce cas là c'est prédire l'électricité consommée par exemple en fonction de la température donc là ici c'est une courbe qui est relativement simple une ligne, une droite en théorie ça peut être des courbes qui sont un peu plus compliquées par exemple ici on a les journées dans l'année et la température on va prédire la température en fonction des journées de l'année c'est un cycle saisonnier ça fait une courbe un peu cinésodiée et donc là c'est plus une ligne c'est peut-être moins bonne donc justement c'est à prendre il faudrait apprendre c'est plus une ligne qui va varier un peu de manière cinéouside donc c'est toujours à retrouver la meilleure courbe qui va bien décrire nos données par contre là on avait toujours une variable on pourrait avoir par exemple plus qu'avec deux variables la température et disons le vent ce serait quoi la consommation d'électricité donc on aurait X, Y qui serait l'équivalent de la température puis le vent puis Z qui serait la consommation d'électricité donc justement plutôt qu'une courbe, une ligne c'est comme une surface qu'on doit apprendre mais c'est encore le même principe c'est qu'on a juste plus mais encore une fois ce qu'on essaie de trouver c'est la meilleure parce que là c'est plus ligne mais surface qu'on doit pour décrire de nouvelles données et en pratique en général on va avoir plus que deux on va en avoir beaucoup mais c'est toujours encore un peu le même principe on va trouver une fonction qui va à partir des données qu'on lui donne prédire la bonne valeur le mieux possible donc par exemple pour prédire la consommation d'électricité on pourrait ça dépend de la température du vent, de l'humidité la journée de la semaine peut-être la superficie de la résidence le nombre d'électroménagers est-ce que la personne a une thermopombe parce qu'elle a une voiture électrique et ainsi de suite donc on peut avoir plusieurs variables et comme ça on essaie de trouver une fonction qui dépend de ces différentes variables pour prédire la consommation d'électricité par contre on parle souvent de machine learning par exemple aussi pour parler avec des images mais ça reste toujours le même principe par exemple on veut classifier une image parce que c'est un chat ou un chien dans ce cas là on a plusieurs variables le premier pixel c'est la variable 1 le deuxième pixel c'est c'est la deuxième variable le troisième pixel c'est la troisième variable mais bon chaque pixel va être une variable essentiellement on a une fonction qui va être une des pixels et qui va tourner 0 si c'est un chat et 1 si c'est un chien donc on essaie encore de trouver une fonction qui va bien fêter ça donc c'est encore toujours du curve fitting mais avec beaucoup de variables qui est le nombre de pixels mais c'est toujours un peu le même principe donc ensuite on peut toujours faire aussi de la classification de textes encore une fois c'est toujours un peu le même principe par exemple on dans ce cas là on va pouvoir dire est-ce qu'on veut une revue de film positive ou négative on peut transformer il faut transformer le texte en valeur numérique parce que c'est une fonction donc il y a plusieurs façons de le faire on pourrait transformer le texte un peu un truc global par exemple le texte qui est le le chat bas bah on pourrait dire qu'on compte le nombre de fois que chaque mot est là puis on assigne une rangée à chaque mot donc par exemple là ce serait le premier donc il y a 3 fois là donc on aurait 3 ça ce serait le deuxième puis il y a une fois puis d'or et le troisième donc il y a une fois donc le texte serait un vecteur qui serait 3 1 1 et on essaie de trouver une fonction qui dépend de ces 3 variables pour prédire est-ce que c'est une revue positive ou négative une fonction qui serait encore prédit 0 ou 1 on peut aussi essayer de traiter du texte comme une séquence donc dans ce cas là chaque mot est un vecteur puis on fait une séquence de vecteurs pour refaire comme input de la de la fonction dans ce cas le cas le show d'art on aurait le premier vecteur 1 0 0 encore une fois le même vecteur encore une fois le même vecteur et ensuite les deux autres vecteurs associés aux autres mots puis ces inputs là qu'on confide à la fonction qui devrait donner 0 ou 1 c'est positive ou négatif et donc encore une fois c'est du curve fitting c'est toujours un peu le même principe c'est juste une façon de le voir un peu différemment mais c'est toujours le même principe de base donc là on va faire un peu maintenant qu'on a vu un peu globalement ce qu'est le machine learning on va essayer de faire un peu regarder un exemple ça va être l'exemple qu'on va faire durant l'atelier la semaine prochaine donc on va pas aller dans le détail mais un peu on regarde un peu la même chose donc ça va être prédire la consommation d'électricité en fonction de l'entrepérateur externe donc c'est des données qui nous ont été partagées par un autre des personnes qui sont là pour les ateliers et donc c'est des données réelles d'Hydro-Québec sur sa consommation d'électricité et en fonction de la température externe donc on voit qu'effectivement il semble avoir une corrélation entre la consommation d'électricité et la température externe donc on voit que quand il fait froid je pense qu'on peut pas voir le non je sais pas quand il fait froid donc en hiver la consommation il y a un pic dans la consommation d'électricité qui est en bleu donc on voit que il y a une corrélation entre les deux donc si il y a une corrélation entre les deux probablement que c'est un monde indicateur que du machine learning peut être utilisé pour essayer de faire cette prédiction là donc c'est ce qu'on va faire on va utiliser Panda et Scikit Learn pour le faire donc importe les variables puis les données sont sous la forme de data frame qui bon ici on voit la consommation d'électricité et la température en fonction de la journée donc un peu peut-être première étape quand on a un problème de machine learning c'est de définir exactement ce qu'on veut faire peut-être qu'il y a même peut-être une étape un peu avant même des fois c'est peut-être si on a besoin de machine learning parce que c'est pas tout le temps le cas donc peut-être qu'il y a ça demandé est-ce qu'on a vraiment besoin de machine learning parce que si on a pas besoin des fois ça peut faire plus le sens de faire des solutions plus robustes parce que du machine learning des fois ça peut être disons moins robuste à des situations un peu hors de l'ordinaire donc si ça peut être résolu de manière sans du machine learning autant le faire sans de machine learning mais sinon comme première étape peut-être définir ce qu'on veut faire dans ce cas-là c'est prédire la consommation en fonction de la température donc dans ce cas-là c'est ça qu'on veut mais est-ce qu'on veut est-ce que la moyenne soit plus correcte ou est-ce qu'on veut qu'on soit souvent proche de la bonne valeur mais qu'on c'est pas si grave si dans ces situations exceptionnelles on prédit mal bon ça va dépendre de la situation c'est des questions qui sont bonnes à se poser ça peut avoir un impact des fois sur bon si vous nettoyez vos données ou quel type d'algorithme qui peut être peut-être plus sensible à certains types d'outre-et-lair donner un peu des avérantes ou même quel métri que vous voulez utiliser pour décider quel modèle est le mieux donc c'est des questions un peu assonnement d'être un petit peu donc Donc après, il faut regarder les données. Donc ici, on a nos données que le but, si on a dit, c'est de prédire la consommation d'électricité en fonction de la température. Donc on va dessiner ça dans un graphique et on voit qu'effectivement, on semble voir une corrélation effectivement entre les deux. Donc on voit que ça semble relativement linéaire quand la température est relativement basse et après, ça ressemble à devenir un plateau. Donc il y a différents trucs à regarder, peut-être. Est-ce qu'on voit des corrélations, est-ce qu'on voit des données aberrantes? Là, on voit qu'il y en a quelques-unes qui semblent un peu plus aberrantes. Est-ce que ces données-là aberrantes, c'est des cas qui risquent de jamais revenir ou c'est des trucs qui sont un peu, une fois de temps en temps, peuvent apparaître? Est-ce qu'il y a des régions qui n'ont pas de données? Dans notre cas, peut-être qu'on n'a pas de données en dessous de moins 30. Donc c'est peut-être ça demandé. Donc le modèle va peut-être avoir des difficultés à prédire dans ces situations-là. Donc puis regardez, est-ce qu'il y a d'autres choses inhabituelles dans les données? Là, on voit que peut-être qu'il y a peut-être plus de bruit au-dessus qu'en dessous de la ligne un peu, si je peux dire. Donc on voit que la distribution n'est pas symétrique en valeur de la consommation d'électricité. Pour une même température, on ressemble un peu plus allongé dans la distribution vers les autres valeurs. Donc le point, c'est de regarder un peu, voir est-ce qu'il y a des trucs-là. Ça va dépendre de chaque fois de la situation. Ça va être différent d'une fois à l'autre. Ensuite, on peut nettoyer les données. Bon, il va, des fois, avoir des données manquantes. On peut remplacer ça par la moyenne de la valeur. On peut remplacer par les valeurs proches. Par exemple, dans notre cas, on sait en fonction du temps, donc s'il y a une journée qui manque, on pourrait, par exemple, remplacer par la moyenne de la journée avant puis la journée d'après. On peut enlever la donnée, dépendant du cas. Donc, il y a différentes choses qu'on peut faire. S'il y a des erreurs dans les données, peut-être les corriger. Si vous êtes certain de ne pas faire une erreur non plus, mais des fois, il y a des données. Je pense qu'on peut voir que je ne sais pas. Il y a un 0 de plus qui a été rajouté ou je ne sais pas, peut avoir différentes erreurs possibles qui peuvent apparaître dans des données. Donc on peut les corriger. Des fois, il y a aussi des valeurs qui ne sont pas des erreurs, mais qui sont des valeurs extrêmes. Et dépendant de ce que vous voulez, des algorithmes que vous voulez utiliser, des fois, ça peut souvent valoir la peine d'enlever ces valeurs extrêmes et inhabituelles. Il n'y a pas une situation où il faut tout le temps faire la même chose et ça va tout le temps fonctionner avec du machine learning. Donc c'est pour ça qu'il faut toujours regarder les données, regarder la situation et se demander un peu ce qui fait du sens. Des fois aussi, peut-être créer de nouvelles variables à partir des choses qu'on a. Par exemple dans notre corps, on a les dates. Donc peut-être qu'on aurait pu créer une nouvelle variable qui regarde est-ce que c'est la semaine ou la fin de semaine. Parce que peut-être que la consommation d'électricité change entre une journée de semaine et une journée de fin de semaine. Parce que peut-être que le monde peut être en temps de COVID, mais disons en temps de pas COVID. Peut-être que le monde ne sont pas à la maison durant la semaine, mais ils sont à la maison durant la fin de semaine. Et donc peut-être que la consommation d'électricité pour le chauffage est beaucoup plus élevée durant la fin de semaine par exemple. Des fois aussi, il va y avoir plusieurs notations pour une même chose dans vos données. Par exemple, si on décrit la ville, peut-être que des fois, ça va être noté Montréal, Mtl, Mtl en minuscule, Montréal, Mnt. Il y a différentes façons que peut-être que ça va être écrit. Sur les cas, ça représente la même chose. Et donc on veut uniformiser ça. Donc il faudrait nettoyer ça pour mettre ça de manière uniforme. Ensuite, on a souvent des données... Des différents types de données. Des données numériques, par exemple la température, c'est d'une valeur. C'est un nombre. Il faut des données aussi un peu ordonnales. Par exemple, le catégorie d'âge, enfant, adulte, senior. Donc dans ce cas-là, ça peut être vu comme une catégorie ou ça peut être aussi représenté par un chiffre qu'il y a un ordre. Parce qu'essentiellement, il y a un ordre entre enfant, adulte et senior. Bon, dépendant du... Toujours du problème, je dirais que des fois, ça fait du sens ou pas pour une même chose d'être ordonnée ou pas. Donc des fois, ça peut être juste une catégorie. Par exemple, animal, châche, chien, girafe, souris. Il n'y a pas nécessairement un ordre, à moins que juste là, on recante, dépendant de la quantité de nourriture qui peut être mangée. Puis ça va dépendre beaucoup de la grosseur de l'animal. Donc là, l'ordre fait peut-être un sens. Mais sinon, peut-être pour une image, par exemple, classer une image de quoi, probablement qu'il n'y a pas d'ordre entre châche, chien, girafe et souris. Et donc généralement, la façon qu'on va décrire ça, c'est faire ce qu'on appelle du one-hot encoding. Donc c'est de dire un vecteur qui va être un 0 ou 1 dépendant de la catégorie. Et un seul élément va être non-nul associé à la chose. Donc, un châche serait, par exemple, vecteur 1, 0, 0. Chien serait 0, 1, 0. Et girafe serait 0, 0, 1. Et Sack et Learn a une fonctionnalité qui permet de le faire directement. Donc on prend un datafin, par exemple, ici qu'il y a une colonne avec animaux dans laquelle on a mis châche et chien. On crée un objet. On va instantier un objet. Ça va être souvent comme ça en Sack et Learn. Donc, essentiellement, on instantie un objet qui, dans ce cas-là, est un one-hot encoder qui va encoder la chose. Et ensuite, on va faire ce qu'on appelle un fit. Il y a fit et fit transform. Fit, ça permet d'entraîner, si je peux dire. Dans ce cas-là, ça apprend à transformer ça et chien en vecteur, one-hot encoding. Et le transform, ça permet de faire la transformation une fois que ça a pris la transformation. Et le fit underscore transform, essentiellement, ça va faire l'entraînement et la transformation. Ça va nous retourner la transformation aussi en vecteur. Qu'on voit ici le 1-0 pour chat. Encore 1-0 parce que c'est encore chat dans la deuxième ligne. Et chien dans la troisième ligne, donc c'est 0-1. Je ne sais pas si vous voyez, mais on a mis tout dense. Essentiellement, c'est parce que le résultat est une matrice sparse. Essentiellement, on définissait juste les éléments qui sont non nulles. Parce que ça peut être, s'il y aurait beaucoup de classes par exemple et beaucoup de lignes, ça fait beaucoup de sparse pour beaucoup d'informations. Donc ça peut valoir la peine de juste l'écrire sous Sparse plutôt que tout écrire les 0 aussi. Parce que justement, comme c'est 1-3 encoding, si on a beaucoup de classes, la plupart des valeurs sont 0. Il y a juste quelques valeurs qui sont non nulles. Ce n'est pas ça vaut la peine de l'avoir juste en sparse. Généralement, pour des données avec qu'on ne va pas des algorithmes de machine learning, souvent on va vouloir centrer et normaliser les données. Je ne dirais pas que ça fonctionne toujours toujours, mais je dirais que dans une très grande majorité des cas faites là. Donc on va vouloir centrer autour de 0 et normaliser autour de 1 et on a des fonctionnalités en 5-it-learn qui permettent déjà de le faire. Par exemple, le standard scatter, ça c'est une manière de faire ce scaling-là, mais il y a plus qu'une fonctionnalité qui permet de le faire. Ça fonctionne de la même manière qu'on a vu pour le 1-hot encoding, donc certainement on instantie un objet, scatter, à partir de la classe standard scatter, on instantie l'objet et on fait un fit transform sur nos données qu'on avait, qu'on voyait, qu'on a la consommation d'électricité et de la température qu'on voit qui ne semble pas être centré autour de 0 et ni normalisé autour de 1. Puis une fois qu'on a fait de la transformation, on voit que c'est du s'il-à-dire, mais ça ressemble à quelque chose qui semble à plus de chance d'être centré autour de 0 et de normalisé autour de 1. Donc on voit que c'est plus les mêmes valeurs, donc ça fait cette transformation-là de ce qui est les données autour de 0 et normalisé autour de 1. Aussi, généralement quand on va faire un projet de machine learning, généralement on va séparer souvent nos données, disons en 2 ou 3 parties. Donc on a un ensemble d'entraînement qui essentiellement c'est une des données sur lesquelles la machine va apprendre. La grève va apprendre. Ensuite on a un ensemble de validations qui permet de choisir un peu les meilleures paramètres qu'on utilise pour choisir les différents paramètres du modèle, par exemple. Donc essentiellement on utilise le modèle qui est le meilleur dans cet ensemble-là pour choisir lesquels a été le meilleur. Puis on a un dernier test qui permet juste de s'assurer que probablement que ça fonctionne bien sur en général. Il y aura des trucs qui n'ont pas vu encore et donc d'une certaine manière, ça généralise bien. Puis on a des fonctions en Scikit-learn qui nous permet de faire ça simplement. Donc essentiellement train test split, donc on fait train split split, on met nos données à l'intérieur, ça nous retourne de split qui sont, dans ce cas-là on va les appeler train and test pour essentiellement séparer nos données en deux. Et donc si on veut le faire en trois, on le fait deux fois. Donc essentiellement l'ensemble de tests, on disait que ça sert à vérifier que ça généralise. Donc on parle un peu du concept sur sous-apprentissage ou underfitting et sur-apprentissage overfitting. Donc le sous-apprentissage d'une certaine manière c'est dit qu'on n'a pas assez de liberté dans notre modèle pour apprendre à partir des données qu'il a. Donc on voit un peu l'exemple, un peu ici. On a des données qui semblent un peu plus signaux d'al et on fait essayer de fêter une ligne qui est la ligne bleue qui est le modèle, qui est dans ce cas-là une récréation linéaire et on voit que essentiellement ça ne colle pas relativement bien aux données parce qu'effectivement il y a plus de variations on a pas assez de paramètres pour pouvoir bien décrire cette variation-là juste avec une ligne droite. Dans l'autre cas, donc dans ce cas-là c'est du sous-apprentissage. Dans le cas opposé donc plutôt que décrire ça avec une récréation linéaire on décrit ça avec un peu le nombre de degré 15 ici. Donc essentiellement on voit que sur nos données qui sont les points bleus on a très peu d'erreur en fait, les données collent relativement bien sur nos données qu'on lui donne mais il va on voit que le modèle fait des trucs un peu bizarres pour justement être capable de bien coller les données qu'il a reçues il fait un peu des trucs un peu bizarres donc on voit que pour des nouvelles données qui seraient un peu qu'on lui a pas donné il va pas très bien faire parce qu'essentiellement il a bien collé aux données qu'on lui a donné mais il a juste trop bien fait ça et ça donne des résultats un peu aberrants et ça va mal généraliser donc c'est pour ça qu'on fait l'ensemble de test et donc c'est pour tester un peu un overfitting de cette chose-là et donc ce qu'on veut en théorie c'est un peu qu'il y a un peu dans le cas au milieu donc on voit que la ligne bleue puis la ligne rouge qui est le orange orange semble coller très proche de l'autre puis on voit que pour des nouvelles données l'erreur va être relativement faible donc c'est le cas optimal qu'on veut donc comment on fait de l'entraînement avec Cycatelearn en fait c'est relativement similaire on avait vu un peu précédemment ici je donne c'est K&N Regressor mais il y a plusieurs types de modèles en premier on va l'instantier un peu comme on a fait puis on fait le point fit comme on faisait un peu précédemment avant on faisait fit transform mais ici c'est juste le fit on donne le en premier le x qui est essentiellement les données que le modèle va utiliser pour faire sa prédiction et ce qu'il veut prédire dans ce cas-ci c'est la consommation d'électricité puis on a juste une variable ici c'est la température donc on donne la température et la consommation d'électricité et on fait juste le point fit et ça fait l'entraînement de machine learning puis maintenant qu'on a fait ça cet entraînement-là on a juste à faire point predict le un nouveau x on va voir là on donne la température et ça va nous prédire quel devrait être en fonction de ce modèle-là la la consommation d'électricité en fonction de la température bon après on a utilisé un modèle mais bon il y a plusieurs modèles en circuit learn on connaît un super vector machine random forest puis il y a des librairies autres que circuit learn qui sont à peu près la même je peux dire interface de essentiellement un peu le point fit predict des trucs comme ça par exemple HGBoost qui est une librairie qui est beaucoup utilisée on va avoir la même interface et on va pouvoir être utiliser avec d'autres outils de la librairie circuit learn de manière assez qu'à cause de l'interface c'est à peu près de la même manière donc souvent pour des données tabulaires je dirais ça se ressemble souvent un peu l'interface pour faire ça avec du machine learning en piton une fois qu'on a fait ça on peut regarder les résultats on peut regarder un peu visuellement dans ce cas là ici on a on peut regarder directement les valeurs en fonction de la température puis les résultats réels vous regardez à quoi ça ressemble on voit que ça ressemble à peu près aux données puis des fois on veut avoir pas juste visuellement mais avoir un chiffre numérique pour évaluer un peu à quel point l'algorithme est bon essentiellement il y a différents types de métriques qui sont présent dans circuit learn la moyenne du carré de l'erreur il y a d'autres métriques que vous pouvez utiliser aussi ce sont des métriques pour prédire une valeur numérique il y a d'autres métriques qui peuvent être utilisés pour de la classification pour les gens qui ne connaissent pas le classification report ça vous donne un report qui est un peu joli pour détruire des classifications aussi circuit learn vous pouvez aussi se créer ce qu'on appelle des pipeline donc c'est une série d'opérations qui sont faites une après l'autre par exemple on avait dit précédemment qu'il faut souvent essayer de faire escaler nos données les normaliser autour de zéro puis avoir les normaliser à peu près à un donc il faut faire ça sur nos données avant de les mettre au modèle et donc on peut faire ça dans une pipeline donc on fait une série d'opérations donc dans ce cas-ci on fait de standard scatter puis après on donne le modèle puis on crée un objet comme ça un pipe c'est une pipeline et cette pipeline vous faites un peu la même chose vous pouvez faire un point fit sur vos nouvelles données puis après il faut que c'est entraîné faire le prédic à la fois les opérations qui sont faites avant le modèle et après le modèle ensuite qu'est-ce qu'on peut faire donc on peut faire de la recherche du paramètre ici on fait un grid search on peut prendre un peu toutes les valeurs possibles mais random search peut être souvent aussi un très bon façon efficace de chercher les meilleurs paramètres donc on donne le modèle on donne les possibilités et les valeurs dans ce cas-là du modèle dans ce cas-là c'est un nombre de voisins pour le modèle essentiellement c'est un paramètre du modèle puis on lui dit regarde pour les valeurs de 2, 3, 4, 5, 6 il regarde lequel va donner le meilleur résultat tu fais le point fit ça va te donner un peu pourquoi j'ai fait 2 fois euh oui ok oui euh non oui ben c'est ça ça euh et ensuite on peut faire ça pour les paramètres mais on peut faire ça aussi avec des modèles donc essentiellement on a le pipeline on revient donc on a notre pipeline et essentiellement on peut mettre comme paramètre du modèle d'utiliser soit un modèle qu'un NN ou un random forest puis faire un grid search regarde lequel des modèles va être le mieux donc quand vous faites un projet de machine learning bon premièrement regardez est-ce que ça peut être classique qui est pas du ML qui peut le faire mais si disons c'est du ML généralement ça peut être différent c'est pas une règle absolue mais je dirais qu'en général si c'est des données tabulaires généralement restés sur du machine learning classique ça quitte learning du boost ou autre un peu des trucs un peu plus classiques si c'est du mage du texte ou des trucs un peu comme ça d'apprentissage profond il y a des libraires comme keras, pytorch ou tensorflow je dirais commencer plus par ça je peux dire généralement ça va être souvent ça qui va être mieux sinon si vous avez d'autres données un peu ça peut dépendre je dirais peut-être d'autres libraires un peu plus général quand vous voulez faire du ML en pyton non-py qui est une librairie pour des valeurs numériques des vecteurs pendant c'est pour des données sous forme de tableau stat model c'est plus pour des trucs un peu plus statistiques il y a un peu de machine learning des modèles de base qui sont là aussi matplotlib, pcborne c'est des trucs de réalisation pour regarder vos données scipy c'est plus pour des fonctions plus scientifiques open cv c'est plus pour des images ça a des trucs avec des images nltk c'est une librairie de trucs un peu plus classiques un nlp pour traiter du texte jensim c'est utilisé pour un peu soit du topic modeling ou du word embedding un peu du clustering certains textes ou un peu faire des vecteurs des mots ou ou des textes spaces ça peut être utilisé pour faire un peu de preprocessing de texte de beautiful soup pour faire du web scraping bon open 3d pour un peu comme open cv mais pour des choses en 3d pour des trucs plus machine learning bansaketlearn c'est un classique éjibou c'est un autre qui est beaucoup utilisé pour dans le deep learning je dirais les gros c'est tensorflow et pytorch keras c'est comme une sous librairie de tensorflow qui est en terme de facilité de l'utilisation keras c'est peut-être la plus facile après pytorch puis en dernier peut-être tensorflow mais je dirais que peut-être du point de vue de de mise en production généralement je pense que tensorflow est mieux mais pytorch est généralement plus facile d'utilisation et je dirais dans quelque soit la grosse librairie je peux dire de deep learning que vous utilisez tensorflow pytorch il y a des sous librairies dans des sous domaines qui existent par exemple pytorgemetrics ça va être pour des données qui vont être de type des graphs donc si vous faites du machine learning sur des graphs vous pouvez utiliser pytorgemetrics mais il existe plein de sous librairies comme ça pour des domaines très spécifiques hugging face c'est une librairie qui a beaucoup de modèles un peu préfaites en nlp non pour du texte donc mlflow c'est un peu comme sur d'outils de gestion d'expérience en machine learning pour regarder vos différents expériences avec vos différents les paramètres, les résultats lime-chap c'est si vous voulez un peu avoir un peu d'explication d'intuition sur certaines choses comment fonctionne un peu votre modèle parce que les modèles de machine learning c'est beaucoup des black box donc essentiellement c'est des des librairies avec des algoritmes qui vont aider à donner une intuition un peu pour quoi vos modèles font certaines choses et donc je pense que ça conclut ma présentation merci beaucoup Jules pour nous avoir ouvert un hublot vers cet océan de possibilité on a le temps pour quelques questions donc si vous voulez poser vos questions vous pouvez les mettre dans les commentaires sur Youtube ou les poser sur Slack et puis je vais me faire un plaisir de les relayer Jules, j'ai une question une de mes propres questions pendant qu'on attend de voir c'est l'audience on peut avoir des questions donc mentionnez qu'il y a des cas où on peut faire une résolution peut-être plus robuste sans utiliser l'apprentissage automatique est-ce que tu aurais des exemples de cas où ça serait plus facile à visualiser ou l'apprentissage automatique serait peut-être moins robuste disons que par exemple je donne un exemple des logs vous avez des logs les règles des logs ça ne change pas c'est vraiment tout le temps la même chose peut-être que juste une régex ça va mieux fonctionner qu'un apprentissage machine donc ça peut dépendre mais ça pourrait être un cas ou est-ce que ça OK, excellent je vais essayer de résumer ce que tu viens de dire donc quand on a donné structure et que la structure est bien documentée on est peut-être mieux d'aller extraire les éléments de la structure de façon formelle plutôt que laisser l'apprentissage automatique la détecter ça peut être un cas ou sinon je ne sais pas peut-être que je vais essayer de prédire je ne sais pas moi un truc physique mais tu sais que les lois de la physique sont là donc pourquoi c'est essayé de prédire je ne sais pas moi comment va à quelle distance va être lancé un objet à partir d'une catapulte tu sais que les lois de la physique c'est plus facile de calculer l'équation probablement que il y ait du vent à l'apprentissage mais donc dans le cas simple ça devrait être plus robuste surtout si tu as vraiment trainé si tu as trainé des données par exemple dans un cas ou est-ce qu'on a on a juste envoyé des trucs pas très loin et on l'a envoyé beaucoup plus loin le modèle n'a jamais vu les données c'est clair qu'il ne va pas réussir à bien dépendant du modèle mais en général probablement qu'il ne va pas être capable de bien généraliser sur des trucs que je n'ai jamais vu et donc le modèle physique ferait plus de sens je dirais c'est quand des règles un peu stricts qu'on peut être connues si si on est capable de faire quelque chose avec généralement une règle facile pas besoin de faire du machine learning le point c'est que si on a plus en plus compliqué si on se dit je vais faire une règle pour décrire qu'est-ce qu'il y a un chat dans une image ou un chien ça devient compliqué il y a plein d'exceptions ça devient l'eau c'est peut-être le temps pour mettre du machine learning parce qu'il y a trop de situations que tu peux imaginer que ça devient l'eau c'est pas possible pour un être humain excellent on a une question de Jean-Philippe Brochu qui nous demande quelles sont les erreurs les plus fréquentes commises lors de l'entraînement de modèle en apprentissage automatique donc je dirais que peut-être des trucs pas nettoyer les données peut-être du data leak que je n'ai pas parlé du data leak c'est nécessairement ou fuite de données mais on va avoir nos données on se séparait nos données en trois parties souvent on peut avoir des données quand on les sépare il peut avoir un double on dans les données ça fait en sorte que le temps test on les verra parce que dans le fond c'est toutes des données par exemple tout a été dans ta base de données tout a été doublé quand tu les sépare en test et en valide tout ce qui est dans le test il était déjà aussi dans l'entraînement donc ton test c'est plus vraiment un vrai test donc essentiellement tu as eu ça ou tu peux avoir d'autres variables donc le leak est un peu des trucs par exemple dans le futur donc essentiellement je sais pas moi je sais de penser un cas mais donc j'en ai pas en tête mais donc tu pourras avoir quelque chose une information qui essentiellement était que tu quand tu regardes les données mais quand tu vas avoir dans la réalité tu devrais pas l'avoir avant donc donc essentiellement ça peut être un genre d'erreur oui c'est ce qui me vient en tête super merci beaucoup Jules on invite tous les participants à nous rejoindre la semaine prochaine pour faire du travail plus concret sur l'apprentissage automatique et puis sur ça je vais arrêter la période de questions parce que je veux vraiment passer à notre autre présentateur qui est Thierry qui nous joint de France et donc Thierry qui est un actuaire un statisticien et un programmeur en apprentissage automatique qui va nous parler de notre volet sur l'apprentissage automatique Thierry je te passe la parole et puis je vais lui ajouter au stream tu partages le jeu dans l'écran mais je t'invite à afficher ton diaporama et voici je pense que tu as encore muté par contre Thierry là c'est bon c'est très bon d'accord ok ça marche alors oui bonjour je suis Thierry Muziki je suis ingénieur et actuaire on peut dire aussi data scientist scientifique des données comme on l'a dit je suis dans l'est de la France donc on a six heures de décalage mais en tout cas merci de me recevoir ça fait vraiment plaisir aujourd'hui je vais parler d'apprentissage statistique bon c'est un peu des mêmes sujets que ceux qui ont été évoqués précédemment par Jules moi je vais parler en particulier d'outils que j'ai développé dans une suite qui s'appelle Tectonic donc plus particulièrement je vais présenter un paquet qui s'appelle Quarrier c'est un langage de requête sur DataFrames ensuite je vais parler de ML Source c'est un modèle qui enfin c'est un paquet qui permet de faire de l'apprentissage statistique GPOP nous permet de choisir les hyperparamètres je vais parler du paquet qui s'appelle Taylor qui me permet de faire une sorte d'explication de modèle alors pour commencer on a pas mal parlé déjà d'apprentissage statistique de tout ce qui est machine learning bon je vais quand même faire une petite introduction sur un exemple d'apprentissage super avisé là je me place dans le cadre par exemple du dépistage du cancer du sang donc là à gauche on considère un certain nombre de patients il y a N patients par exemple qui ont jacune réalisé mammographie de leur tumeur et ensuite à partir de la mammographie on peut déterminer des caractéristiques de la tumeur qui sont indiqués au milieu par exemple le périmètre smoothness, symmetry etc. et à partir de ces caractéristiques là le professionnel de la santé peut dire est ce que ce tumeur est maligne ou est ce qu'elle est béni donc en gros l'idée d'un modèle d'apprentissage statistique c'est d'apprendre la relation entre ce label et les différentes caractéristiques de la tumeur alors ensuite on va parler de tectonique alors qu'est ce que c'est tectonique il y a une suite d'outils que j'ai développé en piton et en air pour faire de l'apprentissage statistique je dis toujours statistique ça peut être l'apprentissage automatique c'est la même chose en gros donc ici j'ai mis des liens si vous voulez retrouver tectonique sur github c'est possible via ce lien après il y a un lien vers la documentation j'ai un blog aussi où je parle fréquemment des modèles que j'ai développé et bien sûr pour le request les contributions sont bienvenues alors dans tectonique il y a plusieurs outils des packages en piton des packages en air je vais parler spécifiquement des packages en piton donc le premier package c'est le querrier c'est en gros un langage du requête pour les DataFrames Panda ensuite MADSOS j'ai voulu faire un package assez généraliste qui contient des fonctions d'apprentissage statistique et donc comme on a vu tout à l'heure GPOP c'est un package qui permet de déterminer les hyperparamètres des modèles d'apprentissage statistique et enfin de Teller c'est un package qui permet d'expliquer les décisions d'un modèle d'apprentissage statistique enfin expliquer d'une certaine manière parce qu'il y a plusieurs façons d'expliquer ces modèles sinon par ailleurs il y a un notebook que vous pouvez consulter bon le lien il est un peu long c'est un peu dommage mais si vous avez le temps de le copier ça pourrait être intéressant pour ceux qui veulent suivre en même temps attention à pas l'exécuter en entier parce que sinon il va passer pas mal de temps sur la partie calibration du modèle détermination des hyperparamètres donc voilà alors là j'importe les packages dont j'ai eu besoin pour la présentation bon en général c'est que des packages qui sont bien connues comme un numpy ma plotlib etc et puis en dessous ici ce sont des packages qui appartiennent à Tectonic dont on vient de parler donc de manière générale avant de commencer à faire une analyse statistique de faire de la modélisation statistique on commence par une analyse exploratoire de graph des agrégations de données etc moi je vais pas faire de graph je vais parler du langage de requêtes pour les data frames je précise quand même que de QueryA c'est un travail en cours pour l'instant j'ai testé uniquement sur macOS et Linux mais vous pouvez déjà les essayer donc le QueryA c'est un langage si il y a des personnes qui ont déjà utilisé des player sous R je pense qu'elles vont reconnaître certains verbes qui sont utilisés ici donc le QueryA il contient une dizaine de verbes le premier c'est concat qui permet de concaterner de data frames ensuite on peut faire d'élites pour supprimer des lits dans une data frame on peut supprimer des colonnes aussi on peut faire appliquer des filtres sur les lignes du data frame on peut faire des jointures sélectionner des colonnes ensuite on peut obtenir des agrégats de données sur la base d'un groupement de certaines colonnes on peut ah pardon ensuite on peut mettre à jour des colonnes aussi et à la fin on peut appliquer carrément une requête SQL un premier alors là j'ai pris un exemple avec les données de cancer du sein issu du package que j'importe ici et quand je fais print de la variable destre en fait on peut avoir une description de toutes les variables c'est un jeu de données qui est assez petit qui permet de tester des modèles qui n'est pas très compliqué en fait mais qui permet de faire des bons tests si les tests ne passent déjà pas sur ce jeu de données c'est pas la peine d'aller plus loin ça ne marche pas c'est un jeu de données avec 569 lignes ou chacune des lignes correspond à un patient et 30 variables explicatives et les variables explicatives c'est les caractéristiques des 569 tumeurs dont on a parlé tout à l'heure alors je commence par créer ici un data frame dont les colon auront un nom comment on peut dire ça joint parce qu'en gros il y a un espace dans les noms des colonnes du jeu de données initiales et ici je fais un join pour ajouter un underscore dans le nom des colonnes et comme ça il est plus facile à utiliser pour le courrier donc une fois que j'ai fabriqué ce data frame je peux faire appliquer des requêtes dessus là par exemple je fais un select et je sélectionne 5 variables et je peux limiter par exemple le nombre de données de sortie à 4 donc ça pourrait d'un point de quoi ça pourrait être 10 ça pourrait être 15 etc et quand je mets random égal à trou ça veut dire qu'il me prend des données en gros au hasard il me prend 4 données au hasard donc voilà les résultats de la requête sont dans le notebook dont j'ai parlé tout à l'heure ensuite on peut faire un filtre sur le data frame donc ici par exemple on fait un filtre sur target égal à 1 target c'est la variable qui dit est-ce que la tumeur est benigne ou est-ce que c'est une tumeur maligne ensuite la variable mine radius on peut regarder ce que ça donne de filtrer pour les valeurs qui sont supérieures à 10 et donc après on peut faire des choses plus compliquées comme par exemple ici on peut faire une chaîne de différentes opérations comme ici en l'occurrence je fais un select je fais un summarize c'est pour ceux qui sont familiers avec SQL c'est comme un group by c'est comme si on faisait des moyennes de variables groupées par target ou il contient des 0 et des 1 et c'est pour dire est-ce que c'est le cancer est benigne la tumeur est maligne ou benigne alors une autre partie qu'on a évoqué tout à l'heure c'est le choix des paramètres des modèles parce que les modèles d'apprentissage statistiques ont souvent pas mal de paramètres qui peuvent être soit des degrés de liberté soit des paramètres de régularisation en gros l'idée c'est que plus on a de degrés de liberté plus qu'on risque de faire du surapprentissage et moi on en a plus on peut faire du sousapprentissage donc c'est ce qui est présenté ici dans les deux graphiques qui sont issus du site stateline.com en gros sur la gauche on a 3 modèles différents la ligne orange, la ligne verte et la ligne bleue en gros le modèle en orange c'est un modèle linéaire tout simplement ensuite on a des modèles de splines pour la ligne bleue mais la ligne verte c'est des modèles de splines avec plus ou moins des degrés de liberté donc comme on a vu tout à l'heure où on a parlé de surapprentissage c'est ce qui est illustré dans la partie droite du du graphique en gros on voit que le modèle qui est le plus flexible qui a le plus de degrés de liberté a des mauvaises performances des données qui n'a pas encore rencontré pourtant on pourrait se dire que c'est mieux mais en fait non pas du tout et le modèle linéaire il n'a pas de bonne performance parce qu'en fait il n'a pas assez de degrés de liberté pour expliquer le phénomène donc c'est un graphique que j'aime bien présenter pour parler de surapprentissage et sousapprentissage donc en gros comment on fait pour calibrer les hyperparamètres et éviter le surapprentissage en fait on fait une validation croisée l'idée en gros c'est de prendre 80% à peu près des données 75% des données et donc on a successivement un ensemble d'apprentissage et un ensemble de tests comme on vous voit là par exemple ici si on a une validation croisée avec 4 je sais pas comment dire en français avec 4 parties en gros donc on a juste le modèle sur la partie bleue et on le teste ensuite sur la partie orange donc on peut répéter ça plusieurs fois et c'est ce que je vais illustrer ici sur les données de cancer à du sein en gros je sépare mes données en 80-20 donc je prends 80% de mes données pour faire de la validation croisée et 20% le restant pour tester mon modèle pour voir s'il arrive à généraliser à des choses qui n'a pas encore rencontré donc bon tout ce code là se trouve dans le notebook que vous pourrez consulter tout à l'heure ou bien maintenant en gros j'utilise un modèle d'apprentissage qui s'appelle LS Boost qui est implémenté dans le package ML Source et ici ensuite je fais une validation croisée à 5 splits que je répète 3 fois et enfin je regarde la précision de mon modèle et quand je fais cette validation croisée il faut noter que en fait les estimateurs que j'ai développés ils sont compatibles avec toutes les fonctions de scikit-learn on peut les mettre dans des pipeline on peut appliquer crossval score comme on le fait ici qui est une fonction de scikit-learn mais j'ai fait que les modèles ils éritent des classes donc ça c'est pas mal et en gros ce qu'on fait c'est une optimisation baillisienne pour trouver les hyperparamètres du modèle en gros ce qu'on appelle optimisation baillisienne c'est l'idée en gros d'ajuster un modèle qui s'appelle processus gaussien au point d'évaluation de la fonction objectif en gros c'est la fonction qu'on cherche à minimiser qui est indiquée ici en pointier donc on a juste différents points de la fonction en processus gaussien et ensuite on utilise la distribution des prédictions du processus gaussien pour déterminer quel est le prochain point à évaluer ici comme on voit il y a t égale 2, t égale 3, t égale à 4 et à chaque étape en fonction de cette fonction là u, fonction d'acquisition où elle atteint son maximum ça nous dit en fait à quel endroit on va évaluer le prochain point de la fonction pareil ici quand la fonction d'acquisition est grande ça nous dit à peu près à quel point il faut évaluer il faut évaluer notre processus gaussien en gros ça permet d'obtenir les résultats indiqués ici que vous retrouverez dans le notebook avec une précision de 95% alors ici ensuite on utilise les paramètres qui ont été trouvés ici pour ajuster le lsboost ensemble d'apprentissage ça c'est ce qu'on fait ici ça fait un peu chargé mais vous aurez le temps de revoir dans le notebook et en gros quand on essaye d'obtenir le score du modèle sur des données qui n'ont pas encore été rencontrées les 20% restant on obtient une précision de 98% ce qui est plutôt satisfaisant pour le 95% avant et donc une fois que le modèle est calibré d'idée c'est de dire on veut essayer d'expliquer les décisions en général il y a ce graphique qui est présenté qui permet de dire qu'on cherche un compromis entre la flexibilité et l'interprétabilité il y a des modèles qui sont très interprétables mais malheureusement ils ne sont pas très flexibles comme les modèles linéaires par exemple et à l'inverse il y a des modèles qui ont une très grande flexibilité comme les modèles de bagging ou les modèles de boosting dont on a parlé tout à l'heure XGBoost mais qui sont difficilement interprétables qui sont en général appelés des boîtes noires donc en gros on parle en général de trouver ce compromis là mais comment on ne voudrait pas sacrifier des modèles qui ont une grande précision on essaye de trouver un compromis qui marche bien pour les deux alors comment marche le tailor le paquet du tailor en gros c'est basé sur des approximations de dérivée j'ai mis une petite formule ici d'idée en gros c'est que X c'est une variable explicative par exemple ça peut être le périmètre de la tumeur et donc on fait une petite augmentation de la valeur du périmètre de la tumeur on fait une petite diminution aussi et on divise par les deux H ça dit en fait comment est-ce que le modèle se comporte quand on est une augmentation du périmètre de la tumeur c'est un peu ça l'idée du tailor et donc ici je l'applique enfin j'applique le tailor à l'estimateur qui a été trouvé précédemment qui est estimateur breast cancer et je lui précise bien qu'il faut prendre la classe égale 1 qui correspond à la probabilité d'avoir une tumeur ensuite j'applique cet explainer à des valeurs qui n'ont pas encore été vues par mon modèle qui sont X test et Y test et donc à partir de ça on peut voir les effets moyens marginaux de chacune des variables explicatives sur la probabilité d'avoir une tumeur bénie ou pas après j'ai un autre graphique qui fait la même chose mais qui présente l'hétérogénéité des effets donc là en gros on a un effet moyen un effet moyen de chacune des variables et ici on a la distribution des effets distribution des effets bon évidemment il faudrait un médecin interpréter tout ça donc c'est quand même c'est quand même mieux et enfin donc on peut avoir une aggregation de ces résultats en appliquant le summary donc on peut avoir les effets moyens en même temps que la distribution des effets pour chacune des variables voilà donc si vous avez des questions vous pouvez les poser merci pour Thierry et donc une fois j'invite tous les participants à poser leur question soit dans les commentaires sur Youtube ou sur Slack et puis je vais les relayer à Thierry de Haut-de-voix Thierry j'ai une question une de mes propres questions celle de nos participants donc ça prend combien de données pour avoir de l'apprentissage statistique qui commence à faire des bonnes prédictions je comprends que c'est un peu vague comme question peut-être que tu peux nous donner des exemples donc si j'ai comme là tu avais un jeu d'environ 500 569 excellent donc puis ça arrive à avoir des prédictions assez intéressantes si on avait 100 participants dans cette étude est-ce qu'on aurait des prédictions plausible en fonction du nombre de participants non je ne pense pas qu'on aurait des résultats différents je ne pense pas qu'on aurait oui enfin après je ne pense pas que ça dépend de la taille des données en fait je pense que on aurait les mêmes résultats si c'était 100 personnes ou 500 mais il est animal ou on commence à avoir des... ou on commence à prédire ouais non c'est vrai que c'est toujours mieux d'avoir plus de données c'est sûr que c'est toujours mieux d'avoir plus de données ça y a pas photo mais après définir un seuil ça je dirais que c'est pas évident du tout on peut pas en fait définir un seuil à partir duquel ça marchera mieux quoi on peut évaluer son assiette de données avec l'entraînement croisé comme tu l'as présenté donc on voit si les prédictions s'y tiennent ah bien sûr oui de ce test là on peut le faire après je ne sais pas si on peut le généraliser mais oui on peut penser à faire quelque chose comme ça regardez s'il y a en fonction de la taille on a des améliorations des performances, des modèles ça peut se faire effectivement super j'ai vite encore une fois nous participer à poser des questions je ne vous gêne pas soit dans les commentaires sur Youtube ou sur Slack et puis je vais les relier de vive voix donc te parler un petit peu Thierry de overfitting comment on peut détecter si on fait de l'overfitting est-ce qu'on va le voir dans l'entraînement croisé ou est-ce que c'est quelque chose oui ça peut se voir quand il y a une grande différence entre l'erreur de validation croisé et puis d'erreurs suivent des nouvelles données parfois il y a un très grand écart c'est-à-dire par exemple en validation croisé je peux avoir du 99 ou 100 et après celui des données que j'ai jamais rencontré je ne sais pas ça tombe à 90 par exemple oui quand il y a des écarts comme ça c'est là qu'il faut faire attention et là pour le coup on peut commencer à rajouter les données par exemple si on en a oui c'est une des façons de repérer si il y a du surapprentissage super on n'a toujours pas de questions donc j'y vais avec l'assomption c'est pas l'assomption j'oublie toujours le terme l'hypothèse j'y vais en présumant que la présentation était complètement claire et donc si les gens ont un petit peu plus d'apprentissage automatique pas nécessairement avec les mêmes packages bien on les invite à se joindre à nous la semaine prochaine lundi prochain à 19h heure de Montréal ça va être très tard pour toi Thierry donc je sais pas mais on a effectivement passé des liens sur toutes les informations que tu as partagé avec nous donc merci encore une fois merci à vous super on va terminer avec la partie magistrale de cette soirée mais on a un 5 à 7 virtuel tout le monde et puis je ramène mon diaporama d'un peu plus tôt aujourd'hui on a notre 5 à 7 virtuel qui va se passer sur JT, l'URL est dans la description de ce vidéo sur Youtube et je la mets ici painmtlthierrymite.fgnr.ca FGNR notre partenaire de ce soir qui héberge notre plateforme de videoconférence slashmp94 donc joignez-vous à nous, allez rechercher votre rafraîchissement à favori et puis on va parler de choses aussi techniques ou aussi peu techniques que vous voulez et sur ça je vous dis à la semaine prochaine pour ceux qui veulent faire de l'apprentissage automatique ou qui veulent parler de meilleures pratiques en utilisation du piton et puis je vous dis au mois prochain pour ceux qui attendent les prochaines présentations magistrales. Bonne soirée tout le monde