Passa al contenuto principale

Metriche per fraud detection

1. La confusion matrix come fondamento

Ogni metrica di classificazione binaria deriva dalla confusion matrix:

Predetto Legit (0)Predetto Fraud (1)
Reale Legit (0)TN (true negative)FP (false positive)
Reale Fraud (1)FN (false negative)TP (true positive)

Le quattro celle hanno significati di business molto diversi:

  • TP: frode correttamente identificata e bloccata. Risparmiamo l'importo.
  • FN: frode mancata. Costo = perdita media su una frode.
  • FP: transazione legittima bloccata. Costo = chargeback friction + lavoro umano + customer experience.
  • TN: transazione legittima passata. Outcome neutro.

In fraud detection cost(FN) ≫ cost(FP) (tipicamente 20–100×). Questo asimmetria è il vero driver delle scelte di metrica e soglia.

2. Le tre metriche fondamentali

2.1 Recall (sensitivity, TPR)

Recall=TPTP+FN\text{Recall} = \frac{TP}{TP + FN}

Frazione di frodi reali che il modello riesce a identificare.

  • Recall = 1: il modello becca tutte le frodi (ma può avere molti falsi allarmi).
  • Recall = 0: il modello non becca nessuna frode.

In fraud detection è la metrica più diretta sull'obiettivo di business: "quante frodi stiamo evitando".

2.2 Precision (PPV)

Precision=TPTP+FP\text{Precision} = \frac{TP}{TP + FP}

Frazione di allarmi che corrispondono a frodi vere.

  • Precision = 1: ogni allarme è una vera frode (ma magari ne stiamo mancando tante).
  • Precision = 0: tutti gli allarmi sono falsi.

In fraud detection misura la qualità degli allarmi: precision bassa = troppe transazioni legittime bloccate = clienti irritati.

2.3 F1-score (media armonica)

F1=2PrecisionRecallPrecision+RecallF_1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}

Compromesso fra le due. Il massimo si ottiene quando precision = recall.

:::warning F1 dà uguale peso a precision e recall Se in fraud detection cost(FN) ≫ cost(FP), F1 sotto-pesa il recall. La generalizzazione corretta è F-beta. :::

3. F-beta: dare peso esplicito al recall

Fβ=(1+β2)PrecisionRecallβ2Precision+RecallF_\beta = (1 + \beta^2) \cdot \frac{\text{Precision} \cdot \text{Recall}}{\beta^2 \cdot \text{Precision} + \text{Recall}}
  • β=1\beta = 1: equivalente a F1.
  • β=2\beta = 2: il recall pesa 4× la precision (F2). Consigliato per fraud detection.
  • β=0,5\beta = 0{,}5: la precision pesa 4× il recall (F0.5). Usato in spam filtering, dove FP costa molto.
from sklearn.metrics import fbeta_score
f2 = fbeta_score(y_true, y_pred, beta=2.0)

4. AUC-PR: la metrica primaria

L'Area Under the Precision-Recall Curve misura la qualità del ranking del modello indipendentemente da una soglia specifica.

AUC-PR=01Precision(Recall)d(Recall)\text{AUC-PR} = \int_0^1 \text{Precision}(\text{Recall}) \, d(\text{Recall})

scikit-learn la calcola via average_precision_score:

from sklearn.metrics import average_precision_score
ap = average_precision_score(y_true, y_proba)

Range e baseline

  • Random classifier: AUC-PR ≈ prevalenza della classe positiva.
  • Modello perfetto: AUC-PR = 1.

Su Kaggle Fraud (~0.5% frodi), un AUC-PR > 0,3 è già un buon segnale; > 0,7 è eccellente.

5. Costo atteso: la metrica di business

Per problemi con costo asimmetrico, la vera funzione obiettivo è il costo atteso:

E[cost]=cFNFN+cFPFP+cTNTN+cTPTP\mathbb{E}[\text{cost}] = c_{\text{FN}} \cdot FN + c_{\text{FP}} \cdot FP + c_{\text{TN}} \cdot TN + c_{\text{TP}} \cdot TP

