AccueilBlogTest technique feature engineering ML : creer de bonnes features
Guide recrutement data

Test technique feature engineering ML : creer de bonnes features

Le feature engineering est souvent ce qui differentie un bon modele d un excellent modele. En entretien, on evalue la capacite a creer des features pertinentes et a eviter les pieges classiques.

Data Builder·Juin 2025·7 min de lecture·Data Scientist
Sommaire
  1. Encodage des variables categorielles
  2. Gestion des valeurs manquantes
  3. Features temporelles
  4. Normalisation et scaling
  5. Selection de features
  6. Data leakage
  7. Grille

1Encodage des variables categorielles

Question discriminante

Quand utilisez-vous One-Hot Encoding vs Target Encoding vs Ordinal Encoding ?

import pandas as pd from sklearn.preprocessing import LabelEncoder from category_encoders import TargetEncoder # One-Hot Encoding : variables nominales a faible cardinalite (<15 valeurs) pd.get_dummies(df, columns=['genre', 'region'], drop_first=True) # Target Encoding : variables a forte cardinalite (>15 valeurs) # Encode par la moyenne de la target par categorie enc = TargetEncoder(cols=['city', 'product_category']) df_encoded = enc.fit_transform(df, df['churned']) # Attention : risque de data leakage sur le train set # Toujours utiliser cross-validation ou leave-one-out # Ordinal Encoding : variables ordonnees order_map = {'faible': 0, 'moyen': 1, 'eleve': 2} df['niveau_encoded'] = df['niveau'].map(order_map)

2Gestion des valeurs manquantes

Question discriminante

Quelles strategies de gestion des valeurs manquantes utilisez-vous ?

from sklearn.impute import SimpleImputer, KNNImputer # Imputation simple imputer_median = SimpleImputer(strategy='median') # numerique robuste imputer_mode = SimpleImputer(strategy='most_frequent') # categoriel # KNN Imputer : impute selon les k voisins les plus proches knn_imputer = KNNImputer(n_neighbors=5) # Ajouter un indicateur de valeur manquante df['income_missing'] = df['income'].isna().astype(int) df['income'].fillna(df['income'].median(), inplace=True) # Supprimer : seulement si <5% de valeurs manquantes et MCAR # (Missing Completely At Random)

3Features temporelles

Question discriminante

Quelles features temporelles creez-vous classiquement pour une serie temporelle ?

df['date'] = pd.to_datetime(df['date']) # Features calendaires df['year'] = df['date'].dt.year df['month'] = df['date'].dt.month df['day_of_week'] = df['date'].dt.dayofweek df['is_weekend'] = df['day_of_week'].isin([5, 6]).astype(int) df['quarter'] = df['date'].dt.quarter df['is_month_end']= df['date'].dt.is_month_end.astype(int) # Encodage cyclique (eviter la discontinuite 12->1 pour les mois) import numpy as np df['month_sin'] = np.sin(2 * np.pi * df['month'] / 12) df['month_cos'] = np.cos(2 * np.pi * df['month'] / 12) # Lag features (comportement passe) df['revenue_lag_7d'] = df.groupby('customer_id')['revenue'].shift(7) df['revenue_lag_30d'] = df.groupby('customer_id')['revenue'].shift(30) df['revenue_roll_mean_7d'] = df.groupby('customer_id')['revenue'].transform( lambda x: x.rolling(7).mean())

4Normalisation : quand et comment

Question discriminante

Pourquoi les arbres de decision n ont-ils pas besoin de normalisation ? Et les reseaux de neurones ?

5Selection de features

Question discriminante

Comment selectionnez-vous les features les plus importantes pour votre modele ?

import shap from sklearn.feature_selection import mutual_info_classif, RFE # Methode 1 : importances XGBoost model.fit(X_train, y_train) importances = pd.Series(model.feature_importances_, index=X_train.columns) top_20 = importances.nlargest(20) # Methode 2 : SHAP values (plus fiable) explainer = shap.TreeExplainer(model) shap_values = explainer.shap_values(X_train) shap.summary_plot(shap_values, X_train, max_display=20) # Methode 3 : Mutual Information mi_scores = mutual_info_classif(X_train, y_train) # Attention : collinearite corr_matrix = X_train.corr().abs() # Supprimer les features avec correlation > 0.95

6Data leakage : le piege majeur

Question discriminante

Qu est-ce que le data leakage ? Donnez un exemple concret.

7Grille par niveau

NiveauMaitriseSignal GONO-GO
JuniorEncodages basiques, imputation simple, scalingSait faire un OHE, impute par la mediane, sait quand normaliserApplique le scaler avant le train/test split
ConfirmeTarget encoding, features temporelles, SHAP selectionUtilise le Target Encoding avec cross-val, cree des lag features, selectionne avec SHAPNe sait pas ce qu est le data leakage, ne cree pas de lag features
SeniorPipeline sklearn complet, feature store, prevention leakageA concu un pipeline sklearn avec ColumnTransformer, connait les feature storesNe peut pas expliquer un cas concret de data leakage

Vous recrutez un Data Scientist ?

Premier entretien gratuit. Rapport GO/NO-GO sous 48h.