Des métriques qui disent la vérité
Apparier avant de compter
Pour scorer, il faut d'abord apparier chaque ligne prédite à une ligne du gold. Fait naïvement, c'est faux. Le bon schéma se fait en deux passes :
- passe forte : appariement par référence exacte (le SKU, l'identifiant). Fiable.
- passe faible : sur ce qui reste, appariement par similarité de nom (fuzzy, seuil élevé type ≥ 88 %).
L'ordre compte : une référence exacte ne doit jamais pouvoir être « volée » par un fuzzy de nom. On verrouille d'abord le certain, on rapproche ensuite l'approché.
Le trio classique
Sur ces paires, on calcule :
- precision = parmi les lignes que le pipeline a produites, combien sont justes → mesure l'invention (basse precision = il invente) ;
- recall = parmi les lignes attendues, combien il a trouvées → mesure l'oubli (bas recall = il rate) ;
- F1 = moyenne harmonique des deux → le score de tête, qui punit un déséquilibre (100 % de recall en inventant tout n'aide pas).
Ces trois-là suffisent à répondre à « a-t-on lu les bonnes lignes ? ».
L'image qui fait cliquer : la pêche au filet 🎣
Tu jettes un grand filet dans le lac et tu remontes 80 poissons sur 100 → recall 80 % (tu n'en as raté que 20). Mais ton filet ramène aussi 80 cailloux → precision 50 % (la moitié de ta prise est du déchet). Tu peux viser un petit filet sur un coin sans cailloux : 0 caillou → precision 100 %, mais tu n'attrapes que 20 poissons → recall 20 %.
Recall = « ai-je attrapé tout ce qu'il fallait ? » (l'oubli). Precision = « ma prise est-elle propre ? » (l'invention). Élargir le filet monte le recall mais fait entrer des cailloux (precision ↓) ; le resserrer fait l'inverse. On ne maximise pas les deux d'un coup — c'est tout l'intérêt du F1 (et du choix du seuil).
Le détail qui change tout : l'abstention
Côté matching, une métrique top-1 naïve (« le SKU choisi est-il le bon ? ») cache le pire cas. Considère un article hors catalogue : le gold dit aucun SKU attendu. Si le matcher force quand même un produit, une métrique naïve peut compter ça neutre — alors que c'est la faute la plus grave (le client reçoit le mauvais carton).
Une bonne métrique top-1 a donc trois verdicts, pas deux :
| Situation | Verdict |
|---|---|
| SKU attendu, bon SKU choisi | ✅ juste |
| SKU attendu, mauvais SKU choisi | ❌ faux |
| Aucun SKU attendu, le matcher force quand même | ❌ faux (abstention manquée) |
Savoir s'abstenir fait partie de la bonne réponse. Une métrique qui ne récompense pas l'abstention entraîne un pipeline qui ment avec assurance.
Pourquoi apparier pred↔gold en deux passes (référence puis nom) ?