Par Équipe Blent
Data Scientist
Publié le 22 mars 2022
Catégorie Machine Learning
Lorsque votre objectif est d’obtenir les meilleurs résultats possibles à partir d’un modèle prédictif, vous devez tirer le maximum de ce que vous avez comme données d'entrainement. L’ingénierie des fonctionnalités ou en anglais, Feature Engineering est le processus de sélectionner et transformer les variables les plus pertinentes à partir de données brutes, dans l'objectif d’obtenir les meilleurs performances pour les modèles de Machine Learning. Cette notion est une partie indispensable du prétraitement des données et elle est reconnue pour être la clé du succès dans le domaine du Machine Learning.
Mais comment procède-t-on au Feature Engineering en pratique ? Quelles sont ses techniques ? Comment et quand faut-il utiliser chacune de ces techniques ? C'est ce que nous allons détailler dans cet article.
En Machine Learning, tous les algorithmes d’apprentissage automatique utilisent des données d’entrée pour créer des sorties. Ces données d’entrée comprennent des caractéristiques (ou features), qui sont généralement sous forme de colonnes structurées. Les algorithmes nécessitent des fonctionnalités avec certaines caractéristiques spécifiques pour fonctionner correctement.
À lire aussi : découvrez notre formation MLOps
Ici, le besoin d’ingénierie des fonctionnalités se pose. Il s’agit de transformer les données en formes adaptées à la modélisation et qui ont plus de pertinence. L’ingénierie des fonctionnalités a principalement deux objectifs :
Prenons comme exemple les données suivantes appartenant à un restaurant pour mieux comprendre.
La première colonne représente des commandes faites dans un restaurant, ces commandes sont référées à l’aide d'un identifiant unique. La deuxième colonne représente l'heure de passage de chaque commande.
Supposons que l'on souhaite utiliser ces données pour avoir une idée sur la rentabilité du restaurant et à quel point il est occupé.
Le problème ici, c'est que ces données dans leur forme actuelle ne donne aucune information pertinente. Il faut donc les traiter et changer la façon dans laquelle elles sont présentées pour les rendre plus adaptées à la situation.
Une méthode de Feature Engineering possible dans ce cas, est d'agréger le nombre de commandes sur une période de temps spécifique (une demi-heure dans ce cas).
On remarque qu'on a obtenu une sorte de fréquence de commandes, ce qui nous permettra de tirer beaucoup plus d'information de ces données, par exemple, durant quelle partie de la journée le restaurant en question est le plus occupé.
Il existe plusieurs autres techniques de Feature Engineering, chacune est adaptée à des situations bien précises. On peut citer, par exemple, la sélection des données, la normalisation ou la numérisation.
En fonction des données et du problème à résoudre, on utilise les différentes méthodes de Feature Engineering. Il est indispensable tout d'abord prendre du temps pour comprendre ses données et pour choisir laquelle des approches est à adopter. Ensuite, il faut comprendre les techniques de Feature Engineering, le rôle de chacune et comment l'appliquer.
Les valeurs manquantes sont l’un des problèmes les plus courants qu'on peut rencontrer lorsqu'on essaye de préparer ses données. La raison de ces derniers pourrait être des erreurs humaines, des interruptions dans le flux de données ou bien des préoccupations en matière de confidentialité,
La plupart des algorithmes n’acceptent pas les ensembles de données avec des valeurs manquantes et retournent un message d'erreur. Pour remédier à ce problème, il existe deux méthodes :
Imputation catégorique : lorsque les valeurs de la colonne en questions sont catégoriques, les cases manquantes sont généralement remplies par la valeur la plus courante dans d’autres enregistrements.
data['column_name'].fillna(data['column_name'].value_counts().idxmax(), inplace=True)
Imputation numérique : dans le cas ou les valeurs de la colonne en question sont numériques et non pas catégoriques, on remplace les données manquantes par la moyenne ou la médiane de la valeur correspondante dans d’autres enregistrements.
data = data.fillna(data.median()) data = data.fillna(data.mean())
La manipulation des valeurs aberrantes est une technique permettant de supprimer les valeurs aberrantes d’un ensemble de données. Généralement, ce type de valeurs est détecté par visualisation de l'ensemble de données. Le traitement de ces valeurs sert à produire une représentation plus précise des données.
Pour ce faire, il existe trois méthodes.
À lire aussi : découvrez notre formation MLOps
Cela peut s’appliquer aux valeurs numériques ainsi qu’aux valeurs catégoriques et pourrait aider à éviter le débordement des données, mais au prix de la perte de granularité des données.
# Réaliser une discrétisation avec 3 groupes. data['new_bin'] = pd.qcut(data['points'], q=3)
points new_bin 0 4 (3.999, 10.667] 1 4 (3.999, 10.667] 2 8 (3.999, 10.667] 3 12 (10.667, 19.333] 4 13 (10.667, 19.333] 5 15 (10.667, 19.333] 6 23 (19.333, 25.0] 7 25 (19.333, 25.0]
Après une opération de normalisation ou mise à l’échelle, les caractéristiques continues deviennent similaires en termes de portée et appartiennent par conséquence à un intervalle spécifique. Bien que cette étape ne soit pas nécessaire pour de nombreux algorithmes, c’est tout de même une bonne idée de le faire. Les algorithmes basés sur la distance comme k-NN et k-means, d’autre part, nécessitent des fonctionnalités continues à l’échelle comme entrée de modèle. Il existe deux façons courantes pour le faire.
Min Max Scaling
Ce processus implique le redimensionnement de toutes les valeurs d’une caractéristique dans la plage 0 à 1. En d’autres termes, la valeur minimale dans la plage d’origine prendra la valeur 0, la valeur maximale prendra 1 et le reste des valeurs entre les deux extrêmes sera correctement mis à l’échelle.
from sklearn.preprocessing import MinMaxScaler data['column_name']=MinMaxScaler().fit_transform(data['column_name'])
Standardisation
C'est le processus consistant à mettre à l’échelle les valeurs de données de manière à ce qu’elles acquièrent les propriétés de la distribution normale standard. Cela signifie que les données sont rééchelonnées de telle sorte que la moyenne devient zéro et que les données ont un écart-type unitaire.
data['column_name'] = (data['column_name']-data['column_name'].mean())/data['column_name'].std()
Transformation logarithmique
Cette méthode n'est applicable que lorsqu'on est sûr que toutes les valeurs de la caractéristique sont positives. Elle est principalement utilisée pour transformer une distribution asymétrique en une distribution normale ou moins asymétrique.
import numpy as np data['column_name'] = np.log(data['column_name'])
La création de fonctionnalités implique de tirer de nouvelles fonctionnalités de celles existantes. Cela peut être fait par fusionnement de certaines colonnes en utilisant de simples opérations mathématiques telles que des agrégations pour obtenir la moyenne, la médiane, le mode, la somme ou la différence et même le produit de deux valeurs. On peut parfois aussi répandre une colonne en deux autres ou plus.
Le choix des colonnes a traité et le traitement à effectuer dépend de la problématique à résoudre et de la variable à prédire à la fin, et donc cela nécessite une bonne compréhension de ses données et du domaine.
Les ensembles de données peuvent contenir différents types de données (chaines de caractères, objets...). En Machine Learning, la plupart des modèles n'acceptent que des données de types numériques. C'est le besoin d'un encodage de données non numériques en données numérique qui se pose. Pour ce faire, deux méthodes peuvent être utilisées.
Encodage des étiquettes
Cette approche est très simple. On convertit chaque valeur d’une colonne en un nombre de sortes que chaque étiquette ait un nombre unique propre à elle. Cette méthode est la plus utiliser pour encoder une colonne.
from sklearn.preprocessing import LabelEncoder labelencoder = LabelEncoder() data['column_name']= labelencoder.fit_transform(data['column_name'])
Encodage One-Hot
Cette méthode consiste à créer une colonne pour chaque étiquette. Les valeurs catégoriques sont converties en simples valeurs numériques 1 et 0 sans perte d’information. Ce type d'encodage présente ses propres inconvénients et doit être utilisée avec parcimonie. Elle pourrait en résulter une augmentation spectaculaire du nombre de caractéristiques et la création de caractéristiques fortement corrélées.
from sklearn.preprocessing import OneHotEncoder enc = OneHotEncoder(handle_unknown='ignore') data['column_name']= enc.fit_transform(data['column_name'])
La sélection des variables (ou Feature Selection en anglais), est le processus de sélection des variables les plus importantes à utiliser dans les algorithmes Machine Learning.
Des techniques de sélection des variables sont utilisées pour réduire le nombre de variables d’entrée en éliminant les fonctionnalités redondantes ou non pertinentes pour le modèle. Parmi ces techniques, on peut citer :
Les méthodes d’encapsulation calculent les modèles avec un certain sous-ensemble de caractéristiques et évaluent l’importance de chaque caractéristique. Puis ils itèrent et essaient un sous-ensemble différent de fonctionnalités jusqu’à ce que le sous-ensemble optimal soit atteint.
Les méthodes de filtrage consistent à effectuer un ou plusieurs tests statistiques pour sélectionner les caractéristiques qui ont la relation la plus forte avec la variable de sortie comme le coefficient de corrélation, la MAD (moyenne absolue des différences), ou le ratio de dispersion.
Les méthodes intégrées dans des algorithmes combinent les qualités des méthodes de filtrage et d’encapsulation. Ce sont des méthodes de sélection de variable intégrées dans les modèles de Machine Learning. Un des exemples les plus populaires de ces méthodes est la régression pénalisée (par exemple la régularisation de type L1/Lasso et L2/Ridge). C'est un type de régularisation qui force le modèle à atteindre un équilibre entre performance et nombre de dimensions retenues. Ils permettent d’effectuer la sélection de variable selon les résultats d'une fonction de pénalité qui attribue un poids à chaque variable.
Sans données compréhensibles et adaptées a la modélisation, les meilleurs algorithmes de Machine Learning ne donneraient que peu de résultats. Pour donner à ces derniers leur pouvoir, un travail de Feature Engineering doit être réalisé.
À lire aussi : découvrez notre formation MLOps
Mais pourquoi l'ingénierie des caractéristiques est si importante ?
L’inconvénient le plus important de l’utilisation de l’ingénierie des fonctionnalités est que les risques majeurs viennent avec elle. Pour être précis, si on n’a pas une connaissance considérable du domaine avec lequel on travaille, on risque de brouiller ses données. Il faut alors prendre son temps pour comprendre et préciser la problématique en question, le domaine et la signification de chaque variable de ses données.
Vous souhaitez vous former au MLOps ?
Articles similaires
20 sept. 2022
Hugging Face est une startup française qui s'est fait connaître grâce à l'infrastructure NLP qu'ils ont développée. Aujourd'hui, elle est sur le point de révolutionner le domaine du Machine Learning et traitement automatique du langage naturel. Dans cet article, nous allons présenter Hugging Face et détailler les taches de base que cette librairie permet de réaliser. Nous allons également énumérer ses avantages et ses alternatifs.
Équipe Blent
Data Scientist
Lire l'article
12 juil. 2022
spaCy est une bibliothèque open-source pour le traitement avancé du langage naturel. Elle est conçue spécifiquement pour une utilisation en production et permet de construire des applications qui traitent et comprennent de grands volumes de texte.
Équipe Blent
Data Scientist
Lire l'article
4 juil. 2022
Un auto-encodeur est une structure de réseaux neuronaux profonds qui s'entraîne pour réduire la quantité de données nécessaires pour représenter une donnée d'entrée. Ils sont couramment utilisés en apprentissage automatique pour effectuer des tâches de compression de données, d'apprentissage de représentations et de détection de motifs.
Équipe Blent
Data Scientist
Lire l'article
60 rue François 1er
75008 Paris
Blent est une plateforme 100% en ligne pour se former aux métiers Tech & Data.
Organisme de formation n°11755985075.
Data Engineering
IA Générative
MLOps
Cloud & DevOps
À propos
Gestion des cookies
© 2024 Blent.ai | Tous droits réservés