Con valori indicativi cFN=120c_{\text{FN}} = 120 (perdita media frode), cFP=5c_{\text{FP}} = 5 (chargeback friction), cTN=cTP=0c_{\text{TN}} = c_{\text{TP}} = 0.

Il vantaggio: questa metrica:

  1. Tiene conto dell'asimmetria.
  2. È in unità monetarie comprensibili al business.
  3. Permette di scegliere la soglia ottimale in modo principled (vedi Threshold tuning).

6. AUC-ROC: usare con cautela

AUC-ROC=01TPR(FPR)d(FPR)\text{AUC-ROC} = \int_0^1 \text{TPR}(\text{FPR}) \, d(\text{FPR})

Su dataset bilanciati è eccellente. Su dataset sbilanciati come fraud (0,5% positivi):

  • L'AUC-ROC tende a essere artificialmente alta perché il denominatore FPR = FP / (FP + TN) ha TN enorme.
  • È poco sensibile alle differenze fra modelli quando entrambi sono "ragionevoli" sul ranking globale.

Si riporta comunque per completezza ma non è la metrica primaria.

7. Matthews Correlation Coefficient (MCC)

MCC=TPTNFPFN(TP+FP)(TP+FN)(TN+FP)(TN+FN)\text{MCC} = \frac{TP \cdot TN - FP \cdot FN}{\sqrt{(TP+FP)(TP+FN)(TN+FP)(TN+FN)}}

Range [1,+1][-1, +1]: -1 = predizione invertita, 0 = casuale, +1 = perfetto. Più stabile di F1 quando le classi sono molto sbilanciate, perché coinvolge tutte e quattro le celle della confusion matrix. È usato come tie-breaker quando AUC-PR fra modelli è simile.

8. Tabella riassuntiva: quale metrica per quale scopo

ScopoMetrica primariaNote
Confronto modelli (ranking globale)AUC-PRIndipendente dalla soglia
Decisione "quanto blocco a soglia tt?"Precision @ tt"Quanti dei blocchi sono veri?"
Decisione "quante frodi prendo?"Recall @ tt"Quante frodi su tutte intercetto?"
Confronto fra modelli sbilanciatoF2 (recall-leaning)Rispecchia priorita' fraud detection
Decisione finale di businessExpected costIn dollari, comprensibile a tutti
Tie-break o sanity checkMCCRobusto sui 4 quadranti
Comunicazione esecutivaRecall + PrecisionDue numeri, intuitivi
Da non usare come primariaAccuracy, AUC-ROCFuorvianti su dataset sbilanciati

9. Diagnostica: leggere errori, non solo numeri

Le metriche aggregate non bastano. Bisogna diagnosticare gli errori del modello:

  • Distribuzione delle FN: importi piccoli? Categorie specifiche? Orari notturni? L'analisi rivela pattern non catturati e suggerisce nuove feature.
  • Distribuzione delle FP: tipi di transazioni "border-line" del cliente? Possono indicare bisogno di una soglia per-customer.
  • Score distribution per classe: se le distribuzioni di predict_proba sulle classi 0 e 1 sono ben separate, il modello discrimina; se sono sovrapposte, c'è poco segnale (o feature insufficienti).

Vedi notebooks/04_threshold_tuning_and_errors.ipynb per l'implementazione concreta.

10. Riferimenti

  • Saito, T. & Rehmsmeier, M. (2015). The Precision-Recall Plot Is More Informative than the ROC Plot When Evaluating Binary Classifiers on Imbalanced Datasets, PLoS ONE 10(3).
  • Powers, D. M. W. (2011). Evaluation: From Precision, Recall and F-Measure to ROC, Informedness, Markedness and Correlation, JMLT 2(1).
  • Chicco, D. & Jurman, G. (2020). The advantages of the Matthews correlation coefficient (MCC) over F1 score and accuracy in binary classification evaluation, BMC Genomics 21(6).
  • scikit-learn user guide: Classification metrics.