← vibelogs
[2026-08-28]Rahulupdated 2026-08-28DATA-SCIENCE

Can you trust the probability?

A fraud model says 0.95 on a $10,000 transaction. Can you read that as "95% chance of fraud"? Usually no. I trained a fraud model on real data to check. Here is the whole idea in five pictures.

1. The model says 0.95. Reality says 0.51.

Model score 0.95 "very confident" transactions scored ≥ 0.95 (real data) fraud (51%) clean (49%)

real numbers: ULB credit card dataset (284,807 transactions, 492 frauds). gradient boosting trained on 1:5 undersampled data. on a 40% holdout, 330 transactions scored ≥ 0.95 and 167 of them (50.6%) were actually fraud.

2. Ranking is not measuring

Ranking "A is riskier than B" ✓ A > B the model is good at this Measuring "0.95 means 95%" ? 0.95 ≠ 95% the model is often bad at this

automated decisions need the right side to be true.

3. The reliability curve shows the lie

calibrated: score = reality this model: score too high says 0.95, real 0.51 0.0 1.0 model score actual fraud rate 0.0 1.0

green dashed line = trustworthy. blue curve = this model on the holdout. mid scores are even worse: bins from 0.5 to 0.9 are only 1-2% fraud. one number for the whole gap: ECE.

4. Fix: calibrate on data the model never saw

raw score 0.95 Platt or isotonic fit on holdout only true prob 0.51

calibrating on training data just memorizes the miscalibration.

5. Now the number can make the decision

Expected loss = P(fraud) × $10,000 raw 0.95 $9,500 calibrated 0.51 $5,100 cost of blocking a good customer above the green line → block. below it → let it through.

$5,100 still clears the line here, so block. a 0.51 on a $500 transaction would not.

The whole pipeline

score calibrated P expected loss action

not score → block.