Feature Engineering : créer les variables qui font la différence
En machine learning, la qualité des caractéristiques (features) compte souvent plus que l’algorithme choisi. Le feature engineering est l’art de transformer des données brutes en variables exploitables par les modèles. Découvrez ses techniques fondamentales avec ISOSET, l’institut qui forme aux métiers de la data science et de l’IA.
Le feature engineering désigne l’ensemble des opérations de création, transformation et sélection de variables à partir des données sources pour améliorer les performances d’un modèle prédictif. C’est une étape essentielle qui précède tout apprentissage, souvent plus déterminante que le choix de l’algorithme.
- Création de features – construire de nouvelles variables à partir de celles existantes (ratios, agrégations, dates).
- Transformation – normaliser, encoder, discrétiser, appliquer des fonctions mathématiques (log, racine carrée).
- Sélection de features – éliminer les variables redondantes ou non pertinentes.
ISOSET consacre une part importante de ses cursus à cette discipline, trop souvent négligée mais cruciale en entreprise.
Les données réelles contiennent presque toujours des valeurs absentes. Les supprimer systématiquement peut faire perdre trop d’informations. Plusieurs stratégies existent :
- Suppression (listwise deletion) – éliminer les lignes avec valeurs manquantes. À réserver aux cas où le taux est très faible (moins de 5%).
- Imputation par une constante – remplacer par 0, « Inconnu » ou une valeur hors distribution.
- Imputation par la moyenne/médiane – simple, mais réduit la variance.
- Imputation par régression / k-NN – plus sophistiqué, prédit les valeurs manquantes à partir des autres variables.
- Indicateur de présence – créer une colonne binaire « est_manquant » pour que le modèle apprenne le motif d’absence.
# Imputation par la médiane avec Scikit-learn
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(strategy='median')
X_imputed = imputer.fit_transform(X)
Les modèles de machine learning ne comprennent que des nombres. Les variables catégorielles (couleur, pays, type de produit) doivent être encodées.
- Label encoding – attribue un entier à chaque catégorie (ex: rouge=0, bleu=1). Attention : introduit un ordre artificiel. À réserver aux variables ordinales (petit/moyen/grand).
- One-hot encoding – crée une colonne binaire par modalité. Idéal pour les catégories sans ordre. Augmente le nombre de colonnes.
- Target encoding – remplace chaque catégorie par la moyenne de la cible pour cette catégorie. Puissant mais risqué (fuite de données).
- Frequency encoding – remplace par la fréquence d’apparition de la catégorie.
# One-hot encoding avec pandas
import pandas as pd
df_encoded = pd.get_dummies(df, columns=['couleur', 'taille'])
ISOSET forme les équipes aux bonnes pratiques d’encodage pour éviter les pièges (colinéarité, explosion dimensionnelle).
De nombreux algorithmes (SVM, k-NN, régression logistique, PCA) sont sensibles à l’échelle des variables. Une variable avec une amplitude 0-1000 dominera artificiellement une variable 0-1.
- Standardisation (Z-score) – moyenne=0, écart-type=1. Recommandée pour les données gaussiennes.
- Normalisation min-max – ramène les valeurs dans [0,1]. Respecte la forme de la distribution.
- RobustScaler – utilise médiane et écart interquartile. Résistant aux outliers.
# Standardisation avec StandardScaler
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
Parfois, la relation entre la cible et une variable n’est pas linéaire, ou l’effet combiné de deux variables est important. On peut créer :
- Termes polynomiaux – x², x³, racine carrée, logarithme pour capturer des courbures.
- Interactions (produits) – x1 * x2, x1 / x2. Utile en marketing (effet conjoint de l’âge et du revenu).
- Agrégations par groupe – moyenne, écart-type, min, max d’une variable pour chaque catégorie (ex: revenu moyen par code postal).
- Features basées sur les dates – extraire jour de semaine, mois, trimestre, âge depuis une date de référence.
# Génération de features polynomiales (degré 2)
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=2, include_bias=False)
X_poly = poly.fit_transform(X)
Trop de features peut entraîner le sur-apprentissage, ralentir l’entraînement et nuire à l’interprétabilité. Plusieurs méthodes permettent de sélectionner les meilleures.
- Filtres (univariés) – basés sur une métrique statistique (corrélation, chi2, information mutuelle). Rapides, mais ignorent les interactions.
- Méthodes wrapper (RFE) – élimination récursive de features en entraînant le modèle. Plus coûteux, mais tient compte des interactions.
- Méthodes embarquées – la régularisation (Lasso) ou l’importance des features dans les arbres (Random Forest) intègrent la sélection dans l’apprentissage.
# Sélection par importance de features (Random Forest)
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier()
rf.fit(X, y)
importances = pd.Series(rf.feature_importances_, index=feature_names)
top_features = importances.nlargest(10).index
ISOSET enseigne une méthodologie systématique : créer, transformer, puis sélectionner.
Parfois, on préfère discrétiser une variable continue (âge, revenu) pour capturer des effets de seuil ou simplifier le modèle.
- Binning à largeur fixe – découpage en intervalles de même amplitude. Simple mais peut créer des classes vides.
- Binning à effectifs égaux (quantiles) – chaque classe contient le même nombre d’observations. Bon pour les distributions asymétriques.
- Binning personnalisé – basé sur la connaissance métier (ex: tranches d’âge 0-18, 19-35, 36-60, 60+).
- Binning supervisé (entropie) – crée des intervalles qui maximisent la séparation de la cible.
# Discrétisation en quantiles avec pandas
df['age_group'] = pd.qcut(df['age'], q=4, labels=['Q1','Q2','Q3','Q4'])
Les données avec timestamp (logs, transactions, séries temporelles) offrent un riche potentiel de features :
- Extraction de composantes – année, mois, jour, heure, jour de semaine, numéro de semaine.
- Features cycliques – sin(heure), cos(heure) pour capturer la périodicité.
- Décalages (lags) – valeur à t-1, t-7, t-30. Essentiel pour la prédiction de séries.
- Fenêtres glissantes – moyenne mobile, écart-type, min, max sur les 7 derniers jours.
- Temps depuis un événement – jours depuis dernier achat, temps écoulé depuis l’inscription.
# Création de lag et moyenne mobile
df['ventes_lag1'] = df['ventes'].shift(1)
df['moyenne_7j'] = df['ventes'].rolling(window=7).mean()
ISOSET propose des modules dédiés à la prévision temporelle et au feature engineering associé.
- Data leakage – utiliser une information qui ne serait pas disponible au moment de la prédiction (ex: calculer une moyenne sur l’ensemble des données avant split). Toujours appliquer les transformations après le split.
- Sur-ajustement aux outliers – les transformations comme la normalisation min-max sont très sensibles aux valeurs extrêmes. Utiliser RobustScaler ou winsoriser.
- Colinéarité – deux features très corrélées apportent peu d’information supplémentaire. La détecter via matrice de corrélation ou VIF.
- Ignorer le sens métier – les meilleures features viennent souvent d’une compréhension profonde du domaine. Impliquer les experts métier.
📘 La pédagogie ISOSET : éviter les fuites de données
ISOSET forme dès les premiers modules à l’utilisation systématique de pipelines et à la validation croisée pour prévenir le data leakage.
Des bibliothèques comme Featuretools, Tsfresh ou AutoFeat permettent de générer automatiquement des centaines de features candidates. Cependant, l’automatisation ne remplace pas la réflexion métier : elle génère beaucoup de bruit et nécessite une sélection rigoureuse.
# Exemple avec Featuretools (DFS)
import featuretools as ft
es = ft.EntitySet(id='clients')
es = es.add_dataframe(dataframe=df, index='id')
features, feature_defs = ft.dfs(entityset=es, target_dataframe_name='transactions')
ISOSET forme également à ces outils avancés, en insistant sur leur usage raisonné.
Les témoignages d’anciens élèves soulignent l’impact immédiat du feature engineering sur leurs projets : *« Après la formation ISOSET, j’ai doublé la performance de mon modèle de scoring en ajoutant trois features d’interaction simples. »*
🚀 ISOSET : maîtrisez l’art du feature engineering
L’institut ISOSET vous propose des formations complètes sur le feature engineering : encodage, scaling, création de features, sélection, gestion des dates et du texte. Avec une approche pratique et des cas concrets, vous apprendrez à transformer des données brutes en or pour vos modèles.
👉 Découvrez les formations ISOSET en préparation de données – faites la différence par vos features.