- Score, seuil, décision. Le modèle sort un score ; quelqu'un pose un seuil ; les métriques de décision en dépendent, l'AUC non — elle vaut P(score d'un positif > score d'un négatif), une propriété du classement seul (p06-03).
- La log-loss note des probabilités. Elle est la NLL d'une Bernoulli : −log p sur un positif, −log(1−p) sur un négatif. Elle sanctionne la valeur annoncée, pas la décision prise (p02-01).
- Prévalence et VPP. P(fraude | alerte) fait entrer le base rate par Bayes ; à 0,3 % de prévalence il s'effondre même pour un excellent détecteur (p00-03).
- Cote et logit. cote = p/(1−p), logit p = log(cote). Multiplier une cote par k ajoute log k au logit : c'est la seule opération algébrique de cette chaîne.
La chaîne
Le décor
Deux modèles de fraude, entraînés sur les mêmes features. A a vu les données telles quelles ; B a vu un jeu rééchantillonné à 50/50 pour « corriger le déséquilibre ».
Ils rangent les transactions dans le même ordre. Même AUC, même courbe ROC, même précision-rappel à rang égal. L'un sert à décider, l'autre non — et rien de ce qui les sépare n'est visible sur la ROC.
« Les deux modèles rangent les transactions dans le même ordre, donc l'AUC et la ROC leur donnent la même note, donc ce qui les distingue n'est pas là où on a l'habitude de regarder. »
100 000 transactions, 300 fraudes : prévalence π = 0,3 %. Les deux modèles ont une AUC de 0,950.
| transaction | rang | score A | score B |
|---|---|---|---|
| t1 | médiane des légitimes | 0,0002 | 0,063 |
| t2 | 1 % les plus suspectes | 0,0021 | 0,406 |
| t3 | — | 0,0030 | 0,500 |
| t4 | très suspecte | 0,178 | 0,986 |
L'ordre est le même ligne après ligne. Sur t3, A annonce trois pour mille et B une chance sur deux. Un seul des deux nombres est vrai.
Discrimination ≠ calibration tronc
Discriminer, c'est ranger les positifs au-dessus des négatifs : une propriété de l'ordre, mesurée par l'AUC. Être calibré, c'est que parmi les cas scorés p, une fraction p soit effectivement positive : une propriété de la valeur.
Toute transformation strictement croissante du score — ×2, exp, rang, une sigmoïde décalée — laisse l'AUC intacte et peut détruire la seconde propriété. Les deux ne se déduisent donc pas l'une de l'autre.
« L'AUC ne regarde que l'ordre, donc toute transformation croissante la conserve, donc elle ne dit rien de la valeur du score, donc la calibration est une propriété séparée qu'il faut mesurer à part. »
Ici B est A vu à travers un décalage constant en logit :
Vérification sur t3 : logit 0,0030 = −5,806, plus 5,806 donne 0, et σ(0) = 0,500. C'est bien le 0,50 de B.
La fonction x ↦ σ(x + 5,806) est strictement croissante : l'AUC des deux modèles est identique au dernier chiffre, 0,950. Le Brier et la log-loss, eux, ne le sont pas du tout — c'est tout le sujet.
Le diagramme de fiabilité
Comment voir la calibration sans formule : regrouper les prédictions par tranche de score, puis tracer la fréquence observée contre le score moyen de la tranche.
Diagonale = calibré. Au-dessus = sous-confiant (on observe plus de positifs qu'annoncé). Au-dessous = sur-confiant. L'AUC ne mesure que la discrimination ; le Brier et la log-loss mesurent la calibration et la discrimination ensemble, en un seul nombre.
« Le diagramme groupe les cas par score annoncé et lit la fréquence réellement observée, donc un écart à la diagonale est un mensonge de la probabilité, donc c'est là que se voit ce que l'AUC ne montre pas. »
| tranche de score | modèle | score moyen | fréquence observée |
|---|---|---|---|
| 0,4 – 0,5 | A | 0,446 | 0,446 |
| 0,4 – 0,5 | B | 0,448 | 0,0025 |
| 0,9 – 1,0 | B | 0,947 | 0,092 |
| 0,8 – 0,9 | C | 0,851 | 0,168 |
A tombe sur la diagonale tranche après tranche — c'est ce que « calibré » veut dire. B annonce une chance sur deux là où il y a 1 fraude sur 400 : sa courbe rampe au ras de l'axe. C est un cas plus ordinaire, celui du modèle simplement trop sûr de lui.
Dix tranches de score ; chaque point porte (score moyen, fréquence observée) et son aire croît avec l'effectif de la tranche — d'où le gros point en bas à gauche : à 0,3 % de prévalence, presque toute la masse y est. Les boutons allument et éteignent chaque modèle. A suit la diagonale, B rampe sur l'axe (il annonce 0,95 pour une fréquence de 0,09), C passe sous la diagonale partout : sur-confiant. Les readouts donnent le Brier et la log-loss des trois — et la même AUC pour les trois, puisque l'ordre est commun.
Brier = MSE sur des probabilités
Le score de Brier est la moyenne des carrés d'écart entre la probabilité annoncée et l'étiquette :
Il se décompose en calibration (écart à la diagonale du diagramme) plus résolution (capacité à s'écarter de la prévalence), moins l'incertitude intrinsèque. La log-loss joue le même rôle mais n'est pas bornée : une erreur confiante y coûte sans limite (p03-01).
« Le Brier est une MSE sur des probabilités, donc le modèle constant à la prévalence vaut π(1 − π), donc tout modèle utile passe sous ce témoin, donc un Brier au-dessus dit que les probabilités sont pires qu'une constante. »
| modèle | Brier | log-loss | AUC |
|---|---|---|---|
| A calibré | 0,00257 | 0,0127 | 0,950 |
| B rééchantillonné | 0,0882 | 0,286 | 0,950 |
| C sur-confiant | 0,00564 | 0,0224 | 0,950 |
| trivial p = 0,003 | 0,00299 | 0,0204 | 0,500 |
Témoin : π(1 − π) = 0,003 × 0,997 = 0,00299. Seul A passe dessous. B est 30 fois pire que la constante, C un peu pire — et tous les trois ont l'AUC d'un excellent détecteur.
C'est l'énoncé à retenir : une AUC de 0,95 et des probabilités pires qu'une constante coexistent sans contradiction.
Le seuil vient des coûts, si les probabilités sont vraies tronc
Sur un cas de probabilité p, décider « négatif » coûte p·cFN en espérance, décider « positif » coûte (1−p)·cFP. On décide positif quand la première espérance dépasse la seconde :
Le seuil ne se cherche pas par balayage : il se calcule, et il ne dépend que des coûts. Mais l'égalité des espérances suppose que p soit la vraie probabilité — sur un score non calibré, ce calcul n'a aucun sens.
« L'espérance de coût de chaque décision dépend de p, donc le seuil optimal est le point où les deux espérances s'égalent, donc il vaut cFP sur la somme des coûts, donc il exige un p calibré. »
cFN = 100 € (la fraude passe), cFP = 1 € (un appel au client). Donc p* = 1/101 = 0,0099.
| seuil sur A | fraudes prises | manquées | fausses alertes | coût |
|---|---|---|---|---|
| 0,0099 | 222 | 78 | 4 640 | 12 400 € |
| 0,10 | 105 | 195 | 331 | 19 900 € |
| 0,50 | 27 | 273 | 13 | 27 300 € |
| tout refuser | 0 | 300 | 0 | 30 000 € |
Le seuil « naturel » 0,50 coûte plus du double de l'optimum. Et au seuil optimal la précision vaut 0,046 : 4 fausses alertes sur 5… sur 20. C'est voulu — à 100 contre 1, on achète des fausses alertes.
Rééchantillonner casse la calibration tronc
Sur-échantillonner les positifs, sous-échantillonner les négatifs, SMOTE : tous portent la prévalence d'entraînement à 50 %. Le modèle apprend alors p(y | x) pour cette prévalence, pas pour la vraie.
Le prior se lit en cote, et l'écart entre les deux priors est un facteur constant :
Le classement est intact, donc l'AUC ne bouge pas. Mais le seuil de coût est faux, et la VPP lue sur les scores est fausse. Rééchantillonner, c'est imposer un prior sans le dire (p02-03, p00-03).
« Changer la prévalence d'entraînement change le prior que le modèle apprend, donc ses probabilités portent le mauvais prior, donc elles ne sont plus calibrées pour la production alors que le classement, lui, n'a pas bougé. »
De 50 % à 0,3 % : 0,997⁄0,003 × 0,5⁄0,5 = 332,3. Toute cote annoncée par B est 332 fois trop grande.
| B annonce | cote B | cote vraie | probabilité vraie |
|---|---|---|---|
| 0,50 | 1 | 0,00301 | 0,0030 |
| 0,90 | 9 | 0,0271 | 0,0264 |
| 0,99 | 99 | 0,298 | 0,230 |
Et en sens inverse, le seuil : p* = 0,0099 vaut la cote 0,01, donc la cote 3,32 chez B, donc 0,769. Sur les scores de B, la décision « fraude » commence à 0,77 — 78 fois plus haut en probabilité, 332 fois en cote.
En abscisse le score annoncé par un modèle entraîné à la prévalence πtrain, en ordonnée ce qu'il vaut réellement en production (axe logarithmique : de 0,001 % à 100 %). Fais glisser πtrain de 0,3 % à 50 % : à 0,3 % la courbe est confondue avec le pointillé d'identité ; dès qu'on rééchantillonne, elle plonge, et le dernier readout donne le seuil qu'il faudrait poser sur ces scores pour prendre la décision de l'étape 5.
Traiter le déséquilibre : seuil > poids > rééchantillonnage
Trois remèdes, dans cet ordre. (a) Le seuil : ne rien changer aux données, le choisir par les coûts ou par la courbe PR. Gratuit, et les probabilités restent vraies.
(b) Les poids (class_weight) : pondérer la loss. C'est un rééchantillonnage sans duplication — mêmes probabilités décalées, à recalibrer ensuite.
(c) Les données : dernier recours, quand les positifs sont trop rares pour que la loss les voie. SMOTE interpole entre positifs voisins : il fabrique des positifs là où il n'y en a pas, et n'aide guère un modèle non linéaire.
« Le seuil se déplace sans toucher au modèle, donc il ne coûte rien et ne casse aucune probabilité, donc on l'essaie avant les poids, et les poids avant les données. »
| remède | change | ordre | calibration |
|---|---|---|---|
| seuil | la décision | intact | intacte |
| poids | la loss | un peu | cassée |
| rééch. | la population | un peu | cassée, ×332 |
| SMOTE | les points | variable | cassée, biaisée |
rééch. = sur- ou sous-échantillonnage ; poids = class_weight ; ×332 = le facteur sur la cote du pas 6.
Le déséquilibre en soi n'est pas une maladie : 300 positifs sur 100 000 suffisent à apprendre si le signal existe. Ce qui gêne, c'est un seuil par défaut à 0,5 — et ça, ça se répare en une ligne, sans toucher aux données.
Recalibrer
Trois outils, tous des transformations croissantes du score — donc sans effet sur l'AUC.
Platt : deux paramètres, robuste sur peu de données. Isotonique : plus souple, corrige n'importe quelle forme, mais surapprend si les données manquent. Température : le Platt des réseaux, un seul paramètre.
Condition non négociable : sur des données non vues par le modèle et à la prévalence cible.
« La recalibration apprend une transformation croissante du score, donc elle ne touche ni au classement ni à l'AUC, donc elle ne peut corriger que la valeur — et seulement si le jeu d'ajustement est non vu et à la bonne prévalence. »
Le défaut de B est un prior, donc un décalage constant en logit : a = 1 et b = logit π − logit πtrain = −5,806 + 0 = −5,806. Un Platt ajusté sur un jeu à 0,3 % retrouve ce nombre.
| B | Brier | log-loss | AUC |
|---|---|---|---|
| avant | 0,0882 | 0,286 | 0,950 |
| après Platt | 0,00257 | 0,0127 | 0,950 |
L'AUC n'a pas bougé d'un millième : la recalibration n'a rien appris sur les données, elle a seulement remis le prior à l'endroit. Le piège symétrique : ajuster ce Platt sur le jeu rééchantillonné à 50/50 le ferait réapprendre le mauvais prior.
Réversibilité de l'erreur
D'où sortent cFN et cFP ? De ce qui se répare. Un faux positif en fraude coûte un appel au client ; un faux négatif coûte la fraude entière, plus le litige.
Règle de lecture : une décision réversible — une alerte qu'un humain revoit, une file de tri — tolère un seuil bas et beaucoup de faux positifs. Une décision irréversible — bloquer un compte, refuser un prêt, poser un diagnostic — exige de la précision, donc un seuil haut.
« Le coût d'une erreur est ce qu'il faut dépenser pour la réparer, donc une erreur réversible a un coût borné et petit, donc le rapport cFN/cFP se lit dans la réparation avant de se lire dans un tableur. »
| coûts | p* | prises | alertes | rappel | précis. |
|---|---|---|---|---|---|
| 10 | 0,0909 | 110 | 379 | 0,366 | 0,225 |
| 100 | 0,0099 | 222 | 4 640 | 0,741 | 0,046 |
| 1 000 | 0,0010 | 285 | 24 451 | 0,949 | 0,012 |
coûts = cFN/cFP ; prises = fraudes détectées sur 300 ; alertes = faux positifs sur 99 700.
Le modèle est le même aux trois lignes. Seul le jugement sur la réparabilité a changé — et il fait passer le rappel de 0,37 à 0,95 et la précision de 0,23 à 0,01.
Coût total du mois en fonction du seuil (abscisse logarithmique), rapporté au coût minimal atteignable : le creux vaut donc 1 par construction. Fais varier cFN/cFP : le creux de la courbe A se déplace et tombe exactement sur le trait vertical cFP/(cFP + cFN) — la formule du pas 5 n'est pas une approximation. La courbe B a le même creux… ailleurs : poser sur ses scores le seuil calculé pour A sort du cadre par le haut, et le readout donne la facture.
Où ça casse casse
« Calibré » est une moyenne, sur une population, à une prévalence donnée. Chacun de ces trois mots est un endroit où ça lâche.
« La calibration est une moyenne sur une population à une prévalence donnée, donc elle peut être vraie globalement et fausse par segment, donc elle se vérifie là où la décision est sensible et se resurveille quand la prévalence dérive. »
- Calibré en moyenne, faux par sous-groupe. Un diagramme global sur la diagonale peut cacher une sur-confiance sur un segment et une sous-confiance sur un autre, qui se compensent. Dès que la décision est sensible à l'appartenance (montant, canal, pays), tracer le diagramme par segment.
- Recalibrer sur les données d'entraînement. Le modèle y est sur-confiant par construction — il a vu ces étiquettes. Le Platt ajusté là-dessus apprend ce biais au lieu de le corriger, et la calibration semble parfaite exactement là où elle ne vaut rien. Jeu non vu, toujours (p06-02).
- Dérive de prévalence. Une calibration est relative à une prévalence : si la fraude passe de 0,3 % à 1 %, toutes les probabilités sont sous-estimées d'un facteur de cote de 3,4 sans qu'aucune alerte ne se déclenche. La prévalence se surveille comme une métrique.
- Coûts inconnus. Sans cFN ni cFP, p* n'existe pas et tout seuil est arbitraire. Les substituts honnêtes : un point choisi sur la courbe PR (p06-03), ou un budget d'alertes — les k plus hauts scores, ce que l'équipe peut traiter par jour.
Résumé
- Discrimination (AUC, l'ordre) ≠ calibration (la valeur des p). Toute transformation croissante conserve l'une et peut détruire l'autre.
- Diagramme de fiabilité : fréquence observée contre score moyen. Brier = MSE sur les p, témoin π(1−π) = 0,003 ; log-loss = même rôle, non bornée.
- Seuil optimal p* = cFP/(cFP + cFN) = 1/101 = 0,0099 — il se calcule, et seulement sur des p calibrés.
- Rééchantillonner déplace le prior appris : les cotes sont multipliées par πtrain/π — ici 332. Classement intact, AUC intacte, décisions fausses.
- Déséquilibre : seuil > poids > données. SMOTE en dernier. Puis recalibrer sur un jeu non vu et à la prévalence cible : Platt, isotonique, température.
- Réversibilité de l'erreur : ce qui se répare fixe cFN et cFP, donc le seuil. Décision réversible ⇒ seuil bas ; irréversible ⇒ précision.
Chaîne verbalisée — une prise, à voix haute
- Même AUC, mêmes décisions ?Non : même ordre, probabilités différentes. L'AUC ne voit que le classement, donc toute transformation croissante la laisse intacte.
- Que montre un diagramme de fiabilité, et que mesure le Brier ?Fréquence observée contre score moyen, par tranche : diagonale = calibré, dessous = sur-confiant. Brier = MSE sur les p ; témoin π(1−π) = 0,003.
- D'où vient le seuil optimal ?Égalité des coûts espérés : p·cFN = (1−p)·cFP, donc p* = cFP/(cFP + cFN) = 1/101. Valide seulement sur un p calibré.
- Que casse exactement le rééchantillonnage ?Le prior appris : les cotes sont multipliées par πtrain/π, ici 332. Le classement et l'AUC ne bougent pas ; le seuil de coût et la VPP sont faux.
- Ordre des remèdes au déséquilibre ?Seuil, puis poids de classe, puis données (SMOTE en dernier) — puis recalibrer. Le seuil ne casse rien, les deux autres cassent la calibration.
- Sur quoi recalibre-t-on ?Sur des données non vues par le modèle, à la prévalence cible. Platt (σ(as+b)), isotonique (escalier), température (un paramètre). Croissantes, donc AUC inchangée.
Ponts et cartes
ml::calibration (diagramme de fiabilité, Platt vs isotonique, jeu non vu) · ml::brier (MSE sur les p, témoin π(1−π), log-loss non bornée) · ml::desequilibre (seuil > poids > données, SMOTE, rapport des cotes) · ml::seuil (p* = cFP/(cFP + cFN), réversibilité de l'erreur).
Une carte qui résiste après cette chaîne est une carte à refondre, pas une section à relire.