TL;DR: 99.5% accuracy means the model predicts "negative" for everything. Fix measurement (precision/recall, PR AUC), then training (class weights beat SMOTE in production), then the operating point, and recalibrate, because resampling distorts the probabilities every downstream dollar threshold depends on.
How to approach it
Name the trap immediately, predicting "negative" for everything scores 99.5% accuracy and catches zero events, then structure the answer in three moves: fix the measurement, fix the training, fix the operating point.
A strong answer
Measurement first.
Step 2 is the whole diagnosis and it takes one sentence. Everything after it is ordered by how much damage it can do: measurement changes nothing about the data, and step 8 is what keeps a better ranker from becoming a worse decision. Switch to precision/recall, PR AUC, and a confusion matrix at a business-relevant threshold. Build the evaluation set before touching the model, with 0.5% positives, a 10,000-row validation set holds only ~50 positive examples, so metric estimates are noisy; stratify the split and consider pooling more history just for evaluation.
Training fixes, in order of preference:
- Class weights / cost-sensitive loss, weight the minority class higher (e.g.,
class_weight={0:1, 1:50}). No data distortion, one-line change, works with logistic regression and tree ensembles. This is the production-safe default. - Undersample the majority, train on all ~500 positives plus a sample of negatives. Fast iterations; you discard information but with 100k+ negatives that's usually fine.
- Oversampling / SMOTE, duplicate or synthesize minority examples. Be openly skeptical: SMOTE interpolates in feature space and routinely manufactures impossible records with real customer data (a synthetic "transaction" halfway between two real ones may violate business rules), and on tabular problems class weights typically match or beat it. Saying "I rarely need SMOTE in production" reads like someone who has shipped.
- Get more positives, often the highest-leverage move an FDE can make: mine another year of history, broaden the positive definition with the customer, or commission labeling (this is Scale's home turf). 500 → 5,000 real positives beats any resampling trick.
Operating point last. Resampling and reweighting distort predicted probabilities, and the distortion is computable, which is worth doing once so the customer conversation has numbers in it. Train on data rebalanced to 50/50 from a true base rate of 0.5%, and a score of "60% fraud" from the balanced model corresponds, after correcting the prior shift back, to a true probability of about 0.75%. A "90% confident" alert maps back to about 4.3% (both computed with the standard prior-correction odds adjustment). That is the exact anatomy of the classic complaint, "every alert says 90% and only a few percent are real": nobody's model was broken, the probabilities were simply speaking the rebalanced world's language while the thresholds and dollar rules listened in the real world's. Either recalibrate (Platt scaling / isotonic regression on an unbalanced holdout) or pick thresholds empirically on real-distribution data. Then set the threshold against the customer's constraint: "your team can review 200 alerts/day; here's the recall that buys."
What interviewers probe next
- "Why do class weights and oversampling behave similarly?", both reshape the effective loss; weights do it without inflating dataset size or leaking duplicates across CV folds.
- "Where does SMOTE leak?", if you oversample before splitting, synthetic points derived from training rows land in validation. Resample inside each fold only.
- "Extreme imbalance, 1 in 100,000?", consider anomaly-detection framing (train on negatives only), two-stage funnels (cheap high-recall filter, then a precise model), and active learning to label the most informative cases.
- "How do you explain the probability distortion to a customer?", show calibration curves; promise alert rankings are trustworthy even while raw scores are being recalibrated.
Common mistakes
Stopping at "accuracy is misleading, use F1." Reaching for SMOTE as a reflex because it's the famous answer, interviewers at Scale and Google increasingly probe whether you know its production failure modes. Resampling before the train/test split (leakage). And forgetting calibration entirely, which surfaces weeks later when the customer asks why every alert claims 90% confidence and only 3% are real.
