# Ingénierie des caractéristiques

L'ingénierie des caractéristiques (en anglais feature engineering) a un rôle important, notamment dans l’analyse des données. Sans données, les algorithmes d’exploitation et d’apprentissage automatique de données ne seront pas en mesure de fonctionner. En effet, il s’avère qu’en réalité, on ne pourrait réaliser que peu de choses si nous ne disposions que de très peu de caractéristiques afin de pouvoir représenter les données, ou les banques de données, sous-jacentes. De surcroît, la qualité des résultats de tous ces algorithmes est dépendante et est directement liée à la qualité des caractéristiques dont on peut disposer. Ainsi, il existe différentes formes de données comme la séquence, la série chronologique, le graphique, le texte ou encore l’image.

## Processus de Feature Engineering

La Feature Engineering permet de répondre aux différents besoins de génération ainsi que de sélection de caractéristiques indispensables, mais aussi à de nombreuses questions. Elle est spécifique au type de données et fait partie de l’application. Elle est incluse dans le processus de Machine Learning. Ainsi, la Feature Engineering comprend plusieurs processus :

### La création de caractéristiques

Elle permet de créer de nouvelles variables utiles dans un modèle. Cette création consiste à ajouter ou à supprimer quelques caractéristiques.

### La transformation de caractéristiques

Elle correspond à une fonction transformant les caractéristiques d’une représentation spécifique à un autre. Elle repose donc sur la construction de nouvelles caractéristiques via des caractéristiques qui existent déjà, et est réalisé via le recours aux applications mathématiques. L’objectif réside dans la traçabilité et la visualisation de données.

### La génération de caractéristiques

Elle permet la création de nouvelles caractéristiques qui ne sont pas le résultat de transformation de caractéristiques. De surcroît, les caractéristiques, qui ont été définies via des caractéristiques particulières, correspondent à des caractéristiques dites générées. Beaucoup de méthodes, qui permettent de définir les caractéristiques adaptées à un domaine, font partie de la catégorie de l’extraction de caractéristiques. Ainsi, nous pouvons utiliser à la fois le terme de génération de caractéristiques mais aussi celui de l’extraction de caractéristiques.

### La sélection de caractéristiques

Elle induit à faire le choix d’un petit ensemble de caractéristiques dans un grand nombre de caractéristiques. Ainsi, en réduisant au mieux la taille de l’ensemble des caractéristiques, il est possible d’utiliser la plupart des algorithmes dans le milieu informatique. Sélectionner des caractéristiques peut ainsi permettre l’amélioration des résultats, en termes de qualité, de ces mêmes algorithmes.

### L’analyse et l’évaluation des caractéristiques

Elles se rapportent à des méthodes, des concepts et des mesures qui peuvent permettre l’évaluation de l’utilité des caractéristiques mais aussi des ensembles de caractéristiques, et souvent, qui font partie de la sélection des caractéristiques.

### La méthodologie générale d’ingénierie automatique des caractéristiques

Cette méthodologie se réfère à des approches dites génériques. Ces dernières peuvent permettre la génération de façon automatique d’un nombre important de caractéristiques, ainsi que la sélection d’un sous-ensemble efficient de caractéristiques qui ont été générées.

### Les applications d’ingénierie des caractéristiques

Ces dernières impliquent directement le Feature Engineering. L’objectif de ces applications est de pouvoir réaliser la résolution de diverses tâches d’analyse de données au sein de contextes spécifiques.

## Les types d'ingénierie des fonctionnalités
### Ingénierie des caractéristiques univariées et multivariées

L'ingénierie des caractéristiques univariées pour les variables continues peut être pratique pour améliorer la symétrie, la normalité ou l'ajustement du modèle. Dans la modélisation du risque de crédit, par exemple, une transformation logarithmique est souvent appliquée à des variables de taille telles que les montants des prêts, la taille des actifs et le produit intérieur brut (PIB), car ces variables sont généralement non négatives et asymétriques à droite.

### Ingénierie des fonctionnalités spécifiques au domaine

Il s'agit de la connaissance du domaine précis du problème identifié. Cela permet de créer des fonctionnalités intelligentes qui améliorent les performances de l'algorithme d'apprentissage automatique. Sur la base de connaissances d'experts, on peut par exemple ajouter des caractéristiques indicatrices pour une certaine condition ou construire une nouvelle caractéristique d'interaction en prenant des combinaisons de deux ou plusieurs caractéristiques existantes (par exemple, pour la création d'un modèle d'apprentissage automatique d'un problème de physique, ajouter des nombres adimensionnels pertinents, comme le nombre d'Archimède pour la sédimentation)$^,$.

### Ingénierie des fonctionnalités pour les données de séries temporelles

La plupart des algorithmes d'apprentissage automatique ne peuvent pas être directement appliqués aux données de séries chronologiques. Une façon courante de résoudre ce problème consiste à transformer la série chronologique en une représentation vectorielle de caractéristiques, puis à appliquer un modèle prédictif traditionnel sur cette nouvelle représentation. La définition de cette représentation vectorielle de caractéristiques est une étape cruciale pour apprendre des données de séries chronologiques et a un impact majeur sur les performances du modèle. La construction manuelle de ces caractéristiques est une tâche très difficile et chronophage.

### Ingénierie des fonctionnalités pour les données réseau

Une caractéristique importante des réseaux est que les nœuds ayant des propriétés similaires sont souvent liés les uns aux autres, ce qui signifie que la structure du réseau peut être utilisée pour faire des inférences sur les nœuds. La structure du réseau, la position des nœuds en son sein et les interdépendances entre eux peuvent en dire long sur leurs propriétés. Cependant, l'ingénierie des fonctionnalités doit être appliquée pour extraire ces informations afin qu'elles puissent être utilisées dans des modèles d'apprentissage automatique.

### Ingénierie des fonctionnalités pour les données multimédias

Les données multimédias sont en fait définies comme des données représentant plusieurs types de supports pour capturer des informations. Des exemples populaires de données multimédias sont les données audio, vidéo et image. L'idée de l'ingénierie des caractéristiques pour les données non structurées est d'extraire des caractéristiques telles qu'elles puissent être introduites dans une technique d'apprentissage automatique classique pour la reconnaissance de formes.

### Ingénierie des fonctionnalités pour les données textuelles

Le texte est une autre forme de données non structurées où la compréhension du contexte, c'est-à-dire des phrases et des documents, est nécessaire pour interpréter leur sens. Les données textuelles contiennent généralement des dimensions beaucoup plus élevées que les données traditionnelles et sont utilisées dans de nombreuses applications telles que le filtrage du spam, le marketing, l'analyse des sentiments et la détection des fraudes. L'ingénierie est une étape clé dans l'exploration de texte, où les caractéristiques numériques sont créées à partir des données textuelles brutes.

### Ingénierie des fonctionnalités pour les données géospatiales

Enfin, les données géospatiales contiennent des informations sur l'emplacement d'objets ou d'événements. Les informations de localisation sont souvent également combinées avec des informations temporelles et météorologiques. L'emplacement peut être statique ou dynamique et peut être obtenu à partir de diverses sources. De grandes quantités de données géospatiales sont accessibles au public et ces informations présentent un intérêt dans de nombreuses applications, en particulier lorsqu'elles peuvent être ajoutées aux données d'entreprise traditionnelles.

## Techniques de Feature Engineering

Nous pouvons comprendre la Feature Engineering seulement dans le processus de l’apprentissage automatique appliqué. Même si comprendre les données et le problème visé constitue une partie importante du Feature Engineering au sein de l’apprentissage automatique, et qu’aucune règle n’existe pour pouvoir y parvenir, les techniques de Feature Engineering suivantes s’avèrent indispensables :

### Imputation

Lorsqu’il faut réaliser la préparation des données pour l’apprentissage automatique, les valeurs manquantes dans les données constituent l’un des problèmes majeurs. Ces dernières peuvent apparaître à la suite d'erreurs humaines, de problèmes de confidentialité ou encore d'interruptions de flux de données. De surcroît, elles affectent directement les performances de l’ensemble des modèles d’apprentissage automatique. C’est pour cette raison que l’imputation peut s’avérer utile car elle consiste à traiter les valeurs manquantes. De plus, il existe deux grandes catégories d’imputation :
Imputation catégorielle : les valeurs catégorielles, qui manquent, sont alors remplacées par la valeur la plus courante au sein des autres enregistrements.
Imputation numérique : les valeurs numériques, qui manquent, sont ici remplacées par la moyenne de la valeur qui correspond au sein d’autres enregistrements.

