Accéder au contenu principal

Feature Engineering in Machine Learning (Ingénierie des caractéristiques dans l'apprentissage automatique) : Guide pratique

Apprenez l'ingénierie des fonctionnalités grâce à ce guide pratique. Explorez des techniques telles que l'encodage, la mise à l'échelle et la gestion des valeurs manquantes en Python.
Actualisé 20 mars 2025  · 15 min de lecture

L'ingénierie des caractéristiques consiste à sélectionner ou à créer des caractéristiques significatives qui améliorent les performances d'un modèle. Quel que soit votre algorithme de ML, vous aurez probablement recours à des techniques d'ingénierie des caractéristiques pour la préparation des données.

Dans cet article, nous allons explorer l'ingénierie des caractéristiques et ses méthodes et comprendre comment les appliquer à l'aide d'un exemple pratique de prédiction des prix de l'immobilier. 

Qu'est-ce que le Feature Engineering dans l'apprentissage automatique ?

Je me souviens avoir construit un modèle pour améliorer les taux de livraison à temps dans le cadre d'un projet de temps de transit sur mon lieu de travail. Plutôt que de former des modèles d'ensemble complexes, nous avons utiliséun algorithme de régression simple avec seulement trois caractéristiques supplémentaires dérivées des données existantes.

À elle seule, cette approche a permis d'améliorer notre taux de livraison dans les délais, qui est passé de 48 % à 56 %. Il s'agit d'une amélioration considérable si l'on considère les 10 millions d'enregistrements. C'est dire à quel point les techniques d'ingénierie des caractéristiques, comme l'extraction de caractéristiques, peuvent faire la différence !

En d'autres termes, l'ingénierie des fonctionnalités consiste à sélectionner les bonnes caractéristiques à partir des données existantes.

Prenons l'exemple d'un ensemble de données météorologiques comportant des colonnes pour la température, le lieu, le mois, l'année et la date. La colonne de la date peut ne pas apporter une valeur ajoutée significative pour saisir les tendances saisonnières puisque la colonne du mois fournit déjà cette information. La suppression de la colonne de la date peut réduire la dimensionnalité de l'ensemble de données sans avoir d'impact négatif sur la précision des prévisions météorologiques.

Devenez un scientifique ML

Améliorez vos connaissances en Python pour devenir un scientifique spécialisé dans l'apprentissage automatique.
Commencez à apprendre gratuitement

Types de caractéristiques dans l'apprentissage automatique

Avant d'aborder les différentes techniques d'ingénierie des fonctionnalités, commençons par comprendre les types de fonctionnalités disponibles.

Caractéristiques numériques 

Comme leur nom l'indique, les caractéristiques numériques représentent les données sous forme de nombres. Il s'agit de variables quantitatives continues. Les exemples incluent la taille, l'âge et le salaire. 

Caractéristiques catégorielles

Une colonne catégorielle ne peut contenir que des caractéristiques discrètes. Par exemple, le sexe d'une personne est une colonne catégorielle, car il ne peut y avoir que quelques types de sexe. Le mois de naissance est un autre exemple, car les valeurs doivent être comprises entre janvier et décembre. 

Les variables catégorielles sont elles-mêmes divisées en types binaires et non binaires. Les variables binaires ont deux catégories possibles, tandis que les caractéristiques non binaires peuvent avoir plusieurs catégories. 

Caractéristiques textuelles et chronologiques 

Les colonnes textuelles contiennent uniquement des données textuelles. Il peut s'agir, par exemple, d'avis sur des produits ou de colonnes de description de produits dans un ensemble de données sur le commerce de détail. 

D'autre part, les caractéristiques des séries temporelles représentent des données ponctuelles, telles que les ventes hebdomadaires ou les fluctuations du cours des actions sur une année.

Types de caractéristiques dans l'apprentissage automatique

Image par l'auteur

Techniques d'ingénierie des fonctionnalités

L'ingénierie des caractéristiques offre diverses techniques puissantes pour convertir les colonnes brutes en caractéristiques souhaitables. Nous en présentons ici quelques-uns. 

Traitement des valeurs manquantes

Les valeurs manquantes peuvent fausser les performances du modèle, c'est pourquoi il est essentiel de les traiter correctement. Il existe deux approches principales :

  • Imputation : L'imputation est le processus de remplissage des valeurs manquantes à l'aide des informations disponibles. Par exemple, vous pouvez utiliser les valeurs moyenne, mode et médiane pour remplacer les valeurs manquantes. 
  • Suppression : Cette méthode supprime les lignes contenant des valeurs manquantes et convient le mieux lorsque les données manquantes représentent moins de 10 % de la taille de l'ensemble de données. 

Pour un guide approfondi sur le traitement des données manquantes, lisez ce tutoriel Techniques pour traiter les données manquantes ou explorez ce cours Traiter les données manquantes en Python.

Traitement des valeurs aberrantes 

Les valeurs aberrantes sont des valeurs anormales significativement différentes du reste des points de données. Par exemple, si vous disposez d'un ensemble de données sur les salaires dont la plupart des observations se situent entre 90 000 et 120 000 dollars, un salaire de 400 000 ou 10 000 dollars est une valeur aberrante. 

  • Remplacer : Vous pouvez remplacer les valeurs aberrantes par un nombre statistique tel que le maximum ou le minimum de la colonne.
  • Transformations : Appliquez des transformations telles que le logarithme ou la racine carrée pour réduire l'impact. 
  • Modèles robustes : Utilisez des modèles moins sensibles aux valeurs aberrantes. Les arbres de décision, le gradient boosting et la régression ridge sont moins affectés par les valeurs aberrantes. 
  • Supprimer : Si aucune de ces méthodes ne fonctionne, l'élimination des valeurs aberrantes de l'ensemble des données est la dernière option.

Encodage de variables catégorielles

Les modèles d'apprentissage automatique ne peuvent pas traiter directement les variables catégorielles, qui doivent donc être converties en représentations numériques. Nous examinons ci-dessous quelques techniques d'encodage courantes. 

  • Encodage à chaud : Chaque catégorie d'une caractéristique catégorielle est représentée par une colonne distincte, avec une valeur de 1 si la catégorie est présente dans l'échantillon et de 0 pour toutes les autres colonnes. L'exemple ci-dessous l'explique.

Considérez un ensemble de données avec la caractéristique catégorielle suivante :

Nom 

Genre

John 

Homme

Rachel

Femme

Emma 

Femme

En utilisant l'encodage à une touche, nous créons des colonnes distinctes pour chaque catégorie possible dans la caractéristique Gender :

Nom

Femme

Homme

John

0

1

Richale

1

0

Emma

1

0

Comme Jean est un homme, la colonne "Homme" reçoit une adresse 1, tandis que la colonne "Femme" reste 0. De même, Rachel et Emma étant des femmes, la colonne "Femme" est 1 et la colonne "Homme" est 0.

Pour un tutoriel complet sur l'encodage one-hot en Python, consultez ce tutoriel sur l'encodage one-hot.

  • Codage des étiquettes : Le codage des étiquettes attribue une valeur numérique unique à chaque catégorie d'une caractéristique catégorielle. Cette approche est utile pour les données ordinales (où les catégories ont un ordre significatif) mais peut poser des problèmes pour les variables catégorielles non ordinales, car le modèle peut interpréter à tort les valeurs numériques comme ayant un classement inhérent.

Considérons un ensemble de données avec une colonne Location contenant des valeurs catégorielles :

Localisation 

Valeur codée

New York (en anglais) 

1

Californie 

2

Texas

3

Californie

2

Texas

3

Chaque emplacement unique se voit attribuer une valeur numérique distincte. Cependant, comme la Californie (2) n'est pas intrinsèquement "entre" New York (1) et le Texas (3), l'utilisation du codage des étiquettes pour des données non ordinales peut conduire à des hypothèses de modèle trompeuses. Dans ce cas, il est souvent préférable d'opter pour un codage à un seul point afin d'éviter d'impliquer une relation numérique involontaire entre les catégories.

  • Codage ordinal : Le codage ordinal est similaire au codage des étiquettes, mais il est spécifiquement utilisé lorsque les valeurs catégorielles ont un ordre significatif. Au lieu d'attribuer des valeurs numériques arbitraires, il établit des catégories sur la base de leur classement. Cela permet de s'assurer que les valeurs les plus élevées correspondent aux catégories les mieux classées.

Considérez une colonne Education level avec les catégories suivantes :

Niveau d'éducation

Valeur codée

UG (premier cycle)

1

PG (Postgraduate)

2

PhD

3

Étant donné qu'un doctorat représente un niveau d'éducation plus élevé qu'un diplôme d'études supérieures, qui est lui-même plus élevé qu'un diplôme d'études supérieures, les valeurs numériques attribuées reflètent ce classement.

  • Codage cible : Remplace chaque valeur catégorielle par la moyenne des valeurs de la variable cible correspondante. La variable cible est la variable dépendante que le modèle tente de prédire. Cette technique est particulièrement utile lorsqu'il s'agit de caractéristiques catégorielles à cardinalité élevée (c'est-à-dire celles qui comportent de nombreuses valeurs uniques), car elle permet de réduire la dimensionnalité tout en conservant les informations pertinentes.

Considérez un ensemble de données dans lequel Location est une caractéristique catégorielle et Target variable représente un résultat numérique :

Localisation

Variable cible

New York (en anglais) 

2

Californie 

3

Texas

5

Californie

1

Texas

4

Pour coder la colonne Location, nous calculons la moyenne de Target variable pour chaque catégorie unique :

  • Californie : (3 + 1) / 2 = 2
  • Texas : (5 + 4) / 2 = 4.5
  • New York : Il n'y a qu'une seule valeur (2), elle reste donc 2

Localisation

Valeur codée

New York (en anglais) 

2

Californie 

2

Texas

4.5

Californie

2

Texas

4.5

Si vous recherchez un guide plus complet sur le traitement des données catégorielles, ce tutoriel sur le traitement des données catégorielles vous apportera des informations supplémentaires.

Mise à l'échelle des fonctionnalités 

La mise à l'échelle des caractéristiques garantit que les caractéristiques numériques se situent dans une fourchette normalisée, ce qui empêche certaines caractéristiques de dominer le processus d'apprentissage en raison de leurs valeurs plus importantes.

Les modèles d'apprentissage automatique qui reposent sur des calculs basés sur la distance (par exemple, la régression linéaire, les voisins les plus proches et les réseaux neuronaux) peuvent être affectés lorsque les caractéristiques ont des échelles très différentes.

Prenons l'exemple d'un ensemble de données relatives à un employé, avec les caractéristiques suivantes :

  • L'âge varie de 20 à 60 ans
  • Les revenus sont compris entre 30 000 et 150 000 dollars.

Étant donné que le revenu a des valeurs beaucoup plus importantes que l'âge, un modèle pourrait accorder plus d'importance au revenu simplement en raison de son échelle, et non parce qu'il est réellement plus pertinent.

Voici quelques techniques courantes :

  • Normalisation (échelle min-max) : Cette méthode met à l'échelle toutes les valeurs des caractéristiques pour qu'elles soient comprises entre 0 et 1. Il soustrait la valeur minimale de la colonne de chaque point de données et la divise ensuite par l'étendue de cette colonne, qui est la différence entre les valeurs maximale et minimale. La formule est la suivante :

Valeur mise à l'échelle =( point de données - min(colonne))/(max(colonne) - min(colonne))

  • Normalisation (échelle des scores Z) : Ainsi, toutes les caractéristiques ont une moyenne de 0 et un écart-type de 1. La formule est la suivante : la moyenne d'une colonne est soustraite de chaque point de données de cette colonne, et le résidu est divisé par l'écart-type de cette caractéristique. 

Valeur mise à l'échelle =( point de données - moyenne(colonne))/(std(colonne))

Pour une comparaison détaillée de la normalisation et de la standardisation, consultez le site Normalization vs. Guide de normalisation.

Créer de nouvelles fonctionnalités

La création de nouvelles caractéristiques significatives à partir de données existantes permet d'obtenir des informations plus logiques sur le modèle. 

Par exemple, dans un ensemble de données de prévision du prix des logements, si vous disposez séparément des colonnes length et breadth, vous pouvez dériver une nouvelle caractéristique : area = length * breath qui peut être directement liée à la variable cible, price. La saisie de cette caractéristique area dans le modèle simplifie la découverte de modèles cachés. 

Sélection des caractéristiques

La sélection des caractéristiques ne conserve que les caractéristiques pertinentes en supprimant les colonnes inutiles. Le fait de se concentrer sur les données les plus informatives permet d'éviter l'ajustement excessif, de réduire la complexité des calculs et d'améliorer les performances du modèle. Voici quelques techniques :

  • Méthodes de filtrage : Cette méthode sélectionne les caractéristiques importantes sur la base de leurs propriétés statistiques. Par exemple, nous pouvons supprimer les caractéristiques qui contiennent les mêmes informations à l'aide d'une carte thermique de corrélation. D'autres techniques comprennent le test du chi carré, l'ANOVA et les méthodes de gain d'information.
  • Méthodes d'habillage : Ces méthodes entraînent un modèle prédictif de manière itérative en utilisant différentes combinaisons de sous-ensembles de caractéristiques, et le meilleur sous-ensemble, dont les performances du modèle sont optimisées, est choisi. Les méthodes de sélection avant, de sélection arrière et d'élimination récursive entrent dans cette catégorie. 

Ingénierie des fonctionnalités en Python : Un exemple pratique

La meilleure façon de comprendre l'ingénierie des fonctionnalités est de la mettre en pratique.

La "prédiction du prix des maisons" est un énorme ensemble de données réelles comportant 81 colonnes. Je l'ai sélectionné pour la diversité de ses caractéristiques, qui peuvent vous aider à mieux comprendre les techniques d'ingénierie des caractéristiques dans la pratique.

Pour commencer :

  1. Téléchargez le jeu de données sur Kaggle.
  2. Chargez-les dans un DataFrame Pandas pour l'analyse et l'ingénierie des caractéristiques.

Traitement des valeurs manquantes catégorielles

Le code suivant identifie les colonnes catégorielles de l'ensemble de données et remplace leurs valeurs manquantes par la catégorie la plus fréquente :

import pandas as pd

# Load dataset (replace 'your_file.csv' with the actual file name)
df = pd.read_csv('your_file.csv')

# Select categorical columns
categorical_cols = df.select_dtypes(include=['object']).columns

# Replace missing values with the most frequent category (mode)
for col in categorical_cols:
    mode = df[col].mode()[0]  # Get the most common value
    df[col].fillna(mode, inplace=True)  # Fill missing values

Traitement des valeurs numériques manquantes

Nous traitons les valeurs manquantes numériques en les remplaçant par la moyenne ou la médiane. La moyenne est une option plus populaire pour les données statistiquement distribuées, tandis que la médiane fonctionne bien lorsque la colonne présente des valeurs aberrantes. Nous allons donc vérifier s'il y a des valeurs aberrantes et décider de la méthode. 

Pour visualiser les valeurs aberrantes potentielles, nous pouvons utiliser des diagrammes en boîte, qui permettent d'identifier les valeurs extrêmes. Vous trouverez ci-dessous une implémentation Python permettant de détecter les valeurs aberrantes dans des colonnes numériques sélectionnées :

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

features = ['LotFrontage', 'MasVnrArea', 'GarageYrBlt']  

# Plot box plots
df[features]=np.log(df[features])
df[features].boxplot(figsize=(8, 4))

plt.title('Box Plot for Outlier Detection')
plt.ylabel('Values')
plt.xticks(rotation=45)
plt.show()

Sortie :

Diagramme en boîte pour la détection des valeurs aberrantes

Les diagrammes en boîte ci-dessus présentent des points en dehors des moustaches : ce sont les valeurs aberrantes. Remplaçons donc les valeurs manquantes par la médiane.

Code pour remplacer les valeurs nulles par des valeurs médianes :

import pandas as pd
# Select numerical columns
numerical_columns = df.select_dtypes(include=['number']).columns
for col in numerical_columns:
    median = df[col].median()  
    df[col].fillna(median, inplace=True)  # Replace nulls with median

Créer de nouvelles fonctionnalités

Les colonnes telles que YearBuilt, YearRemodAdd, GarageYrBlt, et YrSold contiennent des années (par exemple, 2001, 1976) qui n'influencent pas directement la variable cible. Bien que ces valeurs absolues n'aient pas d'incidence directe sur le prix des maisons, nous pouvons obtenir des informations plus utiles en calculant l'âge de la maison ou de la rénovation au moment de la vente.

Par exemple, au lieu d'utiliser YearBuilt, nous pouvons créer une nouvelle caractéristique : House Age=YrSold-YearBuilt

pour créer ces nouvelles fonctionnalités :

# Get columns that contain 'Yr' or 'Year'
year_columns = [feature for feature in numerical_columns if 'Yr' in feature or 'Year' in feature]

# Convert year values into age-related features
for col in year_columns:
    df[col] = df['YrSold'] - df[col]

Transformation des caractéristiques

Dans l'apprentissage automatique, les caractéristiques numériques asymétriques peuvent avoir un impact négatif sur les performances du modèle, en particulier pour les modèles qui supposent une distribution normale (par exemple, la régression linéaire). Pour corriger ce problème, nous appliquons une transformation logarithmique.

Avant d'appliquer une transformation logarithmique, nous devons identifier les caractéristiques asymétriques. Cependant, nous excluons les colonnes contenant des zéros car le logarithme de zéro n'est pas défini.

Voici une implémentation en Python pour identifier les colonnes asymétriques :

import pandas as pd

# Get numerical columns
numerical_columns = df.select_dtypes(include=['number']).columns

# Identify columns containing zeros
numerical_0s = df.loc[:, (df == 0).any()].select_dtypes(include=['number']).columns

# Remove columns that contain zeros from consideration
numerical_columns = numerical_columns.difference(numerical_0s)

# Calculate skewness for the remaining numerical columns
skewness = df[numerical_columns].skew()

# Set threshold for skewness (e.g., absolute value > 1 indicates high skewness)
skewed_columns = skewness[abs(skewness) > 1]

# Display skewed columns
print("Skewed Columns:")
print(skewed_columns)

Sortie :

Nous utiliserons la distribution log-normale pour convertir ces cinq colonnes asymétriques enune distribution gaussienne:

import numpy as np

# The list of highly skewed features identified earlier
skew_features = ['LotFrontage', 'LotArea', '1stFlrSF', 'GrLivArea', 'SalePrice']

# Apply log transformation to each skewed feature
for col in skew_features:
    df[col] = np.log(df[col])

Convertir les caractéristiques catégorielles en valeurs numériques

Nous avons abordé précédemment plusieurs techniques d'encodage ; dans cet exemple, nous appliquerons l'encodage cible.

# Select categorical variables
categorical_columns = df.select_dtypes(include=['object', 'category']).columns

# Apply target encoding
for col in categorical_columns:
    # Compute mean SalePrice for each category
    labels_ordered = df.groupby([col])['SalePrice'].mean().sort_values().index
    
    # Assign numerical values based on target variable mean
    labels_ordered = {x: i for i, x in enumerate(labels_ordered, 0)}
    
    # Map encoded values back to the dataframe
    df[col] = df[col].map(labels_ordered)

Dans le code ci-dessus, la variable cible est SalePrice, nous avons donc regroupé les données par colonne catégorielle et calculé la moyenne SalePrice pour chaque groupe. Ces valeurs moyennes ont ensuite été attribuées aux valeurs catégorielles correspondantes dans cette colonne.

Notre ensemble de données est maintenant prêt pour l'apprentissage automatique ! 

Si vous souhaitez renforcer votre compréhension des concepts de l'apprentissage supervisé et de la manière dont les modèles utilisent les caractéristiques techniques, ce cours sur l'apprentissage supervisé avec Scikit-Learn est uneexcellente ressource.

Outils et bibliothèques pour l'ingénierie des fonctionnalités

Dans cette section, nous allons passer en revue les bibliothèques Python et les outils d'automatisation les plus utilisés pour mettre en œuvre l'ingénierie des fonctionnalités. 

Pandas

Pandas est le framework Python le plus utilisé pour traiter les données structurées. Il effectue de nombreuses étapes d'ingénierie des caractéristiques, telles que la transformation, l'agrégation des données et l'extraction des caractéristiques. Les Pandas facilitent également le nettoyage et la manipulation des données.

Si vous êtes novice en matière de pandas, ce cours sur la manipulation des données avec pandas est un excellent point de départ.

Scikit-Learn

Scikit-learn est une puissante bibliothèque d'apprentissage automatique dotée de divers outils pour l'ingénierie des caractéristiques. Il contient des méthodes telles que OneHotEncoder et LabelEncoder pour convertir les variables catégorielles en variables numériques. Il propose également des méthodes de mise à l'échelle des caractéristiques telles que StandardScaler et Minmaxscaler

Moteur de fonctionnalités

Feature-engine est une bibliothèque Python ouverte-source offrant une variété de transformateurs pour simplifier l'ingénierie des fonctionnalités. Ces transformateurs sont des outils spécialisés pour des tâches spécifiques, telles que l'imputation des données manquantes, le traitement des valeurs aberrantes, la sélection des caractéristiques et la discrétisation. Entièrement compatibles avec scikit-learn, ces transformateurs peuvent être transmis comme paramètres d'entrée pour l'ajustement des hyperparamètres.

Outils d'ingénierie automatisée

  • Featuretools : Featuretools est une bibliothèque open-source pour l'automatisation de l'ingénierie des fonctionnalités. Le cadre est principalement utilisé pour créer de nouvelles fonctionnalités à partir d'une base de données relationnelle. Il s'appuie sur l'algorithme DFS (deep feature synthesis), qui construit de nouvelles caractéristiques sur la base d'opérations de transformation et d'agrégation. 
  • TSFresh : TSFresh, connu sous le nom de Time Series Feature Extraction based on Scalable Hypothesis Tests, est spécialement conçu pour extraire des caractéristiques significatives à partir de données de séries temporelles. La bibliothèque effectue des tests d'hypothèse afin de sélectionner des caractéristiques statistiquement significatives pour la prédiction. 
  • Autofeat : Labibliothèque Autofeaty automatise la sélection, la création et la transformation des caractéristiques afin d'améliorer la précision des modèles linéaires. Par exemple, au lieu de fit(), la bibliothèque propose une méthode fit_transform() qui effectue simultanément des opérations d'ajustement et de transformation sur les données d'entrée. En outre, les modèles FeatureSelector et AutoFeatLight sont disponibles pour la sélection et la mise à l'échelle des caractéristiques.

Meilleures pratiques pour l'ingénierie des fonctionnalités

Pour mettre en œuvre efficacement l'ingénierie des fonctionnalités, concentrez-vous sur les meilleures pratiques suivantes.

Connaissez vos données

En comprenant la signification et l'importance de chaque caractéristique, il vous sera beaucoup plus facile d'utiliser des techniques telles que la sélection ou l'extraction de caractéristiques. Je vous suggère de faire des recherches sur vos données et sur les connaissances pertinentes du domaine pour une ingénierie des fonctionnalités efficace.

Effectuer une analyse exploratoire des données (AED)

Utilisez les bibliothèques Python telles que Pandas et Matplotlib pour effectuer une analyse exploratoire complète des données,comme l'exploration des informations statistiques, des visualisations et des corrélations pour trouver des modèles et des relations potentielles au sein des données.

Créer des fonctions d'interaction

La création de caractéristiques d'interaction implique d'identifier les relations entre les caractéristiques existantes et d'en dériver de nouvelles. Par exemple, dans le cadre de la prédiction du prix des maisons, le calcul de l'âge d'une maison en soustrayant l'année de sa construction de l'année en cours permet de mettre en évidence des tendances, telles que la baisse du prix des maisons au fil du temps. 

Choisissez votre modèle à l'avance

Différents modèles d'apprentissage automatique nécessitent différentes étapes d'ingénierie des caractéristiques. Par exemple, les modèles tels que la régression linéaire ou multiple, les SVM et les KNN bénéficient souvent de la normalisation des caractéristiques, mais cette technique n'aide pas les modèles basés sur les arbres. 

Ainsi, le fait de décider à l'avance de votre modèle peut vous aider à construire un pipeline d'ingénierie fonctionnelle efficace pour votre cas d'utilisation. 

Conclusion

L'ingénierie des fonctionnalités fait partie intégrante de l'élaboration de solutions d'apprentissage automatique, vous permettant d'exploiter les fonctionnalités de la manière la plus efficace possible. Ce processus est mis en œuvre par les scientifiques des données ou les ingénieurs ML lorsqu'ils traitent un ensemble de données. Si vous êtes un professionnel des données ou si vous souhaitez le devenir, la maîtrise de toutes les techniques mentionnées dans cet article vous aidera à faire progresser votre carrière !

Pour explorer ces techniques plus en détail, consultez lescours DataCampsur l'ingénierie des fonctionnalités pour l'apprentissage automatique et l'ingénierie des fonctionnalités pour le NLP. Il existe également un cours sur l'ingénierie des fonctionnalités pour les programmeurs R.

Renforcer les compétences en matière d'apprentissage automatique

Améliorez vos compétences en matière d'apprentissage automatique au niveau de la production.

FAQ

En quoi l'ingénierie des caractéristiques diffère-t-elle de la sélection des caractéristiques ?

L'ingénierie des caractéristiques consiste à créer de nouvelles caractéristiques ou à transformer les caractéristiques existantes afin d'améliorer les performances du modèle. La sélection des caractéristiques, quant à elle, est le processus qui consiste à choisir les caractéristiques les plus pertinentes et à écarter celles qui ne sont pas pertinentes ou redondantes afin d'éviter l'ajustement excessif et de réduire la complexité du modèle.

L'ingénierie des fonctionnalités peut-elle être automatisée ?

Oui ! Les outils d'ingénierie des fonctionnalités automatisées tels que FeatureTools, les bibliothèques AutoML (par exemple, Auto-sklearn, H2O.ai) et les tableaux AutoML de Google peuvent créer et transformer automatiquement les fonctionnalités, ce qui permet de gagner du temps et d'économiser des efforts. Cependant, la connaissance du domaine reste cruciale pour interpréter et sélectionner les meilleures caractéristiques.

Comment l'ingénierie des caractéristiques affecte-t-elle l'interprétabilité des modèles ?

L'ingénierie des caractéristiques peut améliorer ou réduire l'interprétabilité, en fonction des techniques utilisées. Par exemple :

  • La création de caractéristiques significatives (par exemple, "âge de la maison" au lieu de "année de construction") améliore l'interprétabilité.
  • L'application de transformations telles que l'ACP (analyse en composantes principales) peut rendre les caractéristiques moins interprétables mais améliorer les performances du modèle.

L'ingénierie des fonctionnalités dépend-elle du type de modèle d'apprentissage automatique ?

Oui ! Différents modèles bénéficient de différentes techniques d'ingénierie des caractéristiques :

  • Modèles linéaires (par exemple, régression linéaire, régression logistique) - Nécessitent une mise à l'échelle des caractéristiques et bénéficient souvent de transformations polynomiales des caractéristiques.
  • Modèles à base d'arbres (par exemple, arbres de décision, forêt aléatoire, XGBoost) - Ils traitent bien les données non échelonnées et bénéficient souvent davantage de la sélection des caractéristiques que des transformations.
  • Modèles d'apprentissage profond - Préférer les caractéristiques brutes, et les transformations telles que les couches d'intégration aident à traiter les données catégorielles.

Qu'est-ce qu'un croisement de traits et quand dois-je l'utiliser ?

Le croisement de caractéristiques est le processus qui consiste à combiner deux ou plusieurs caractéristiques pour créer une nouvelle caractéristique qui capture les interactions entre elles. Exemple :

  • Au lieu d'utiliser séparément l'"âge" et le "revenu", créez un "ratio revenu/âge" pour rendre compte de la stabilité financière des différents groupes d'âge.
  • Utilisez le croisement de caractéristiques lorsque les relations entre les variables ont un impact non linéaire sur la variable cible.

Comment puis-je évaluer si une fonctionnalité améliore les performances du modèle ?

Vous pouvez évaluer l'importance des caractéristiques à l'aide de :

  • Importance de la permutation - Mesure l'impact de la permutation d'une caractéristique sur la précision du modèle.
  • Importance des caractéristiques dans les modèles arborescents - De nombreux modèles tels que les forêts aléatoires fournissent des scores intégrés d'importance des caractéristiques.
  • Performance de la validation croisée - Comparez la précision du modèle avec et sans une caractéristique.

Qu'est-ce que l'ingénierie des fonctions d'interaction ?

L'ingénierie des fonctionnalités d'interaction consiste à créer de nouvelles fonctionnalités basées sur les interactions entre les fonctionnalités existantes. Il peut s'agir de

  • Multiplication (caractéristiques du produit) : Combinaison de deux caractéristiques (par exemple, "Taille × Poids" pour l'IMC).
  • Ratios : Division d'une caractéristique par une autre (par exemple, "Prix par pied carré").
  • Caractéristiques polynomiales : Élever les caractéristiques à une puissance (par exemple, "Age²" pour les relations non linéaires).

Comment gérez-vous les variables catégorielles à cardinalité élevée ?

Pour les variables catégorielles comportant de nombreuses valeurs uniques (par exemple, les codes postaux, les identifiants d'utilisateur) :

  • Encodage cible : Remplacez les catégories par la moyenne de la variable cible.
  • Couches d'intégration (pour l'apprentissage profond) : Apprenez les représentations des catégories en dimensions inférieures.
  • Codage par hachage : Attribuez des catégories aux godets à l'aide d'une fonction de hachage.

Srujana Maddula's photo
Author
Srujana Maddula
LinkedIn

Srujana est rédactrice technique indépendante et titulaire d'un diplôme de quatre ans en informatique. Écrire sur divers sujets, notamment la science des données, l'informatique en nuage, le développement, la programmation, la sécurité et bien d'autres encore, est pour elle une évidence. Elle aime la littérature classique et la découverte de nouvelles destinations.

Sujets

Apprenez-en plus sur l'apprentissage automatique grâce à ces cours !

Certification disponible

Cours

Prétraitement pour l'apprentissage automatique en Python

4 hr
54.6K
Apprenez à nettoyer et à préparer vos données pour l'apprentissage automatique !
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow