AccueilBlogTest technique complet Data Scientist : stats, ML, production
Guide recrutement data

Test technique complet Data Scientist : stats, ML, production

Le Data Scientist est souvent le profil le plus difficile à évaluer correctement. Voici la structure complète d un test technique rigoureux, de la statistics au déploiement.

Data Builder·Juin 2025·8 min de lecture·Data Scientist
Sommaire
  1. Ce qu on évalue vraiment
  2. Fondations statistiques
  3. Épreuve Machine Learning
  4. Évaluation des modèles
  5. Cas métier
  6. Capacité à déployer
  7. Grille de décision

1Ce qu on évalue vraiment

Un Data Scientist qui ne peut déployer aucun modèle en production est un coût. Un Data Scientist qui déploie des modèles sans comprendre les statistiques sous-jacentes est un risque. On évalue les deux dimensions.

  • Fondations stat — distributions, tests d hypothèses, intervalle de confiance
  • ML supervisé — classification et régression, choix d algorithme, hyperparamètres
  • Évaluation rigoureuse — métriques adaptées au problème, validation croisée, overfitting
  • Déploiement — packaging, API, monitoring

2Fondations statistiques : ce qu on teste

Question discriminante

Quelle est la différence entre précision (precision) et rappel (recall) ? Dans quel cas privilégiez-vous l un ou l autre ?

from sklearn.metrics import classification_report, confusion_matrix import numpy as np # La matrice de confusion # TP = vrais positifs, FP = faux positifs # FN = faux négatifs, TN = vrais négatifs # Précision = TP / (TP + FP) # Question : parmi les positifs prédits, combien sont vrais ? # À maximiser quand les faux positifs sont coûteux # Ex : détection de spam (envoyer un vrai email en spam = grave) # Rappel = TP / (TP + FN) # Question : parmi les vrais positifs, combien sont détectés ? # À maximiser quand les faux négatifs sont coûteux # Ex : détection de cancer (manquer un vrai cancer = grave) # F1 = 2 * (Précision * Rappel) / (Précision + Rappel) # Compromis entre précision et rappel
  • Classes déséquilibrées — l accuracy est trompeuse si 95% des exemples sont négatifs. Utiliser F1, AUC-ROC, ou PR-AUC
  • Seuil — ajuster le seuil de décision selon le coût métier des erreurs

3Épreuve Machine Learning

Question discriminante

Comment choisissez-vous entre un Random Forest et un XGBoost ? Et entre l un et une régression logistique ?

AlgorithmeForcesFaiblessesQuand l utiliser
Régression LogistiqueInterprétable, rapide, base probabilisteLinéaire, peu performant sur données complexesBaseline, features peu corrélées, besoin d explication
Random ForestRobuste, peu de tuning, OOB errorLent sur gros volumes, peu interprétableDonnées tabulaires, baseline solide
XGBoost / LightGBMPerformances maximales, gère les nullsSurapprentissage facile, tuning complexeCompétitions, production, gros volumes
Réseaux de neuronesImages, texte, séries temporellesDonnées, compute, boîte noireDonnées non structurées, gros volumes

4Évaluation rigoureuse des modèles

Question discriminante

Qu est-ce que le data leakage dans l évaluation d un modèle ? Comment l évitez-vous ?

from sklearn.model_selection import cross_val_score, StratifiedKFold from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression # Pipeline : garantit que le prétraitement est fait # séparément sur chaque fold (pas de leakage) pipeline = Pipeline([ ('scaler', StandardScaler()), ('model', LogisticRegression()) ]) # Stratified K-Fold : respecte la proportion de classes cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42) scores = cross_val_score(pipeline, X, y, cv=cv, scoring='roc_auc') print(f'AUC: {scores.mean():.3f} (+/- {scores.std():.3f})') # Learning curve : détecter l overfitting from sklearn.model_selection import learning_curve train_sizes, train_scores, val_scores = learning_curve( pipeline, X, y, cv=cv, scoring='roc_auc' )
  • Data leakage — fitter le scaler sur tout le dataset avant le split = le modèle voit des informations du test set
  • Solution — utiliser un Pipeline sklearn qui applique le prétraitement dans chaque fold
  • Temporal leakage — pour les séries temporelles, ne jamais utiliser un KFold aléatoire. Utiliser TimeSeriesSplit

5Cas métier : la partie la plus discriminante

Question discriminante

Pourquoi les cas métiers sont-ils plus discriminants que les questions algorithmiques ?

  • Format — 'vous travaillez pour un e-commerce. Le taux de conversion baisse de 15% ce mois-ci. Comment analysez-vous le problème ?' Durée : 20-30 minutes
  • Ce qu on évalue — structuration du problème avant de coder, choix des métriques, hypothèses formulées, cohérence de la démarche
  • Signal Senior — commence par définir les métriques et les hypothèses avant d ouvrir un notebook. Pose des questions sur les données disponibles
  • Signal Junior — ouvre un notebook et commence à coder sans se poser les bonnes questions
  • NO-GO — utilise la précision comme seule métrique sur un problème déséquilibré sans le mentionner

6Capacité à déployer

Question discriminante

Quelles questions posez-vous pour évaluer la capacité de déploiement ?

  • 'Comment packagez-vous un modèle sklearn pour la production ?' — réponse attendue : joblib/pickle + API FastAPI + Docker
  • 'Comment détectez-vous que votre modèle se dégrade en production ?' — réponse attendue : monitoring des distributions d input, suivi des métriques sur les données labelisées récentes
  • 'Quelle est la différence entre MLOps 0 et MLOps 2 ?' — révèle la culture d industrialisation
  • Red flag — ne sait pas ce qu est un modèle en production, pense que Jupyter est suffisant pour déployer

7Grille de décision GO / NO-GO

CompétenceJunior DSConfirmé DSSenior DS
StatistiquesPrecision/Recall, bases probaTests stat, AUC-ROC, classes déséquilibréesStatistiques bayésiennes, tests A/B rigoureux
ML algorithmiquesklearn, RandomForest, régressionXGBoost tuning, feature engineering, SHAPAlgorithmes avancés, NLP/CV, deep learning
ÉvaluationTrain/test split, accuracyCV stratifiée, métriques adaptées, leakageLearning curves, production monitoring
ProductionNotion de déploiementFastAPI + Docker + MLflowMLOps complet, CI/CD ML, monitoring drift
CommunicationExplique son modèlePrésente les résultats aux métiersCadre et priorise les projets data science

Vous recrutez un Data Scientist ?

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