### Discrétisation

Il s’agit de prendre un ensemble de valeurs de données puis de les regrouper logiquement dans des bacs ou des seaux. Nous pouvons appliquer un regroupement à des valeurs catégorielles et à des valeurs numériques. On peut effectuer plusieurs sortes regroupement de données, comme un regroupement d’intervalles égaux, un regroupement se basant sur des fréquences égales ou un regroupement qui se base sur un tri par arbre de décision.

### Encodage catégoriel

La technique de l’encodage catégoriel est utilisée afin de pouvoir encoder des caractéristiques en valeurs numériques car il est plus simple de comprendre des valeurs numériques pour un algorithme. Parmi les techniques d’encage catégoriel, il y a l’encodage à chaud, ou OHE, qui est souvent utilisé. Cette technique consiste à convertir les valeurs catégorielles en 1 et 0, et elle permet de ne pas perdre d’information.

### Fractionnement des caractéristiques

En fractionnant, ou en divisant, des caractéristiques en plusieurs parties, nous pouvons alors accroître la valeur de l’ensemble des caractéristiques en fonction de la cible à apprendre.

### Traitement des valeurs aberrantes

Cette technique consiste à traiter les valeurs aberrantes dans un ensemble de données. Ces valeurs aberrantes correspondent à des valeurs élevées ou faibles au sein d’un ensemble de données, qui sont à la fois inhabituelles et qui peuvent se produire dans des scénarios normaux. Plusieurs méthodes de traitement des valeurs aberrantes existent :
Suppression : les valeurs aberrantes sont supprimées de la distribution dans les enregistrements. Cependant, dans le cas où nous avons des valeurs aberrantes dans plusieurs variables, cette méthode peut conduire à la perte d’une partie de la feuille de données.
Remplacement des valeurs : il est possible de traiter les valeurs aberrantes comme des valeurs manquantes, et de les remplacer en ayant recours à une imputation adaptée.
Plafonnement : Les valeurs maximales et minimales plafonnées peuvent être remplacées en utilisant une valeur arbitraire ou une valeur provenant d’une distribution variable.
Discrétisation : c’est un processus qui a pour objectif de réaliser la conversion des modèles, des variables, mais aussi des fonctions continues, en variables discrètes. Afin d’y parvenir, il faut au préalable construire une série d’intervalles continues permettant de couvrir la plage du modèle, de la variable, ou de la fonction visée

### Transformation de variables

Les techniques de transformation de variables sont utilisées car elles aident à normaliser des données asymétriques. La technique la plus utilisée et la plus courante est la transformation logarithmique. Cette dernière consiste à réaliser la transformation d’une distribution asymétrique en une distribution moins asymétrique, voire normale. De surcroît, la transformation logarithmique permet de traiter des données confuses puis de les rapprocher des applications normales.

### Mise à l’échelle

Le problème le plus difficile et le plus courant de l’apprentissage automatique est la mise à l’échelle. Suivant les besoins, ces caractéristiques doivent soit être mises à l’échelle ou soit être réduites. De surcroît, on effectue la mise à l’échelle des caractéristiques en fonction de la sensibilité des algorithmes d’apprentissage automatique à l’échelle des valeurs d’entrée. Deux processus courants de mise à l’échelle sont utilisés :
La mise à l’échelle Min-Max : cette méthode consiste à remettre à l’échelle l’ensemble des valeurs d’une caractéristique dans une plage de 0 à 1. Plus précisément, la valeur minimale provenant de la plage d’origine serait égale à la valeur 0 tandis que la valeur maximale prendrait la valeur 1. Concernant les valeurs restantes situés entre ces deux extrêmes, elles seraient mises à l’échelle de façon appropriées.
La mise à l’échelle de la normalisation/de la variance : ce processus consiste à prendre l’ensemble des points de données et à les soustraire de leur moyenne. Ainsi, on obtient un résultat que l’on divisera par la variance de la distribution afin de pouvoir avoir une distribution ayant une moyenne de 0 ainsi qu’une variance de 1.

