Les différentes étapes pour créer un système d’apprentissage automatique
Lorsque l’on souhaite mettre en place une solution intelligente basée sur un apprentissage automatique, différentes étapes sont nécessaires afin de réaliser un tel système. Nous allons ici voir les différentes étapes importantes lors de la réalisation de ce genre de projet.
Définir le problème
Avant de ce lancer dans la création d’un système intelligent, il nous faut d’abord définir ce que l’on souhaite mettre en place. Ainsi, nous nous posons la question de : qu’est-ce que nous essayons de faire apprendre à notre système. Est-ce que nous souhaitons mettre en place un système qui nous prédit la catégorie d’appartenance d’une photo ou bien un système de recommandation de vidéo. Cela nous permettra de déterminer le type de problème que nous allons avoir.
Prenons un exemple, nous souhaitons mettre en place un système intelligent qui nous détermine le prix d’un appartement ou d’une maison en fonction des caractéristiques que nous fournissons à notre système. Ici, nous cherchons à déterminer le prix d’un appartement. Pour réaliser ce résultat, nous fournissons en entrée de notre système les caractéristiques du biens que nous cherchons à vendre. Ces caractéristiques seront le prix, la superficie, le positionnement de la maison, le nombre de pièces…
C’est en comprenant et en détaillant notre problème que nous savons exactement ce que notre système doit produire et de ce qui est nécessaire pour la réalisation de notre tâche.
Les données
Une fois notre problème et le type des informations nécessaires définis, nous allons avoir besoin de données. Ces données vont nous permettre de réaliser la phase d’apprentissage de notre système. C’est sur ces données que notre système va pouvoir se baser afin de prédire par exemple le prix d’une maison.
Récolter des données
La première étape que nous allons devoir réaliser consiste à trouver des données et les récupérer. Pour cela, différentes approches sont possibles. Nous pouvons récupérer des bases de données que nous pouvons trouver sur internet. Nous pouvons aussi faire du Web Scrapping. Cela consiste à extraire des informations présentes sur des sites web. Nous pouvons aussi utiliser nos propres données. En effet, il se peut que vous récoltiez déjà des informations et que vous souhaiter les utiliser pour créer votre système.
Lors de la récolte des données, nous devons faire attention aux données que nous récupérons. Un point essentiel sera porté sur la fiabilité des données, à savoir si elles sont valides. Une autre point sera porté sur le fait que vos données correspondent d’un point de vue de la date. En effet, si vous chercher à déterminer le prix de l’immobilier d’aujourd’hui en vous basant sur des données d’il y a 10 ans, vous aurez quelques problèmes, car la situation aura peut-être changé entre temps. Ce qu’il faut retenir, c’est que si nous donnons de mauvaises données, notre système nous donnera de mauvais résultats (Garbage in, Garbage out GIGO).
Préparer nos données
Une fois nos données récupérées, nous allons devoir les préparer. Pour ce faire, nous allons nettoyer nos données et vérifier que nos données correspondent bien à ce que l’on attend. Par exemple, si nous avons un ensemble d’individus et que pour la colonne correspondant à l’âge nous avons le prénom de la personne, cela représente un problème. De plus, il faut faire attention à la représentation de nos données. En effet, l’ensemble des données présent dans une même catégorie doit avoir la même forme. Par exemple, nous pourrions avoir l’âge défini par des chiffres comme 20 ou par une chaîne de caractère comme vingt. Il nous faudra faire attention à ce type de problème.
Lors de la préparation de nos données, il se peut que pour certaines données, nous ayons des champs manquants. Nous pouvons, par exemple, avoir le champ “âge” manquant pour certaines de nos données. Plusieurs solutions sont possibles pour résoudre ce problème. La première consiste à supprimer l’information ou nous avons des données manquantes. Cela peut être problématique si nous avons très peu de données. La seconde solution consiste à remplacer la valeur manquante. Pour cela, nous pouvons utiliser la moyenne ou la médian. Cela nous permet de conserver notre donnée, mais cette valeur n’est pas forcément représentative de cette dernière. Une autre approche consiste a déterminer cette valeur à l’aide d’un algorithme d’apprentissage automatique. Ainsi, on se baserait sur les données valides que nous avons déjà afin de déterminer les valeurs manquantes.
Explorer nos données
Durant la phase d’exploration, nous allons chercher à analyser nos données. Nous allons chercher ce qui peut être pertinent pour notre étude. Nous allons pouvoir faire des suppositions sur les informations essentielles et les informations plus secondaire. Ainsi, nous cherchons aussi à éliminer les informations inutiles et non-pertinentes pour notre étude. Par exemple, si notre problème est centré sur les personnes de sexe masculin, l’information pour chacune de nos données de savoir si c’est une femme ou un homme n’est pas pertinente. Elle l’est lorsque nous souhaitons extraire les données qui nous intéressent, mais elle ne l’est plus lorsque l’on souhaite apprendre à notre système cette information.
Lors de l’exploration de nos données, il se peut que le nombre de variables soient trop importantes pour être analysé correctement. Une des approches consiste à résumer l’information en réduisant le nombre de variables. Pour ce faire, nous pouvons réaliser une analyse en composantes principales ACP. Le principe consiste à transformer des variables corrélées (qui sont liée entre elles) en une nouvelle variable. Cela nous permet de résumer l’information et de diminuer la redondance. Ce type de transformation est très avantageux quand nous avons énormément de données.
Le modèle
Le choix du modèle
Après avoir minutieusement choisi les données sur lesquelles nous allons travailler, nous allons devoir choisir un modèle pour réaliser l’apprentissage de notre système. Le choix du modèle est lié aux données que nous allons avoir et ce que nous souhaitons réaliser avec ce système. Par exemple, dans le cas où nous souhaitons classifier des images, nous pouvons utiliser un réseau de neurones à convolution. Ce type de réseau va nous permettre d’extraire les informations d’une image et les classifier. En revanche, si pour chaque image, nous avons des mots-clés associer, nous pouvons utiliser un arbre de décision. En effet, en fonction des mots-clés, nous pouvons déterminer la catégorie d’appartenance de notre image.
Entraîner notre modèle
Une fois notre modèle choisi, nous allons pouvoir l’entraîner et le tester. Pour cela, nous allons avoir deux bases de données. Une pour l’apprentissage et une autre pour la validation de notre système. D’autres méthodes existent comme la validation croisée qui consiste à créer différents paquets et à permuter à chaque itération la base de validation et la base d’entraînement. Ainsi, si nous séparons notre jeu de données en 5, nous allons avoir le premier paquet qui va être notre base de validation et les 4 autres qui vont être notre base d’entraînement. Puis, une fois nos tests passés, nous allons utiliser le deuxième paquet pour la base de validation et les autres paquets pour la base d’entraînement. Et nous réalisons ce procédé 5 fois, car nous avons 5 paquets.
Le fait de réaliser une validation croisée permet d’éviter d’avoir des problèmes vis-à-vis de nos données. Ainsi, en réalisant plusieurs essaies, nous pouvons voir les erreurs telles que le sur-apprentissage. Généralement, nous utilisons la validation croisée pour vérifier que nos échantillons sont bien hétérogènes. En effet, dans le cas d’une validation traditionnelle, il est possible que nous ayons les données de notre base de validation qui possèdent certaines caractéristiques spécifiques. Ainsi, nous allons avoir un problème, car il se peut qu’il n’y a pas ou pas suffisamment d’exemple dans notre base d’entraînement pour que notre modèle puisse apprendre les caractéristiques nécessaires. Avec la validation croisée, nous changeons les données de nos échantillons, nous permettant de trouver une bonne configuration.
Valider notre modèle
Une fois notre système entraîné et évalué, nous pouvons utiliser des matrices de confusion nous permettant de vérifier la classification de notre système. Cela nous permet d’avoir un aperçu de l’ensemble des prédictions de nos catégories. Nous pouvons aussi évaluer le rappel ou la précision de notre système en fonction du type de problème que nous avons. Privilégier le rappel sera intéressant dans le cas d’un système de détection de maladie où l’on cherche à récupérer toutes les personnes atteintes d’une maladie même si cela implique de récupérer des personnes qui ne sont pas forcément atteintes. Privilégier la précision est intéressant dans le cas d’un système de classification de courrier où l’on cherche a détecter si un courrier est un spam ou non. En effet, nous n’aimerions pas qu’un courrier important soit classifier en tant que spam. Nous voulons être sûrs qu’il s’agisse d’un spam.
Si les résultats que nous avons ne nous satisfont pas, nous devons dans un premier temps chercher la source qui cause cette mauvaise performance. La première peut-être le manque de données. En effet, il se peut que nous n’ayons pas assez de données pour que notre système puisse apprendre. La seconde peut-être liée aux catégories. En effet, il se peut que nos catégories soient déséquilibrées en terme de quantité. Nous pouvons aussi avoir un problème de diversité. Si l’erreur ne vient pas de nos données, cela peut venir de notre modèle. Nous pouvons avoir réalisé un sur-apprentissage ou un sous-apprentissage de notre modèle. Une des solutions consisterait à ajuster les hyper-paramètres que nous avons défini. Finalement, il se peut aussi que c’est notre interprétation vis-à-vis du problème que nous souhaitons résoudre qui pose problème.
Conclusion
Tout au long de cet article, nous avons vu une manière de procéder afin de créer un système d’apprentissage automatique. La première étape importante consiste à définir notre problème, c’est-à-dire à définir ce que l’on souhaite résoudre afin de savoir les informations nécessaires à notre système. Puis, vient la phase de collecte et de traitement des données. Nous allons chercher des données qui servirons à l’apprentissage et à la validation de notre système. Enfin, vient la phase liée à notre système. Dans un premier temps, nous allons chercher un modèle correspondant à notre problème que nous allons entraîner, puis valider. En fonction des résultats obtenus, nous allons pouvoir mettre notre système en production. Dans le cas contraire, nous allons revoir nos données, ajuster notre modèle ou dans le pire des cas revoir notre problème.
This post has been voted on by the SteemSTEM curation team and voting trail in collaboration with @curie.
If you appreciate the work we are doing then consider voting both projects for witness by selecting stem.witness and curie!
For additional information please join us on the SteemSTEM discord and to get to know the rest of the community!
Cet article a été nominé pour figurer dans la sélection des @francosteemvotes ! Félicitations !
Ce post a été supporté par notre initiative de curation francophone @fr-stars.
Rendez-vous sur notre serveur Discord pour plus d'informations
Félicitations @rerere pour votre beau travail!
Ce post a attiré l'attention de @ narla.ghelo et a été upvoté à 100% par @steemalsace et son trail de curation comportant actuellement 28 upvotes .
De plus votre post apparaîtra peut-être cette semaine dans notre article de sélection hebdomadaire des meilleurs post francophones.
Vous pouvez suivre @steemalsace pour en savoir plus sur le projet de soutien à la communauté fr et voir d'autres articles qualitatifs francophones ! Nous visons la clarté et la transparence.
Rejoignez le Discord SteemAlsace
Pour nous soutenir par vos votes : rejoignez notre Fanbase et notre Curation Trail sur Steemauto.com. C'est important pour soutenir nos membres, les steemians et Witness francophones ICI!
@narla.ghelo
J'aime beaucoup la partie sur le test de la validite des donnees, qui est crucial et souvent omis (et genere alors de jolis crashs).
Merci, oui, la partie de la validation de nos modèles est l'une des étapes les plus cruciales. Généralement, lorsque nous avons un modèle qui semble fonctionner, on se dit que cela peut tenir la route. Or, en production, cela peut avoir de graves répercussions. Ce n'est pas toujours une étape glamour, mais elle est nécessaire.
C'est meme souvent, d'apres mon experience personnelle, l'etape la plus penible et la moins valorisee.