Automatisation du feature engineering avec featuretools (~7 min)

Dans cet article nous verrons ce qu’est le Feature Engineering, l’intérêt d’automatiser cette étape et un comparatif de différentes libraires traitant le sujet.

Colombe becquart Profile Picture
Colombe becquart Data Scientist

Introduction

Dans le domaine des modèles prédictifs, les données brutes doivent être nettoyées et transformées afin de pouvoir être exploitées correctement par un algorithme. C’est là que le Feature Engineering, une étape souvent négligée mais cruciale dans tout projet de Machine Learning, entre en jeu. Le Feature Engineering consiste à créer de nouvelles caractéristiques à partir des données brutes, permettant ainsi d’améliorer la représentation des informations et d’accroître la performance des modèles.

 

Dans cette démarche, Featuretools est un framework qui permet d’automatiser le Feature Engineering. Il excelle dans la transformation de données temporelles et relationnelles en matrices de features pour le Machine Learning.

 

 

Feature Engineering

Le Feature Engineering est le processus de sélection, manipulation et transformation de données brutes en caractéristiques (features) pouvant être utilisées par un modèle prédictif. Ce travail repose sur l’exploitation des données existantes et l’application de connaissances du domaine pour créer de nouvelles variables pertinentes et qui n’existent pas initialement. 

 

Le Feature Engineering est un sujet assez vaste qui comprend différentes étapes. Parmi elles, on peut notamment citer :

  • Le Feature Extraction qui consiste à prendre des données brutes en entrée et à les transformer en un ensemble de caractéristiques qui peuvent être utilisées en entrée d’un modèle, par exemple calculer la moyenne mobile sur des données temporelles 
  • Le Feature Selection qui étudie quelles sont les caractéristiques les plus pertinentes à garder pour entraîner le modèle
  • Le Feature Construction qui crée de nouvelles variables à partir de celles existantes en utilisant des fonctions mathématiques ou autres transformations, par exemple faire le ratio de deux variables

Le Feature Engineering est une étape très importante d’un projet de Machine Learning. En effet, une bonne préparation et une minutieuse sélection des caractéristiques permet d’améliorer les résultats du modèle. Il est également utile d’utiliser des caractéristiques simples et appropriées pour utiliser des modèles moins complexes et plus rapides à exécuter, plus simples à comprendre et à maintenir.

 

Automatiser le Feature Engineering

Automatiser le Feature Engineering présente plusieurs avantages. Déjà, cela permet de gagner du temps. En effet, le nettoyage et la préparation des données représentent 60% du travail d’un Data Scientist. En automatisant la création des features, il est possible de réduire le temps accordé à cette tâche. Cela permet aussi d’éviter les erreurs manuelles et de réutiliser le code dans plusieurs problèmes alors qu’une approche manuelle doit être refaite pour chaque jeu de données.

Répartition du temps des activités du Data Scientist

Pourquoi utiliser Featuretools

Featuretools est une librairie Python open source dont l’objectif est de réaliser un Feature Engineering automatisé. Elle comprend des fonctions qui peuvent être empilées pour créer des features, en utilisant une  méthode qui s’appelle Deep Feature Synthesis. Cette librairie fonctionne très bien avec les autres outils du pipeline, notamment les dataframes pandas et les modèles Scikit-Learn. 

 

Fonctionnement de Featuretools

Concepts

Featuretools repose sur quelques concepts clés :

  • Entités et Ensembles d’entités : les tables et une structure de données pour en assurer le suivi
  • Relations : comment les tables peuvent être reliées les unes aux autres
  • Feature primitives : Agrégations et transformations qui sont empilées pour construire des features
  • Deep Feature Synthesis : Méthode qui utilise les features primitives pour générer des milliers de nouvelles features

 

Deep Feature Synthesis

C’est un algorithme qui génère automatiquement des features pour les ensembles de données relationnelles. Essentiellement, l’algorithme suit les relations dans les données jusqu’à la base, puis applique séquentiellement des fonctions mathématiques le long de ce chemin pour créer la feature finale. Ces fonctions mathématiques peuvent être les opérateurs mathématiques standards (Min A, Max B) ou bien des combinaisons de features (A * B).

 

Etapes

