Apprentissage supervisé

30 questions en accès libre

Biais-variance, surapprentissage, validation croisée, précision contre rappel, classes déséquilibrées, régularisation et gradient boosting : les questions posées en entretien de machine learning.

Niveau

Cliquez sur une question pour dérouler la réponse attendue.

  1. 01Qu’est-ce que l’apprentissage supervisé ?Juniorfondamentauxsupervise

    L’apprentissage supervisé consiste à apprendre une fonction de prédiction à partir d’exemples déjà étiquetés : on fournit au modèle des paires (entrées, réponse attendue), et il ajuste ses paramètres pour minimiser l’écart entre ce qu’il prédit et la réponse connue.

    Le mot qui porte la réponse est supervisé : la supervision, c’est l’étiquette. Sans elle, il n’y a rien à comparer à la prédiction, donc rien à corriger.

    Deux précisions qui montrent qu’on ne récite pas une définition :

    • L’objectif n’est pas de bien répondre sur les données d’entraînement, mais de généraliser — c’est-à-dire de bien répondre sur des données jamais vues. Tout le reste du sujet, du découpage des jeux de données à la régularisation, découle de cette distinction.
    • La difficulté pratique est l’étiquette, pas l’algorithme. Un modèle se change en une ligne ; étiqueter cinquante mille exemples coûte du temps humain, et la qualité des étiquettes plafonne celle du modèle.

    Les deux familles à nommer : la régression, quand la réponse est un nombre, et la classification, quand elle est une catégorie.

    Et pour situer par rapport au reste : l’apprentissage non supervisé travaille sans étiquette et cherche une structure dans les données ; l’apprentissage par renforcement n’a pas d’étiquette mais un signal de récompense obtenu en agissant.

  2. 02Quelle différence entre régression et classification ?Juniorfondamentauxclassificationregression

    La nature de la sortie : un nombre continu en régression, une catégorie en classification. Tout le reste en découle — la fonction de perte, les métriques, et la façon de lire une erreur.

    RégressionClassification
    Sortieun nombreune classe, souvent une probabilité
    Exempleprix d’un logementcourriel indésirable ou non
    Perte usuelleerreur quadratiqueentropie croisée
    MétriquesMAE, RMSE, R²précision, rappel, F1, AUC
    Sens de l’erreur« je me suis trompé de 12 % »« je me suis trompé, ou pas »

    Le piège de la question, et c’est là qu’on distingue un candidat qui a pratiqué : le type de la colonne ne décide pas du problème.

    Une note de 1 à 5 est un nombre, mais c’est une variable ordinale : traitée en régression, le modèle peut prédire 3,7, ce qui n’existe pas ; traitée en classification, on perd l’ordre, et confondre 1 avec 5 coûte autant que confondre 4 avec 5. Les deux approches sont défendables, et savoir énoncer ce compromis vaut mieux que trancher.

    Un code postal est un nombre qui n’en est pas un : il faut l’encoder comme catégorie.

    Et l’inverse existe aussi : prédire une probabilité d’attrition est une classification, mais on utilise la probabilité elle-même comme un score continu pour classer les clients par risque.

  3. 03Pourquoi séparer entraînement, validation et test ?Juniorvalidationmethodologie

    Parce que les trois jeux répondent à trois questions différentes, et qu’un jeu qui a servi à décider quelque chose ne peut plus servir à mesurer.

    • Entraînement : ajuste les paramètres du modèle. C’est le seul jeu que le modèle « voit ».
    • Validation : choisit les hyperparamètres, l’algorithme, le seuil, les variables. On le regarde souvent.
    • Test : estime la performance attendue en production. On le regarde une fois, à la fin.

    La phrase qui montre qu’on a compris le mécanisme : chaque décision prise en regardant un jeu de données le contamine. Si on essaie cinquante configurations et qu’on garde celle qui donne le meilleur score de test, ce score n’est plus une estimation honnête — on a surappris le test par sélection, et l’écart se révèle en production.

    Les proportions usuelles sont 60/20/20 ou 70/15/15, mais elles ne sont pas la réponse : ce qui compte, c’est le nombre absolu d’exemples dans le jeu de test. Dix pour cent d’un million d’exemples suffisent largement ; vingt pour cent de trois cents exemples donnent une mesure trop bruitée pour décider quoi que ce soit — et c’est précisément là que la validation croisée remplace le jeu de validation.

    Deux erreurs de découpage à mentionner, parce qu’elles annulent tout le raisonnement :

    • Découper au hasard des données temporelles. Le modèle s’entraîne alors sur le futur pour prédire le passé, et le score obtenu ne se reproduira jamais.
    • Séparer sans tenir compte des groupes. Si le même patient, le même client ou la même photo apparaît de part et d’autre de la coupure, le modèle reconnaît au lieu de généraliser.
  4. 04Qu’est-ce que le surapprentissage et comment le repérer ?Juniorsurapprentissagevalidation

    Un modèle surapprend quand il apprend les particularités de ses données d’entraînement — le bruit, les cas isolés — au lieu de la régularité qui s’y cache. Il devient excellent sur ce qu’il a vu et médiocre sur le reste.

    La façon de le repérer tient en une comparaison : l’écart entre le score d’entraînement et le score de validation.

    • Entraînement 0,99, validation 0,72 : surapprentissage franc.
    • Entraînement 0,74, validation 0,72 : le modèle généralise, mais il est peut-être trop simple — c’est du sous-apprentissage, et le remède est l’inverse.

    Ce qu’il faut ajouter pour montrer qu’on l’a vu en pratique : on ne le constate pas seulement à la fin, on le surveille pendant l’entraînement. La courbe de validation descend avec celle d’entraînement, puis remonte alors que la seconde continue de descendre. Ce point de retournement est exactement là qu’il faut s’arrêter, et c’est ce que fait l’early stopping.

    Les remèdes, dans l’ordre où on les essaie :

    1. Plus de données, c’est le seul remède sans contrepartie. Y compris par augmentation de données quand en obtenir de nouvelles est impossible.
    2. Régularisation : L1, L2, dropout pour un réseau, profondeur maximale et nombre minimal d’exemples par feuille pour un arbre.
    3. Simplifier le modèle, ou réduire le nombre de variables.
    4. Arrêt anticipé, sur la courbe de validation.

    Le piège à ne pas tomber dedans : un écart énorme entre entraînement et validation peut aussi signaler que les deux jeux ne suivent pas la même distribution — un découpage mal fait, une période différente. Avant de régulariser, il faut vérifier le découpage.

  5. 05Expliquez le compromis biais-varianceIntermédiairebiais-variancefondamentauxsurapprentissage

    Le biais est l’erreur due aux hypothèses du modèle, la variance sa sensibilité au jeu d’entraînement. Réduire l’un augmente l’autre, et le diagnostic se lit sur l’écart entre les deux scores.

    Lire la réponse détaillée
  6. 06Qu’est-ce que la validation croisée et quand l’utiliser ?Intermédiairevalidationmethodologie

    La validation croisée à k blocs découpe les données en k parts, entraîne k modèles en gardant chaque fois une part différente pour l’évaluation, et moyenne les k scores obtenus.

    Ce qu’elle apporte, et c’est la raison de l’utiliser : chaque exemple sert une fois à évaluer et k−1 fois à entraîner. Là où un jeu de validation unique donne un score qui dépend beaucoup du découpage tiré, la moyenne sur k blocs est nettement plus stable — et l’écart-type entre les blocs est une information à part entière.

    python
    from sklearn.model_selection import cross_val_score, StratifiedKFold
    
    decoupage = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
    scores = cross_val_score(modele, X, y, cv=decoupage, scoring='roc_auc')
    
    print(f'{scores.mean():.3f} ± {scores.std():.3f}')

    Un écart-type large — 0,81 ± 0,09 — dit que le modèle est instable ou que le jeu est trop petit. C’est un signal qu’un score unique aurait caché, et le mentionner fait la différence.

    Quand l’utiliser : sur des données de taille modeste, et chaque fois qu’il faut comparer des modèles ou régler des hyperparamètres. k valant 5 ou 10 est le choix par défaut, sans raison théorique forte de préférer l’un à l’autre.

    Quand ne pas l’utiliser : quand l’entraînement coûte cher — k fois le coût, c’est rédhibitoire pour un grand réseau — et quand un jeu de validation unique contient déjà des dizaines de milliers d’exemples, cas où le gain de stabilité est nul.

    Les trois variantes à connaître, parce que le choix du découpage est plus important que la valeur de k :

    • Stratifiée : conserve la proportion des classes dans chaque bloc. C’est le défaut en classification, et c’est indispensable dès que les classes sont déséquilibrées.
    • Par groupes : garde toutes les lignes d’un même patient, client ou appareil dans le même bloc. Sans elle, le modèle reconnaît l’individu au lieu de généraliser.
    • Temporelle : chaque bloc n’entraîne que sur le passé. Une validation croisée mélangée sur une série temporelle donne un score flatteur et faux.

    Et le piège qui invalide tout le reste : la préparation des données doit se faire à l’intérieur de chaque bloc. Normaliser ou imputer avant de découper laisse fuiter la moyenne du jeu d’évaluation dans l’entraînement. C’est ce que résout un Pipeline, et c’est pour cela qu’on en utilise un.

  7. 07Qu’est-ce qu’une fuite de données ?Seniorfuite-de-donneesmethodologievalidation

    Une information qui n’existera pas au moment de prédire se retrouve dans l’entraînement. Le score devient excellent et faux, et cela ne se voit pas avant la production.

    Lire la réponse détaillée
  8. 08Que lit-on dans une matrice de confusion ?Juniormetriquesclassification

    Les quatre cases qui croisent la prédiction et la réalité, et dont toutes les métriques de classification sont dérivées.

    Réalité positiveRéalité négative
    Prédit positifvrai positif (VP)faux positif (FP)
    Prédit négatiffaux négatif (FN)vrai négatif (VN)

    Les deux cases en gras sont les deux façons de se tromper, et elles n’ont presque jamais le même coût. C’est là tout l’intérêt de la matrice : l’exactitude résume les quatre cases en un seul nombre, donc elle efface exactement l’information qui sert à décider.

    Les métriques, à savoir reconstruire de mémoire :

    • Précision = VP / (VP + FP) — parmi ce que j’ai signalé, quelle part était juste ?
    • Rappel = VP / (VP + FN) — parmi ce qu’il fallait trouver, quelle part ai-je trouvée ?
    • Exactitude = (VP + VN) / total — la proportion de bonnes réponses, toutes cases confondues.

    L’exemple qui montre pourquoi l’exactitude trompe, et qu’il faut donner sans qu’on le demande : sur un dépistage où une personne sur mille est malade, un modèle qui répond « en bonne santé » à tout le monde obtient 99,9 % d’exactitude et un rappel de zéro. Il est inutile, et le chiffre est excellent.

    Deux points qui font bonne impression :

    • La matrice se lit avec le seuil qui l’a produite. Bouger le seuil de 0,5 déplace les lignes entre FP et FN sans changer le modèle. Une matrice sans son seuil est un résultat incomplet.
    • En multiclasse, elle devient un tableau n × n, et c’est là qu’elle est la plus utile : elle montre quelles classes sont confondues entre elles, ce qu’aucun score global ne dit.
  9. 09Précision ou rappel : lequel privilégier ?Intermédiairemetriquesclassification

    Cela dépend du coût de chaque erreur, pas du modèle. On privilégie le rappel quand manquer un cas positif coûte cher, la précision quand une fausse alerte coûte cher.

    Lire la réponse détaillée
  10. 10Que mesure l’AUC ROC, et quand est-elle trompeuse ?Intermédiairemetriquesclassificationdesequilibre

    L’AUC ROC est la probabilité que le modèle attribue un score plus élevé à un positif tiré au hasard qu’à un négatif tiré au hasard. C’est une mesure de capacité à ordonner, pas de justesse : 0,5 vaut le hasard, 1,0 le classement parfait.

    Sa qualité principale : elle est indépendante du seuil. On peut comparer deux modèles avant d’avoir décidé où couper.

    Quand elle trompe

    Sur des classes très déséquilibrées. C’est le cas à connaître, parce qu’il est fréquent et contre-intuitif. Le taux de faux positifs a le nombre de négatifs au dénominateur : quand les négatifs sont écrasants, mille faux positifs sur un million de négatifs représentent 0,1 %, donc la courbe reste magnifique. L’AUC affiche 0,95 alors que la liste envoyée aux analystes contient 99 % de fausses alertes.

    Le réflexe à énoncer : sur un problème à 1 % de positifs, on regarde l’aire sous la courbe précision-rappel, qui ne comporte pas les vrais négatifs et s’effondre honnêtement.

    Quand la décision porte sur une plage précise. L’AUC intègre tous les seuils, y compris ceux qu’on n’utilisera jamais. Si le processus ne permet de vérifier que les cent premiers dossiers, la métrique utile est la précision dans les cent premiers — pas une moyenne sur l’ensemble de la courbe.

    Quand la probabilité elle-même est utilisée. L’AUC ne dépend que de l’ordre : un modèle qui prédit 0,7 partout où il devrait prédire 0,3 peut avoir une AUC parfaite. Si la probabilité alimente un calcul — une espérance de perte, une tarification — il faut la calibration, mesurée par le score de Brier ou une courbe de fiabilité.

    Le mot exact qui fait la différence

    Beaucoup de candidats disent « l’AUC mesure la performance du modèle ». La formulation qui montre qu’on l’a comprise : l’AUC mesure la qualité du classement, indépendamment du seuil et de la calibration. Les trois qualités sont distinctes, et un modèle peut exceller dans l’une et échouer dans les deux autres.

  11. 11Comment traitez-vous des classes déséquilibrées ?Seniordesequilibreclassificationmetriques

    D’abord en changeant de métrique, ensuite en pondérant les classes, et en rééchantillonnant seulement si c’est nécessaire. Le déséquilibre est plus souvent un problème de mesure que de données.

    Lire la réponse détaillée
  12. 12Quelle différence entre régularisation L1 et L2 ?Intermédiaireregularisationsurapprentissagefeatures

    Les deux ajoutent une pénalité sur la taille des coefficients pour limiter le surapprentissage. Ce qui les sépare tient dans la forme de la pénalité, et la conséquence est nette : L1 met des coefficients à zéro, L2 les rétrécit sans les annuler.

    L1 — lassoL2 — ridge
    Pénalitésomme des valeurs absoluessomme des carrés
    Effetcoefficients exactement nulscoefficients petits, non nuls
    Usagesélection de variablesstabilisation
    Variables corréléesen garde une, écarte les autresrépartit le poids entre elles
    Solutionnon unique, non différentiable en 0unique, forme analytique

    L’intuition géométrique, si on demande pourquoi L1 annule : la contrainte L1 dessine un losange, dont les sommets sont sur les axes ; la contrainte L2 dessine un cercle. La solution touche la contrainte en un point, et un losange se fait toucher par un coin — c’est-à-dire là où une coordonnée vaut zéro.

    Quand choisir quoi, ce qui est la vraie question posée :

    • L2 par défaut, surtout quand les variables sont corrélées et qu’on veut un modèle stable.
    • L1 quand on a des centaines ou des milliers de variables et qu’on veut un modèle court, lisible, avec une liste de variables retenues.
    • Elastic net, qui combine les deux, quand on veut de la parcimonie sans le comportement erratique de L1 sur des groupes de variables corrélées — il garde le groupe entier au lieu d’en tirer une au hasard.

    Deux points qui font bonne impression :

    • Il faut normaliser avant de régulariser. La pénalité porte sur la taille des coefficients, et un coefficient dépend de l’unité de sa variable. Sans mise à l’échelle, régulariser revient à pénaliser les variables exprimées dans de petites unités — un choix arbitraire déguisé en méthode.
    • L’intensité se règle par validation croisée, pas au jugement. Dans scikit-learn, le paramètre C de la régression logistique est l’inverse de la force de régularisation : un C petit régularise fort, ce qui est la source de confusion la plus commune sur ce sujet.

    Et le prolongement qui montre l’ampleur du concept : la régularisation n’est pas propre aux modèles linéaires. Le dropout d’un réseau, la profondeur maximale d’un arbre, le min_samples_leaf d’une forêt et l’arrêt anticipé sont tous des régularisations — la même idée que contraindre les coefficients, appliquée à une autre famille de modèles.

  13. 13Pourquoi la régression logistique est-elle un classifieur ?Juniorregressionclassificationfondamentaux

    Parce qu’elle ne prédit pas une classe mais une probabilité, et qu’on obtient la classe en comparant cette probabilité à un seuil. Le mot « régression » vient de ce qu’elle régresse une quantité continue : la probabilité, ou plus exactement le logarithme du rapport de cotes.

    Le mécanisme, en deux temps :

    1. Une combinaison linéaire des variables produit un nombre dans tout l’intervalle des réels.
    2. La fonction sigmoïde écrase ce nombre entre 0 et 1, ce qui en fait une probabilité utilisable.

    C’est cette seconde étape qui distingue la régression logistique de la régression linéaire, et la raison de ne pas utiliser la seconde pour classer : une droite prédit des valeurs négatives et supérieures à 1, qui ne veulent rien dire comme probabilités, et son erreur quadratique punit un exemple bien classé mais « trop loin » de la frontière.

    Ce qu’il faut ajouter pour montrer qu’on comprend la lecture du modèle : le coefficient s’interprète en rapport de cotes. Un coefficient de 0,7 sur une variable signifie que sa hausse d’une unité multiplie les cotes de l’événement par e⁰·⁷, soit environ 2. C’est ce qui explique pourquoi ce modèle reste utilisé en crédit, en médecine et en assurance : le lien entre une variable et la décision se dit en une phrase, et se défend devant un régulateur.

    Trois précisions qui font bonne impression :

    • La frontière de décision reste linéaire dans l’espace des variables. Un problème dont la frontière est courbe demande des variables croisées, des termes polynomiaux, ou un autre modèle.
    • Elle est bien calibrée par nature, puisqu’elle optimise directement la vraisemblance. C’est un avantage réel sur les arbres et les forêts, dont les probabilités doivent souvent être recalibrées.
    • Le seuil de 0,5 n’a rien d’intrinsèque. Il est le défaut des implémentations, et il n’est le bon choix que si les deux erreurs coûtent autant et que les classes sont équilibrées.
  14. 14Comment un arbre de décision choisit-il ses coupures ?Intermédiairearbresfondamentaux

    De façon gloutonne : à chaque nœud, il essaie toutes les variables et tous les seuils possibles, et retient la coupure qui rend les deux groupes obtenus les plus homogènes possible en termes de cible. Puis il recommence dans chaque groupe, sans jamais revenir sur les coupures déjà faites.

    La mesure d’homogénéité dépend du problème :

    • classification : l’impureté de Gini ou l’entropie — les deux donnent des arbres très semblables, et le choix entre elles n’est presque jamais ce qui détermine la performance ;
    • régression : la variance intra-groupe, ou l’erreur quadratique.

    Le mot important est glouton, et c’est ce qu’il faut souligner : l’arbre choisit la meilleure coupure immédiate, pas celle qui mènerait au meilleur arbre final. Il n’y a aucune garantie d’optimalité globale, parce que trouver l’arbre optimal est un problème hors d’atteinte en calcul.

    Ce qu’il faut ajouter sur l’arrêt, parce que c’est là que se joue la qualité : sans contrainte, l’arbre continue jusqu’à ce que chaque feuille soit pure, c’est-à-dire jusqu’à mémoriser l’entraînement. On l’arrête donc par max_depth, min_samples_leaf ou min_samples_split, ou on le laisse pousser puis on le taille en supprimant les branches dont le gain ne justifie pas la complexité.

    Les trois propriétés à connaître, parce qu’elles expliquent tous les usages qui suivent :

    • Aucune normalisation nécessaire. Une coupure est une comparaison à un seuil, donc l’échelle des variables est sans effet — et une transformation monotone ne change rien à l’arbre.
    • Les interactions viennent gratuitement. Une branche qui coupe sur l’âge puis sur le revenu exprime une interaction sans qu’on l’ait déclarée. C’est ce qui rend cette famille si forte sur données tabulaires.
    • La variance est élevée. Déplacer quelques exemples change une coupure haute dans l’arbre, et tout ce qui suit change avec elle. C’est précisément ce défaut que corrigent les forêts aléatoires en moyennant plusieurs arbres.

    Et le piège classique, qu’il vaut mieux mentionner soi-même : l’importance des variables calculée par impureté est biaisée en faveur des variables à nombreuses modalités, qui offrent plus de coupures possibles. Sur des données mêlant variables continues et binaires, il faut lui préférer l’importance par permutation ou les valeurs de Shapley.

  15. 15Forêt aléatoire ou gradient boosting : comment choisir ?Intermédiaireensemblesarbreshyperparametres

    La forêt moyenne des arbres indépendants et se règle presque toute seule ; le boosting corrige ses erreurs séquentiellement et gagne quelques points au prix d’un réglage soigné.

    Lire la réponse détaillée
  16. 16Quelle différence entre bagging et boosting ?Intermédiaireensemblesbiais-variance

    Ce sont deux façons d’assembler des modèles faibles, qui visent deux termes différents de l’erreur.

    Le baggingbootstrap aggregating — entraîne des modèles en parallèle, chacun sur un échantillon tiré avec remise, puis moyenne leurs prédictions. Les modèles sont indépendants, donc leurs erreurs se compensent partiellement : la variance baisse, le biais reste le même. La forêt aléatoire en est l’exemple, avec le tirage de variables en supplément.

    Le boosting entraîne les modèles en séquence, chacun se concentrant sur ce que les précédents ont raté. La somme pondérée de modèles très simples devient un modèle expressif : le biais baisse, et la variance peut monter. AdaBoost et le gradient boosting en sont les deux formes.

    BaggingBoosting
    Ordreparallèleséquentiel
    Modèles de baseforts, à variance élevéefaibles, à biais élevé
    Ciblela variancele biais
    Risquepeu de surapprentissagesurapprentissage si trop d’étapes
    Données bruitéesrobustesensible
    Parallélisationnaturellelimitée

    La condition à énoncer, parce qu’elle explique pourquoi le bagging fonctionne : la moyenne ne réduit la variance que si les modèles sont décorrélés. Moyenner cinquante arbres identiques ne donne rien de plus qu’un arbre. C’est exactement pourquoi la forêt aléatoire limite les variables candidates à chaque coupure : sans cela, tous les arbres couperaient d’abord sur la même variable dominante et se ressembleraient trop.

    Et la sensibilité au bruit du boosting mérite une phrase : puisque chaque étape se concentre sur les exemples mal prédits, une étiquette erronée est poursuivie avec insistance. Sur un jeu aux étiquettes douteuses, une forêt est souvent le choix le plus sûr.

    Le troisième terme, si l’on veut compléter : le stacking, qui entraîne un méta-modèle sur les prédictions de modèles hétérogènes. Il exploite la complémentarité des familles plutôt que la répétition d’une seule, et c’est ce qui gagne les compétitions — au prix d’un pipeline nettement plus lourd à maintenir.

  17. 17Pourquoi le gradient boosting domine-t-il sur données tabulaires ?Seniorensemblestabulairearbres

    Parce que la structure des arbres correspond à la structure des données tabulaires, là où celle d’un réseau de neurones ne correspond à rien de particulier.

    Quatre raisons, à donner dans cet ordre :

    Les coupures gèrent l’hétérogénéité des colonnes. Un tableau réel mêle un âge, un code postal, un montant en euros et un booléen. Un arbre compare chaque variable à un seuil dans sa propre unité ; un réseau doit tout ramener sur une échelle commune, et la mise à l’échelle d’une variable très asymétrique est une perte d’information.

    L’invariance aux transformations monotones. Passer un montant au logarithme ne change pas un arbre, puisque l’ordre est conservé. Pour un réseau, c’est une transformation majeure, qu’il faut trouver. Toute une part du travail de préparation disparaît.

    Les interactions sont apprises sans être déclarées. Une branche qui coupe sur l’ancienneté puis sur le nombre d’incidents exprime une interaction d’ordre deux. Un réseau y arrive aussi, mais il lui faut beaucoup plus d’exemples pour y parvenir par lui-même.

    Le régime de données leur est favorable. Les jeux tabulaires comptent souvent des dizaines de milliers de lignes, pas des dizaines de millions. Les réseaux profonds ont besoin de volume pour compenser leur absence d’hypothèse structurelle ; les arbres sont efficaces avec peu.

    Ce qu’il faut ajouter pour situer la réponse dans la littérature, et cela fait bonne impression : plusieurs études comparatives publiées depuis 2021 arrivent à la même conclusion — sur données tabulaires, les arbres boostés restent devant les architectures profondes conçues pour ce cas, et l’écart de temps d’ingénierie est plus grand encore que l’écart de performance.

    La nuance à ne pas oublier, parce qu’elle montre qu’on ne récite pas une préférence : le boosting perd dès que la structure des données est le signal. Sur des images, du texte, du son ou des graphes, la disposition spatiale, l’ordre des mots ou la topologie portent l’information, et c’est exactement ce que les convolutions et l’attention exploitent. Un arbre voit un pixel comme une colonne indépendante de ses voisines.

    Et le cas mixte, qui est celui des systèmes réels : on encode le texte ou l’image avec un modèle profond, puis on donne ces représentations en variables à un gradient boosting avec les colonnes du tableau. Chaque famille traite ce qu’elle traite mieux que l’autre.

  18. 18Quels modèles exigent une normalisation des variables ?Juniorpreparationfeatures

    Ceux qui reposent sur une distance ou sur une descente de gradient. Les modèles à base d’arbres n’en ont pas besoin, et la règle se retient à ce critère plutôt qu’à une liste.

    Il faut normaliser :

    • k plus proches voisins, SVM, k-means — tout ce qui calcule une distance. Sans mise à l’échelle, une variable exprimée en euros écrase une variable exprimée en années : la distance est dominée par l’unité, pas par l’information.
    • Réseaux de neurones — la descente de gradient converge mal quand les variables ont des amplitudes très différentes, et les activations saturent.
    • Modèles linéaires régularisés — la pénalité porte sur la taille des coefficients, qui dépend de l’unité de la variable. Régulariser sans normaliser pénalise arbitrairement certaines variables.
    • ACP — elle cherche les directions de variance maximale, or la variance dépend de l’unité. Sans normalisation, l’ACP décrit surtout la colonne aux plus grands nombres.

    Il n’est pas nécessaire de normaliser :

    • arbres, forêts aléatoires, gradient boosting — une coupure est une comparaison à un seuil dans l’unité de la variable, donc l’échelle n’a aucun effet ;
    • régression linéaire sans régularisation — les coefficients s’ajustent à l’unité, et les prédictions sont identiques. La normalisation n’y sert que la lisibilité des coefficients.

    Les deux transformations à distinguer :

    • La standardisation centre sur 0 et ramène l’écart-type à 1. C’est le choix par défaut, et elle conserve les valeurs extrêmes.
    • La mise à l’échelle min-max ramène dans l’intervalle [0, 1]. Elle est utile quand une borne est requise, et très sensible aux valeurs aberrantes : une seule valeur extrême comprime tout le reste dans un intervalle minuscule. Sur données douteuses, le RobustScaler, qui utilise la médiane et l’écart interquartile, est plus sûr.

    Et le point qui compte autant que le choix de la transformation : elle s’ajuste sur l’entraînement seul. Calculer la moyenne sur tout le jeu avant de découper est une fuite de données, discrète et fréquente. D’où le Pipeline, qui rend l’erreur impossible :

    python
    pipeline = make_pipeline(StandardScaler(), LogisticRegression())
    pipeline.fit(X_entrainement, y_entrainement)
  19. 19Comment encodez-vous une variable catégorielle ?Intermédiairepreparationfeatures

    Le choix dépend de deux choses : le nombre de modalités et le modèle qui va consommer la variable.

    L’encodage un-parmi-n (one-hot) crée une colonne binaire par modalité. C’est le choix par défaut en dessous d’une quinzaine de modalités, et le seul correct pour un modèle linéaire ou un réseau — parce qu’il n’introduit aucun ordre entre les modalités.

    L’encodage ordinal remplace chaque modalité par un entier. Il n’est légitime que si l’ordre existe : petit < moyen < grand. Appliqué à des villes, il fait croire au modèle que Lyon est entre Lille et Marseille. Avec un modèle à base d’arbres, il reste néanmoins utilisable même sans ordre, puisque l’arbre peut isoler une modalité par coupures successives — au prix de quelques coupures gaspillées.

    L’encodage par la cible remplace la modalité par la moyenne de la cible observée sur cette modalité. C’est la réponse aux variables à forte cardinalité — code postal, référence produit, identifiant d’appareil — là où un-parmi-n produirait des milliers de colonnes creuses.

    C’est aussi celui qui demande de la précaution, et c’est ce que vérifie la question :

    • il fuit la cible s’il est calculé sur tout le jeu avant le découpage ; il doit être ajusté dans l’entraînement seul, à l’intérieur de chaque bloc de validation croisée ;
    • une modalité vue trois fois donne une moyenne indigne de confiance, d’où le lissage vers la moyenne globale en fonction de l’effectif ;
    • l’implémentation robuste passe par un encodage hors bloc, où la valeur d’une ligne est calculée sans elle-même. C’est ce que fait CatBoost nativement, et c’est la raison de son nom.

    Les deux autres à connaître :

    • Le hachage projette les modalités sur un nombre fixé de colonnes. Il accepte des modalités inconnues sans réajustement, au prix de collisions. Utile en flux continu.
    • Les plongements (embeddings) apprennent une représentation dense de chaque modalité pendant l’entraînement d’un réseau. C’est ce qui traite le mieux la très forte cardinalité, quand on entraîne déjà un réseau.

    Et le cas qu’on oublie systématiquement, alors qu’il tombe en production : la modalité jamais vue à l’entraînement. Un nouveau pays, un nouveau produit. Sans consigne explicite, la transformation échoue ou produit une ligne vide. En scikit-learn, cela se règle d’un argument, et savoir le citer montre qu’on a déjà mis un modèle en service :

    python
    OneHotEncoder(handle_unknown='ignore', min_frequency=10)
  20. 20Comment traitez-vous les valeurs manquantes ?Intermédiairepreparationdonnees-manquantes

    La première réponse n’est pas une technique, c’est une question : pourquoi cette valeur manque-t-elle ? Le mécanisme d’absence détermine le traitement, et l’ignorer introduit un biais qu’aucune imputation ne corrigera.

    Les trois cas, avec leur conséquence :

    • Manquant complètement au hasard. L’absence ne dépend de rien. Cas rare et confortable : imputer ou supprimer ne biaise pas.
    • Manquant au hasard, conditionnellement. L’absence dépend d’autres variables observées — les revenus manquent plus souvent chez les jeunes. Une imputation utilisant ces variables corrige le biais.
    • Manquant de façon non aléatoire. L’absence dépend de la valeur elle-même : les hauts revenus refusent de répondre. C’est le cas dangereux, parce qu’aucune imputation ne peut le corriger — l’information nécessaire n’est pas dans les données. La seule bonne réponse est de traiter l’absence comme une information à part entière.

    Ce qu’on fait en pratique, dans l’ordre :

    1. Ajouter un indicateur d’absence. Une colonne booléenne revenu_manquant en plus de la valeur imputée. C’est le réflexe le plus rentable et le moins cité : si l’absence porte du signal — et elle en porte souvent — le modèle peut l’utiliser au lieu de le subir.
    2. Imputer par la médiane pour une variable numérique, par la modalité la plus fréquente ou une modalité « inconnu » pour une catégorielle. Simple, robuste, suffisant dans la majorité des cas.
    3. Imputer par modèleIterativeImputer, ou les k plus proches voisins — quand les variables sont corrélées et que le taux d’absence est important. Plus précis, plus lent, et plus facile à mal faire.
    4. Supprimer la colonne au-delà d’un taux d’absence très élevé, ou la ligne si les cas sont rares et le jeu grand.

    Deux points qui font la différence :

    • L’imputation s’ajuste sur l’entraînement seul. La médiane calculée sur tout le jeu est une fuite. Comme pour la normalisation, cela vit dans un Pipeline.
    • Certains modèles s’en passent. LightGBM et XGBoost traitent l’absence nativement : à chaque coupure, ils apprennent de quel côté envoyer les valeurs manquantes. C’est souvent meilleur que n’importe quelle imputation, puisque la décision est prise pour optimiser la perte plutôt que par convention.

    Et l’erreur à ne jamais commettre, parce qu’elle est fréquente et silencieuse : imputer par zéro une variable numérique sans y penser. Zéro est une valeur légitime pour un revenu, une température ou un solde ; l’utiliser comme marque d’absence rend les deux situations indistinguables et déplace la moyenne.

  21. 21Comment sélectionnez-vous les variables d’un modèle ?Intermédiairefeaturesregularisationvalidation

    Trois familles de méthodes, et un critère de décision qui n’est pas la performance.

    Les filtres évaluent chaque variable indépendamment du modèle : corrélation avec la cible, information mutuelle, test statistique. Rapides, et aveugles à deux choses — les redondances entre variables, et les variables inutiles seules mais décisives en combinaison.

    Les enveloppes entraînent le modèle sur des sous-ensembles de variables et comparent. L’élimination récursive retire à chaque tour la variable la moins utile. Coûteux, et sujet au surapprentissage de la sélection si l’évaluation ne se fait pas en validation croisée.

    Les méthodes intégrées font la sélection pendant l’entraînement : la pénalité L1 annule des coefficients, un arbre ignore les variables sur lesquelles il ne coupe jamais. C’est le meilleur rapport résultat / effort, et c’est ce qu’on utilise par défaut.

    Le critère à énoncer, parce que c’est lui qui manque dans la plupart des réponses : on ne réduit pas le nombre de variables pour gagner en performance. Un gradient boosting supporte très bien deux cents colonnes dont la moitié sont inutiles. On réduit pour :

    • la latence et le coût — chaque variable en production est une requête, une jointure, un point de panne ;
    • la maintenance — une variable est un contrat avec une équipe source, qui changera son schéma sans prévenir ;
    • la lisibilité — un modèle à douze variables se défend devant un métier, un modèle à trois cents ne se défend pas ;
    • la stabilité — moins de variables, moins d’occasions de dérive.

    Deux pièges à mentionner :

    • La sélection fait partie du modèle. Choisir les variables sur tout le jeu puis valider croisé donne un score optimiste : le jeu d’évaluation a participé au choix. La sélection doit vivre dans le pipeline, ajustée à l’intérieur de chaque bloc.
    • L’importance n’est pas la causalité. Une variable importante peut être une conséquence de la cible plutôt qu’une cause — auquel cas c’est une fuite de données déguisée en bonne nouvelle.

    Et le complément le plus utile en pratique : mesurer l’importance par permutation sur le jeu de validation. On mélange une colonne et on regarde ce que le score perd. C’est agnostique au modèle, cela mesure l’apport réel en généralisation, et cela répond directement à la question « puis-je supprimer cette colonne ? ».

  22. 22Comment réglez-vous les hyperparamètres ?Intermédiairehyperparametresvalidation

    En trois décisions : quelle méthode de recherche, quel protocole d’évaluation, et quels paramètres méritent d’être cherchés.

    La méthode. La recherche exhaustive sur grille explose combinatoirement et gaspille l’essentiel de son budget sur des paramètres sans effet. La recherche aléatoire est le bon défaut, et le résultat qui le justifie est connu : à budget égal, elle trouve de meilleures configurations, parce qu’elle explore plus de valeurs distinctes des paramètres qui comptent vraiment. Au-delà, l’optimisation bayésienne — Optuna, scikit-optimize — choisit chaque essai en fonction des précédents, ce qui devient rentable quand un entraînement coûte des minutes.

    Le protocole. C’est là que se joue la validité du résultat :

    python
    recherche = RandomizedSearchCV(
        pipeline,             # le pipeline entier, preparation comprise
        distributions,
        n_iter=60,
        cv=StratifiedKFold(5, shuffle=True, random_state=42),
        scoring='average_precision',   # la metrique du probleme, pas l'exactitude
    )

    Deux points obligatoires : la recherche porte sur le pipeline complet, sinon la préparation fuit ; et le score final se lit sur un jeu de test jamais utilisé par la recherche. Le meilleur score de validation croisée est un score optimiste, puisqu’on a retenu le maximum de soixante tirages — le maximum d’un bruit est biaisé vers le haut.

    Les paramètres à chercher. Peu, et les bons. Sur un gradient boosting, le taux d’apprentissage et le nombre d’arbres — liés — puis la profondeur, puis les taux d’échantillonnage. Sur une forêt, presque rien : assez d’arbres, et éventuellement le nombre de variables candidates par coupure. Les échelles se choisissent logarithmiques pour tout ce qui est un taux ou une intensité de régularisation.

    Ce qu’il faut ajouter, et qui vaut plus que la maîtrise des outils : le réglage arrive tard dans l’ordre des priorités. Une variable pertinente en plus, une étiquette corrigée, un découpage réparé rapportent davantage que le meilleur réglage possible. Passer une journée sur les hyperparamètres avant d’avoir vérifié le découpage est une erreur de méthode, et le dire fait bonne impression.

    Deux réflexes économiques à citer : l’arrêt anticipé intégré à la recherche, qui abandonne les configurations manifestement mauvaises, et la réduction successive (HalvingRandomSearchCV), qui alloue progressivement plus de données aux configurations survivantes.

  23. 23Quelle métrique choisir pour un problème de régression ?Intermédiairemetriquesregression

    Le choix se fait sur deux critères : comment l’erreur doit être pénalisée, et dans quelle unité elle doit être lue.

    MétriqueUnitéComportement
    MAEcelle de la cibleerreur moyenne, robuste aux valeurs extrêmes
    RMSEcelle de la ciblepénalise les grosses erreurs au carré
    MAPEpourcentagerelative, indéfinie si la cible peut valoir 0
    sans unitépart de variance expliquée, comparable entre jeux

    MAE ou RMSE, c’est la vraie question, et la réponse est métier : est-ce qu’une erreur de 10 est deux fois plus grave qu’une erreur de 5, ou quatre fois ? Prévoir une demande de stock avec dix unités d’écart coûte proportionnellement — MAE. Sous-estimer la charge d’un réseau électrique de dix pour cent coûte bien plus que deux fois cinq pour cent — RMSE.

    Le corollaire à connaître : MAE et RMSE n’optimisent pas la même chose. Minimiser l’erreur absolue conduit à prédire la médiane conditionnelle, minimiser l’erreur quadratique conduit à prédire la moyenne. Sur une distribution asymétrique — des montants, des durées — les deux prédictions diffèrent nettement, et ce n’est pas un détail de métrique mais un choix d’estimateur.

    Trois précisions qui font bonne impression :

    • Le R² n’est pas une note. Il compare le modèle à la prédiction constante de la moyenne. Un R² de 0,3 est excellent sur un phénomène très bruité et catastrophique sur un phénomène déterministe. Et il peut être négatif, ce qui signifie qu’on fait pire que la moyenne.
    • Le MAPE est piégeux : indéfini quand la cible vaut zéro, et asymétrique — il punit davantage la surestimation que la sous-estimation. Quand une métrique relative est nécessaire, le SMAPE ou une erreur sur l’échelle logarithmique sont préférables.
    • L’erreur peut devoir être asymétrique. Si sous-estimer coûte trois fois plus que surestimer, aucune de ces métriques ne convient : il faut une perte quantile, avec le quantile fixé par le rapport des coûts. C’est ce qui distingue une réponse d’ingénieur d’une réponse de manuel.

    Et le réflexe à ne pas oublier : comparer à un modèle de référence. Un RMSE de 12,4 ne veut rien dire seul ; il veut dire quelque chose face au RMSE de la prédiction naïve — la moyenne, ou la dernière valeur observée sur une série temporelle.

  24. 24Pourquoi commencer par un modèle de référence ?Juniormethodologiemetriques

    Parce qu’un score seul ne veut rien dire. Un AUC de 0,78 ou un RMSE de 12,4 ne devient une information qu’en comparaison de quelque chose, et ce quelque chose doit être défini avant d’entraîner un modèle sérieux.

    Les références utiles, selon le problème :

    • Classification : prédire toujours la classe majoritaire, ou tirer au hasard selon les proportions observées. C’est ce qui révèle immédiatement l’absurdité de l’exactitude sur des classes déséquilibrées.
    • Régression : prédire la moyenne, ou la médiane.
    • Série temporelle : prédire la dernière valeur observée, ou celle de la même période l’an passé. Cette référence naïve est redoutablement difficile à battre, et beaucoup de projets de prévision ne la battent jamais.
    • Le meilleur repère de tous : le processus actuellement en place. Une règle métier écrite il y a dix ans, ou la décision d’un expert humain. C’est celui que le commanditaire a en tête, même s’il ne le dit pas.

    Ce qu’un modèle de référence apporte au-delà du chiffre, et c’est ce qui fait la qualité de la réponse :

    • Il valide la chaîne complète — lecture des données, découpage, entraînement, évaluation, écriture du résultat — sur un modèle dont on connaît le comportement. Si la référence obtient un score étrange, le défaut est dans la chaîne, pas dans le modèle.
    • Il détecte les fuites de données. Une référence triviale qui obtient 0,97 signale qu’une colonne contient la réponse. Découvert en dix minutes, ce défaut aurait coûté une semaine.
    • Il donne une décision d’arrêt. Si le modèle complexe gagne un point sur la règle métier existante, la bonne recommandation est peut-être de garder la règle — plus simple, plus rapide, déjà en production et comprise par tout le monde.

    La formulation qui montre l’expérience : le premier livrable d’un projet de modélisation n’est pas un modèle, c’est une mesure de l’existant. Sans elle, on ne peut ni prouver un gain, ni justifier un abandon.

  25. 25Qu’est-ce que la dérive des données en production ?Seniorproductionderivemlops

    Les données d’entrée s’éloignent de celles de l’entraînement, ou le lien entre entrées et cible change. Le modèle répond sans erreur, et ses prédictions deviennent fausses.

    Lire la réponse détaillée
  26. 26Comment expliquez-vous la décision d’un modèle ?Seniorinterpretabiliteshapproduction

    En distinguant l’explication globale, qui dit ce que le modèle a appris, de l’explication locale, qui justifie une prédiction. SHAP répond à la seconde, et c’est presque toujours celle qu’on demande.

    Lire la réponse détaillée
  27. 27Comment choisissez-vous le seuil de décision ?Seniormetriquesclassificationproduction

    En optimisant une quantité métier sur le jeu de validation, jamais en gardant le 0,5 par défaut — qui n’est qu’une convention d’implémentation, sans aucune justification statistique.

    La démarche, en trois temps :

    1. Chiffrer les deux erreurs. Combien coûte un faux positif, combien coûte un faux négatif ? En euros, en heures d’analyste, en risque. Ce chiffrage vient du métier, et l’obtenir est souvent la partie la plus difficile du travail.

    2. Choisir le seuil qui minimise le coût total sur la validation :

    python
    couts = [
        faux_positifs(seuil) * cout_fp + faux_negatifs(seuil) * cout_fn
        for seuil in seuils
    ]
    seuil_retenu = seuils[int(np.argmin(couts))]

    Quand le chiffrage est impossible, on substitue une contrainte opérationnelle, qui joue le même rôle : « les analystes peuvent traiter deux cents dossiers par jour » fixe le seuil par la capacité, et c’est souvent la formulation la plus juste du problème réel.

    3. Vérifier le seuil sur le test, comme n’importe quel autre paramètre appris. Un seuil choisi sur la validation puis évalué sur cette même validation donne un résultat optimiste.

    Trois points qui distinguent une réponse expérimentée :

    • Le seuil est un paramètre du système, pas du modèle. Il se change sans réentraîner, ce qui en fait le levier le plus rapide quand le métier veut ajuster le compromis. Il doit donc être configurable en production, pas figé dans le code du modèle.
    • Le seuil dépend de la prévalence. Si le taux de positifs passe de 2 % à 5 %, le seuil optimal se déplace, même sans dérive du modèle. C’est une raison de le revoir périodiquement, avec les mêmes rituels que le réentraînement.
    • Plusieurs seuils valent souvent mieux qu’un. Deux bornes créent trois zones — refus automatique, examen humain, acceptation automatique — ce qui laisse à la machine ce qu’elle fait bien et à l’humain les cas ambigus. C’est ainsi que fonctionnent la plupart des systèmes de décision sérieux.

    Et la précision technique à ne pas manquer : si la probabilité doit être interprétée — pour un calcul d’espérance de perte, une tarification — il faut d’abord calibrer le modèle, par régression isotone ou par la méthode de Platt. Un gradient boosting sort des scores mal calibrés : le seuil optimal fonctionne quand même, mais le nombre lui-même ne peut pas être lu comme une probabilité.

  28. 28Comment valider un modèle sur des données temporelles ?Seniorvalidationtemporelfuite-de-donnees

    Jamais par un découpage aléatoire. La règle tient en une phrase : le modèle ne doit être évalué que sur des données postérieures à celles qu’il a vues.

    Un train_test_split mélangé sur une série temporelle entraîne le modèle sur juin pour prédire mai. Le score obtenu est excellent, et il ne se reproduira jamais — parce qu’en production, l’avenir n’est pas disponible. C’est la fuite de données la plus facile à commettre et la plus coûteuse à découvrir tard.

    La validation croisée temporelle avance dans le temps par blocs successifs :

    python
    from sklearn.model_selection import TimeSeriesSplit
    
    # Chaque bloc entraine sur tout le passe et evalue sur la periode suivante.
    for i_entrainement, i_test in TimeSeriesSplit(n_splits=5).split(X):
        ...

    Deux variantes, selon l’hypothèse qu’on fait sur le phénomène : la fenêtre croissante, où l’entraînement accumule tout l’historique, et la fenêtre glissante, de taille fixe, qui oublie le passé lointain. La seconde est préférable quand le comportement dérive, et le comparatif entre les deux est en soi un résultat intéressant à présenter.

    Les trois précautions qui font la qualité d’une réponse senior :

    • Le délai d’embargo. Il faut un intervalle vide entre la fin de l’entraînement et le début de l’évaluation, égal au délai réel entre la prédiction et la connaissance de la vérité. Sans lui, une variable calculée sur une fenêtre glissante enjambe la coupure, et la fuite revient par la porte de derrière.
    • Les variables doivent respecter l’instant de prédiction. Toute moyenne, tout cumul, tout encodage par la cible se calcule jusqu’à la date de la ligne, jamais sur l’ensemble de la période. C’est le travail le plus délicat de ce type de projet, et un magasin de variables historisé existe précisément pour cela.
    • La saisonnalité rend un bloc unique trompeur. Un modèle validé sur décembre n’apprend rien sur mars. Plusieurs blocs successifs, et une lecture période par période plutôt qu’une moyenne unique, évitent de conclure sur une saison.

    Et le complément qui montre qu’on relie la validation à la production : la bonne façon de vérifier un modèle temporel est de rejouer l’histoire — se placer à chaque date, n’utiliser que ce qui était connu ce jour-là, prédire, puis comparer. C’est plus long à mettre en place qu’une validation croisée, et c’est la seule mesure qui ressemble à ce qui se passera vraiment.

  29. 29Bon score hors ligne, mauvais en production : pourquoi ?Seniorproductionmetriquesmlops

    C’est la question la plus révélatrice de l’expérience réelle d’un candidat, parce qu’elle n’a pas une réponse mais une liste ordonnée d’hypothèses à éliminer.

    1. Une fuite de données. L’hypothèse la plus probable, à vérifier avant toutes les autres. Une variable qui n’existe pas encore au moment de prédire, ou une préparation ajustée avant le découpage. Le score hors ligne était faux depuis le début.

    2. Un décalage entre l’entraînement et le service (training-serving skew). Les variables ne sont pas calculées de la même façon des deux côtés : un groupby pandas dans le carnet d’expérimentation, une requête SQL en production, et une différence d’arrondi, de fuseau horaire ou de valeur par défaut. Le modèle reçoit des entrées légèrement différentes de celles sur lesquelles il a appris. C’est la panne la plus fréquente en pratique, et la raison d’être d’un magasin de variables partagé entre l’entraînement et le service.

    3. Une fraîcheur différente. Hors ligne, toutes les variables étaient complètes. En production, une table est alimentée avec six heures de retard, et le modèle prédit sur des valeurs manquantes ou périmées qu’il n’a jamais rencontrées à l’entraînement.

    4. Une population différente. Le jeu d’entraînement venait de l’historique des clients existants ; le modèle sert maintenant tous les visiteurs, dont ceux que le processus précédent écartait. Le modèle extrapole hors de son domaine.

    5. Une métrique qui ne mesure pas l’objectif. Le cas le plus embarrassant : le modèle fonctionne, et le gain n’apparaît pas. L’AUC a progressé de trois points, le taux de conversion n’a pas bougé — parce que la métrique hors ligne n’était pas reliée à la décision, ou parce que le gain se situait sur des cas que le processus ne traite pas.

    6. Un effet de rétroaction. Le modèle change le comportement qu’il prédit. Un moteur de recommandation modifie ce que les gens voient donc ce qu’ils cliquent ; un modèle antifraude bloque des transactions dont on ne saura jamais l’issue. Les données de production ne sont plus celles sur lesquelles la mesure hors ligne portait.

    La phrase à retenir, qui résume le tout : une mesure hors ligne estime la performance d’un modèle, une mesure en ligne estime la valeur d’une décision. Les deux peuvent diverger sans que personne se soit trompé.

    D’où les deux pratiques à énoncer pour finir, parce qu’elles répondent à la question avant qu’elle se pose : le déploiement en observation (shadow mode), où le modèle prédit en production sans décider, ce qui permet de comparer ses entrées et ses sorties avec celles de l’expérimentation ; et l’essai contrôlé sur une fraction du trafic, qui est la seule façon de mesurer un gain réel.

  30. 30Quand ne faut-il pas faire de machine learning ?Seniormethodologieproduction

    Question de jugement, posée pour vérifier qu’un candidat sait renoncer. Les cas où il faut répondre non :

    Quand une règle suffit. Si la décision s’écrit en trois conditions que le métier connaît déjà, une règle est plus rapide, plus lisible, testable unitairement, et ne dérive pas. Apprendre une règle connue est un coût sans contrepartie.

    Quand il n’y a pas d’étiquettes, et aucun moyen d’en obtenir. Sans supervision, pas d’apprentissage supervisé — et l’étiquetage manuel de quelques milliers d’exemples est un projet en soi, dont il faut décider en connaissance de cause.

    Quand le volume est trop faible. Trois cents lignes avec quarante variables ne permettent pas de conclure : la variance du score de validation dépassera l’écart entre les modèles comparés. Une analyse statistique honnête vaut mieux qu’un modèle qui donne une illusion de précision.

    Quand l’erreur n’est pas acceptable. Un modèle se trompe par construction. S’il faut une garantie — un calcul réglementaire, une facturation, un contrôle de sécurité — la réponse est un algorithme déterministe, éventuellement assisté d’un modèle en amont pour prioriser.

    Quand le phénomène change plus vite qu’on ne peut réentraîner. Un modèle validé sur trois mois d’historique et déployé sur un marché qui se réorganise tous les quinze jours sera périmé avant d’être en service.

    Quand personne ne pourra le maintenir. Un modèle est un système vivant : surveillance, réentraînement, gestion des versions, astreinte. Livrer un modèle à une équipe qui n’a pas ces moyens produit une dette qui se paiera dans six mois, quand ses prédictions seront devenues fausses sans que personne ne le remarque.

    Quand le gain n’a pas de destinataire. Si aucune décision ne change en fonction de la prédiction, la meilleure performance du monde ne vaut rien. La question à poser au commanditaire est simple : qu’allez-vous faire différemment quand vous aurez ce nombre ? Sans réponse claire, le projet n’a pas d’objet.

    La formulation qui conclut bien, et qui est vraie : le rôle n’est pas de livrer un modèle, c’est de résoudre le problème. Recommander une règle, un tableau de bord ou un meilleur processus de collecte quand c’est la bonne réponse inspire nettement plus confiance que d’entraîner un modèle parce que c’était la demande.