### Création de caractéristiques

La technique de création de caractéristiques consiste à dériver de nouvelles caractéristiques parmi des caractéristiques existant. Afin d’y parvenir, nous pouvons utiliser de simples opérations mathématiques comme des agrégations, ce qui nous permettraient d’obtenir la somme, le mode, la moyenne, la médiane ou la différence, ainsi que le produit de deux valeurs.

### Pertinence des caractéristiques

Les caractéristiques varient en importance vis-à-vis d’un modèle, et même des caractéristiques relativement insignifiantes peuvent contribuer à un modèle. Mais pour éviter qu'un modèle ne devienne trop spécifique à l'ensemble de données d'apprentissage, nous pouvons réduire son nombre par la technique de sélection de caractéristiques. Cette technique est utilisée afin de ne sélectionner que les caractéristiques pertinentes, c’est-à-dire, celles qui ont vraiment d’importance significative sur un modèle.

### Explosion des caractéristiques

L'explosion se produit lorsque le nombre de caractéristiques identifiées augmente de manière inappropriée. Les causes courantes de cette explosion incluent :
* L’implémentation des modèles de caractéristiques classiques au lieu de coder de nouvelles caractéristiques plus appropriées
* Les combinaisons de caractéristiques qui ne peuvent pas être représentées par un système linéaire
L'explosion des caractéristiques peut être limitée via des techniques telles que : la régularisation, ou la sélection des caractéristiques, comme explicité ci-dessus.

### Automatisation du feature engineering

L'automatisation du feature engineering est un sujet de recherche qui remonte aux années 1990. Un logiciel d'apprentissage automatique qui intègre l'ingénierie automatisée des caractéristiques n’est disponible sur le marché que depuis 2016. La littérature académique connexe peut être grossièrement divisée en deux types :
* L'apprentissage par arbre de décision multi-relationnel, qui utilise un algorithme supervisé similaire à un arbre de décision.
* La synthèse approfondie des caractéristiques qui utilise des méthodes plus simples.
L’apprentissage par arbre de décision multi-relationnel
Cet algorithme génère des caractéristiques sous forme de requêtes SQL en ajoutant successivement des clauses aux requêtes. Ainsi, des clauses seront ajoutées successivement jusqu’à en trouver des caractéristiques pertinents et adaptés pour le modèle d’apprentissage automatique.
Par exemple, l'algorithme peut commencer par :
La requête peut ensuite être affinée successivement en ajoutant des conditions, telles que « WHERE t1.charge <= -0.392 ».
La synthèse approfondie des caractéristiques
Quant à cet algorithme, il consiste à créer des caractéristiques à partir des ensembles de données relationnelles. L’algorithme applique des fonctions mathématiques aux ensembles de données dans différentes lignes et colonnes d’une table afin de les transformer en nouveaux groupes avec de meilleures caractéristiques.

### Magasin de caractéristiques

Un magasin de caractéristiques est un endroit où les caractéristiques sont stockées et organisées dans le but d’être utilisées pour établir des modèles ou faire des prédictions dans un processus d’apprentissage automatique.
Il s’agit d’un emplacement central où nous pourrons faire deux choses :
* Soit de créer ou de mettre à jour des caractéristiques à partir d’un ensemble de données
* Soit de créer ou de mettre à jour de nouveaux ensembles de données à partir de ces groupes de caractéristiques pour la formation de modèles.
Il inclut la capacité de stocker le code utilisé pour générer des caractéristiques, et d'appliquer ce code par la suite aux données brutes et ainsi de servir les caractéristiques générées aux modèles voulus.
Les magasins de caractéristiques peuvent être des logiciels autonomes ou intégrés à des plateformes d'apprentissage automatique. Par exemple, le logiciel de magasin de caractéristiques le plus populaire est FEAST (Fatigue Engineering Analysis and Simulation Tools), qui est un logiciel open source pour l’apprentissage automatique en ligne.