Machine Learning

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

Snippets relacionados

Volver al Data Lab