Choisir un seuil de classification selon le coût des faux positifs et des faux négatifs
Un guide pratique pour sélectionner un seuil de décision en pondérant les coûts des faux positifs et des faux négatifs, en utilisant un jeu de validation tenu de côté et les matrices de confusion de scikit-learn.
Dans ce guide
La réponse courte
Comparez les seuils candidats sur des données de validation en utilisant des coûts d'erreur explicites. Pour les comptages hypothétiques de ce guide, la variante A a quatre faux positifs et un faux négatif ; la variante B en a un et trois. Avec des coûts de 1 et 5, leurs totaux sont 9 et 16, donc A est moins coûteuse entre ces deux options. C'est un calcul illustratif, pas un résultat de modèle ajusté ni une preuve du seuil globalement optimal. Gardez les données de test finales séparées et évaluez l'incertitude et les conditions de déploiement.
Séparer les scores des décisions
Un classificateur produit un score, tandis qu'un seuil transforme ce score en décision. Pour une règle binaire, vous pouvez définir la décision positive comme le score supérieur ou égal au seuil. Le sens du score et la classe positive doivent être explicites. Une valeur ressemblant à une probabilité n'établit pas en soi que le modèle est calibré.
Changer le seuil modifie quels cas reçoivent des décisions positives et négatives. Il ne réentraîne pas le modèle sous-jacent ni ne rend ses probabilités non biaisées. Un seuil conventionnel comme 0,5 est un point de départ pour les scores de probabilité, pas un réglage universel optimal en coût. Comparez les alternatives par rapport à la décision dont vous avez réellement besoin.
Spécifier quelle erreur coûte plus cher
Dans de nombreux domaines, un faux négatif (FN) est beaucoup plus préjudiciable qu'un faux positif (FP). La sélection de seuil sensible aux coûts nécessite que l'utilisateur attribue des pénalités numériques, par exemple coût(FP)=1 et coût(FN)=5. Ces nombres ne sont pas dérivés des données ; ils reflètent l'expertise du domaine, l'impact réglementaire ou les dépenses en aval. Une fois les coûts fixés, le coût total pour un seuil donné est simplement coût(FP)·FP + coût(FN)·FN.
Compter la matrice de confusion
La confusion_matrix de scikit-learn suit la convention lignes = classe réelle, colonnes = classe prédite. Pour des problèmes binaires avec labels=[0,1], les entrées sont : TN = C[0,0], FP = C[0,1], FN = C[1,0], TP = C[1,1]. En utilisant les scores de validation et un seuil candidat, nous pouvons obtenir y_pred = (probs >= thr).astype(int) puis appeler confusion_matrix(y_val, y_pred, labels=[0,1]).
Comparer deux seuils illustratifs
Utilisez des comptages de confusion explicitement hypothétiques : la variante A a FP=4 et FN=1, et la variante B a FP=1 et FN=3. Soit un faux positif coûtant une unité et un faux négatif coûtant cinq unités. Le total pour A est 1*4 + 5*1 = 9. Le total pour B est 1*1 + 5*3 = 16.
A est moins coûteuse parmi ces deux options construites même si B a moins de faux positifs. Ces comptages sont fournis pour l'illustration arithmétique ; le code n'entraîne pas de classificateur ni ne les produit à partir d'un jeu de données. Les deux totaux imprimés ci-dessous sont des résultats attendus dérivés de la formule, pas des observations d'un test exécuté.
cost_fp = 1
cost_fn = 5
fp_a, fn_a = 4, 1
fp_b, fn_b = 1, 3
cost_a = cost_fp * fp_a + cost_fn * fn_a
cost_b = cost_fp * fp_b + cost_fn * fn_b
print("Cost A:", cost_a)
print("Cost B:", cost_b)
Choisir sur validation tenue de côté
Entraînez le modèle sur les données d'entraînement, puis comparez les seuils sur des prédictions de validation séparées. Ne calculez pas les comptages de validation en utilisant les mêmes observations qui ont ajusté le modèle. Utilisez une partition appropriée pour la tâche : un problème chronologique peut nécessiter une partition respectant le temps plutôt qu'un échantillonnage aléatoire.
La sélection du seuil elle-même utilise les résultats de validation, donc rapporter le plus petit coût de validation observé peut être optimiste. Une partition séparée empêche la réutilisation directe des exemples d'entraînement pour le réglage ; elle ne garantit pas une estimation non biaisée ni assez de cas positifs. Enregistrez la partition, les seuils candidats, les comptages de classe et les hypothèses de coût afin que la comparaison puisse être interprétée.
Garder la sélection du seuil loin du jeu de test
Figez le modèle, le seuil et le prétraitement avant d'évaluer sur des données de test finales qui n'ont pas été utilisées pour l'ajustement ou la sélection du seuil. Si les résultats de test vous amènent à réajuster, cet échantillon devient partie du processus de sélection et ne joue plus le même rôle d'évaluation indépendante.
Un jeu de test indépendant est utile mais pas une garantie de performance en production. Un petit échantillon, une population non représentative ou des conditions changeantes peuvent fausser l'estimation. Rapportez les comptages observés, la taille de l'échantillon et l'incertitude plutôt que de qualifier un seul total de coût garanti ou non biaisé en production.
Vérifier la prévalence de déploiement
La prévalence de déploiement est la proportion de cas positifs dans la population où la décision sera utilisée. Elle peut différer de la prévalence de validation. Pour comparer les coûts attendus par cas sous une prévalence proposée p, utilisez coût_fp*(1-p)*FPR + coût_fn*p*FNR, où FPR est la fraction des cas négatifs classés positifs et FNR est la fraction des cas positifs classés négatifs.
Cet ajustement suppose que les taux d'erreur conditionnels restent applicables sous la distribution de classe changée. Il ne gère pas les changements arbitraires dans les caractéristiques, la calibration ou le processus d'étiquetage. Les deux classes ont besoin d'observations suffisantes pour estimer leurs taux. Multiplier le coût attendu par cas par une taille de population proposée donne un total sous ces hypothèses ; ne comparez pas les comptages bruts de populations de tailles différentes comme s'ils étaient interchangeables.
Indiquer ce que la comparaison de coûts omet
La formule de coût simple ignore plusieurs facteurs réels : (1) la valeur monétaire des actions en aval (par exemple, tests supplémentaires), (2) l'incertitude dans les estimations de coût, (3) les avantages potentiels de la détection précoce au-delà des résultats binaires, et (4) l'effet de la calibration - les estimations de probabilité peuvent être biaisées, faisant apparaître un seuil bas comme moins coûteux qu'il ne l'est réellement. Ces omissions doivent être documentées, et une analyse de sensibilité peut être effectuée en faisant varier les paramètres de coût.
Points à vérifier
- Définissez explicitement la classe positive et le sens du score.
- Gardez les observations d'entraînement et de sélection du seuil séparées.
- Avec labels=[0,1], lisez la matrice de confusion comme TN, FP, FN, TP dans l'ordre par lignes.
- Indiquez les coûts des faux positifs et des faux négatifs, y compris leurs unités.
- Considérez les totaux 9 et 16 comme des exemples arithmétiques construits.
- Gardez les données de test finales hors de la sélection du seuil.
- Lors de l'ajustement de la prévalence, indiquez l'hypothèse sur les taux d'erreur conditionnels.
Champ d’application
L'exemple utilise des comptages de confusion binaire hypothétiques et des coûts fixes. Il identifie l'option moins coûteuse parmi deux, pas un seuil globalement optimal. Des partitions de validation ou de test indépendantes ne garantissent pas des estimations de production non biaisées, des probabilités calibrées ou une stabilité face aux changements de distribution. Les déploiements réels nécessitent des données représentatives, une analyse d'incertitude et des hypothèses de coût justifiées.