Logo Spiria

Les 3 étapes essentielles de l’apprentissage automatique (Machine Learning)

22 janvier 2020.

L’apprentissage automatique (Machine Learning) est utilisé en intelligence artificielle et en science et analyse des données (Analytics and Data Science).

Intelligence artificielle / Science des données.

Il existe différents types d’apprentissage automatique : le supervisé, le non-supervisé et celui par renforcement.

Apprentissage supervisé : pour cet apprentissage, nous avons des données en entrée (Features) et le résultat attendu (Label). Il nous permet de faire des prédictions basées sur un modèle* qui est obtenu à partir de données d’historique et de l’algorithme choisi.

L’apprentissage supervisé tente de répondre à deux questions :

  • Classification : « quelle classe ?";
  • Régression : « combien ? ».

Apprentissage non-supervisé : avec cet apprentissage, vous avez toujours des features, mais pas de label, car nous n’essayons pas de prédire quoi que ce soit.

À partir des données historiques que nous avons, nous essayons de voir ce que nous pouvons apprendre des données, sans oublier de valider les conclusions obtenues avec des experts en la matière.

Ce type d’apprentissage automatique sert généralement à découvrir des structures et des modèles dans les données. Il peut également être utilisé pour l’ingénierie des caractéristiques (Feature engineering) lors du processus de préparation des données pour l’apprentissage supervisé (nous y reviendrons plus tard).

Apprentissage par renforcement : avec ce type d’apprentissage, vous commencez avec un agent (algorithme) qui doit choisir parmi une liste d’actions. Ensuite, en fonction de l’action choisie, il recevra un retour de l’environnement (provenant d’un humain dans certaines situations ou d’un autre algorithme) : c’est soit une récompense pour un bon choix, soit une pénalité pour une mauvaise action. L’agent (l’algorithme) apprend quelle stratégie (ou choix d’actions) maximise le cumul de récompenses.

Ce type d’apprentissage est souvent utilisé dans le cadre de la robotique, de la théorie des jeux et des véhicules autonomes.

Les principales étapes sont :

La préparation des données

  • Récolte des données : tout d’abord, rassemblez les données dont vous aurez besoin pour l’apprentissage automatique. Veillez à les rassembler sous une forme consolidée, afin qu’elles soient toutes contenues dans un seul tableau (Flat Table).
  • Réconciliation (Data Wrangling: il s’agit de préparer les données afin de les rendre exploitables par les algorithmes d’apprentissage automatique.
    • Nettoyage des données : trouvez les « Null », les valeurs manquantes et les données dupliquées. Il faut remplacer les « Null » et les valeurs manquantes par d’autres valeurs (ou les supprimer) et s’assurer de ne pas avoir de doublons.
    • Décomposition des données : les colonnes de texte contiennent parfois plus d’une information ; nous devons donc les diviser en autant de colonnes dédiées que nécessaire. Si certaines colonnes représentent des catégories, convertissez-les en colonnes de type catégorie.
    • Agrégation de données : regroupez certaines informations ensemble quand c’est pertinent
    • Mise à l’échelle (Data Scaling) : cela permettra d’obtenir des données à une échelle commune, si ce n’est déjà le cas. La mise à l’échelle des données ne s’applique pas au label ou aux colonnes de catégories. Elle est nécessaire lorsqu’il y a une grande variation dans les plages de features.
    • Mise en forme et transformation (Data Shaping & Transformation) : de catégoriel à numérique.
  • Enrichissement des données : parfois, vous devrez enrichir les données existantes par des données externes afin de donner à l’algorithme plus d’informations avec lesquelles travailler, ce qui améliore le modèle (par exemple, des données économiques ou météorologiques).

L’ingénierie des caractéristiques (Feature Engineering)

  • Visualisez vos données dans leur ensemble pour voir s’il existe des liens entre les colonnes. En utilisant des graphiques (Charts), vous pouvez voir les caractéristiques/features côte à côte et détecter tout lien entre les features, et entre les features et les labels.
    • Les liens entre les features nous permettent de voir si une feature donnée est directement dépendante d’une autre. Si c’est le cas, il se peut que vous n’ayez pas besoin des deux features.
    • Les liens entre une feature et le label nous permettent de voir si une feature aura un fort effet sur le résultat.
  • Parfois, vous devrez générer des features supplémentaires à partir de celles qui existent déjà dans une classification (par exemple, lorsque l’algorithme choisi est incapable de différencier correctement les classes).
  • Vous pouvez vous retrouver avec un nombre énorme de colonnes. Dans ce cas, vous devez choisir les colonnes que vous utiliserez comme features, mais si vous avez des milliers de colonnes (c’est-à-dire des features potentielles), vous devrez appliquer une réduction dimensionnelle. Il existe plusieurs techniques pour ce faire, notamment l’analyse en composantes principales ou ACP (Principal Component Analysis, PCA en anglais). L’ACP est un algorithme d’apprentissage non-supervisé qui utilise les colonnes existantes pour générer de nouvelles colonnes, appelées composantes principales, qui peuvent être utilisées ultérieurement par l’algorithme de classification.

Le choix d’algorithme

À cette étape, on peut commencer à entraîner les algorithmes, mais avant tout :

  • Divisez votre ensemble de données en trois parties : entraînement, test et validation.
    • Les données d’entraînement serviront à entraîner le ou les algorithmes choisis ;
    • Les données de test seront utilisées pour vérifier la performance du résultat ;
    • Les données de validation ne seront utilisées qu’à la toute fin du processus et ne seront, sauf nécessité, que très rarement examinées et utilisées avant afin d’éviter d’introduire un quelconque biais dans le résultat.
  • Choisissez le ou les algorithmes pertinents.
  • Essayez les algorithmes avec différentes combinaisons de paramètres et comparez les performances de leurs résultats.
  • Utilisez la procédure des hyperparamètres (Grid-Search en Python, par exemple) pour essayer de nombreuses combinaisons, et trouver celle qui donne le meilleur résultat (n’essayez pas de combinaisons manuelles).
  • Dès que vous êtes raisonnablement satisfait d’un modèle, sauvegardez-le même s’il n’est pas parfait, car vous risquez de ne plus jamais retrouver la combinaison qui vous a permis de l’obtenir.
  • Continuer les essais après chaque nouveau modèle. Si les résultats ne sont pas satisfaisants, vous pouvez recommencer :
    • Au stade des hyperparamètres, si vous avez de la chance.
    • Il est également possible de devoir recommencer à partir du choix de features à inclure ou même revoir l’état de nos données (vérifiez s’il n’y a pas de problèmes de normalisation, de régularisation, d’échelle, de valeurs aberrantes…).

Lorsqu’on embarque dans un processus d’apprentissage automatique, il est important de garder à l’esprit qu’il se peut que nos données ne nous permettent peut-être pas d’arriver à un meilleur résultat que celui que nous obtenons déjà avec nos méthodes classiques déjà en place. Mais cela nous révèle assurément des informations intéressantes lors du processus d’analyse de données.

 


(*) Modèle : le résultat obtenu en analysant les données avec un algorithme et toute combinaison donnée de paramètres, en supposant que le modèle est une fonction mathématique y = f(x), où x est la feature, y est le label et f(x) le modèle.