Umbral por minimización del coste de negocio esperado
Cuando un falso negativo cuesta 50 veces más que un falso positivo, el umbral correcto no se lee en ninguna curva estándar: se minimiza directamente el coste total esperado sobre la validación.
Requisitos
numpy, scikit-learn
Python
import numpy as np
from sklearn.metrics import confusion_matrix
COUT_FP = 10.0 # vérification manuelle inutile
COUT_FN = 500.0 # fraude passée inaperçue
proba_val = model.predict_proba(X_val)[:, 1]
seuils = np.linspace(0.01, 0.99, 99)
couts = []
for s in seuils:
pred = (proba_val >= s).astype(int)
tn, fp, fn, tp = confusion_matrix(y_val, pred).ravel()
couts.append(fp * COUT_FP + fn * COUT_FN)
best = int(np.argmin(couts))
print(f"Seuil optimal coût : {seuils[best]:.2f}")
print(f"Coût attendu : {couts[best]:,.0f}")
print(f"Coût au seuil 0.50 : {couts[49]:,.0f}")
# L'écart entre les deux lignes = argent laissé sur la table par défaut.Resultado
Seuil optimal coût : 0.08 Coût attendu : 28,750 Coût au seuil 0.50 : 61,230 >>> float((proba_val >= 0.08).mean()) # part du flux vérifiée à ce seuil 0.214
Coût métierSeuilDécisionAsymétrie