L’utilisation de Featuretools se fait en 3 grandes étapes : 

  1. Lecture des données : elles se composent d’une ou plusieurs tables, reliées entre elles ou non.
  2. Création de features : c’est dans cette étape qu’intervient Featuretools. Il existe des options par défaut mais cette étape peut être plus ou moins personnalisée. Par exemple, il est possible d’ignorer certaines tables ou certaines variables, de choisir les fonctions d’agrégation ou de transformation à utiliser, de spécifier la profondeur maximale autorisée lorsque les fonctions sont empilées, ainsi que de créer des seed features qui sont des caractéristiques définies manuellement pour apporter une connaissance spécifique du domaine (par exemple considérer qu’une variable avec une valeur supérieure à 100 a une valeur élevée).
  3. Entrainement du modèle avec la matrice des nouvelles features.
  4.  
Etapes de traitement des données avec featuretools

Autres outils pour automatiser le Feature Engineering

AutoFeat

AutoFeat est une autre librairie open-source de Feature Engineering spécialisée pour les modèles de classification et de régression linéaire. Elle permet d’automatiser la création de nouvelles features, la conversion des variables catégorielles, la sélection des features ainsi que l’entraînement d’un modèle de classification ou de régression linéaire avec les features sectionnées. La création des nouvelles features se fait en plusieurs étapes, d’abord des transformations non linéaires sont appliquées aux variables d’entrée (1/x, log(x)…), puis elles sont combinées avec différents opérateurs (+, -, .). 

AutoFeat ne fonctionne pas comme Featuretools, elle n’est pas destinée aux données relationnelles mais a été créée pour des cas d’utilisation scientifique. Les données sont stockées dans une seule table et il est possible de spécifier les unités des variables d’entrée afin d’éviter la création de features physiquement absurdes.

Ses limites sont de ne pas gérer les bases de données relationnelles et de créer des features moins sophistiquées que Featuretools.

 

TsFresh

TsFresh, qui signifie “Time Series Feature extraction based on scalable hypothesis tests”, est une librairie open-source spécifique aux séries temporelles. Elle permet l’extraction et la sélection automatiques de features. TsFresh permet d’extraire plus de 60 caractéristiques à partir d’une variable de données temporelles, ce qui permet d’en saisir les informations des plus basiques au plus complexes: valeur moyenne, valeur maximale, nombre de pics, transformation de Fourier rapide…

TsFresh est très utile pour les données de séries temporelles et peut être facilement intégrée avec Featuretools, mais ne peut pas être utilisée pour d’autres types de données. 

 

OneBM

OneBM, ou One Button Machine, permet de créer des features à partir d’une base de données relationnelles. Il joint les tables de manière incrémentale en suivant les relations entre les tables. Ensuite, il identifie automatiquement le type des variables (catégorielles, numériques, séries temporelles…) puis applique un ensemble d’opérations prédéfinies correspondant au type identifié. OneBM permet aussi de faire une Feature Selection pour enlever les features non pertinentes qui ont été construites à l’étape précédentes. 

L’inconvénient est qu’il n’existe pas d’implémentation open-source pour OneBM.

 

Tableau comparatif

AutoFeat

TsFresh

OneBM

FeatureTools

Open Source

Open source

Pas d’implémentation open source

Open source

Ne prend pas en charge les données relationnelles

Ne prend pas en charge les données relationnelles 

Prend en charge les données relationnelles et non relationnelles

Prend en charge les données relationnelles et non relationnelles

Manque des features importantes

Peut être utilisé avec Featuretools

Génère des features simples et complexes

Génère des features simples et complexes

Créé pour des cas d’utilisation scientifique

Spécifique aux séries temporelles

Pas de domaine spécifique

Pas de domaine spécifique

Conclusion 

Le Feature Engineering est une étape essentielle dans tout projet lié à la Data Science. Même si elle est chronophage et souvent sous-estimée, elle joue un rôle clé dans l’amélioration des performances du modèle.

Bien que la tâche de Feature Engineering puisse être complexe à automatiser en raison de la nécessité de comprendre le contexte spécifique des données de chaque projet, des outils tels que FeatureTools, AutoFeat et TsFresh se sont avérés très utiles pour accélérer ce processus et minimiser le risque d’erreurs humaines.

 

Un article sortira pour montrer le fonctionnement de ces outils dans un cas concret. Suivez la page LinkedIn d’Aqsone https://www.linkedin.com/company/aqsone/ pour ne pas manquer nos prochains articles !

A voir absolument

Les articles les plus appréciés

Vous avez un projet de transfomation ? Parlons-en !

Ajoutez votre titre ici