Interview Insights · Data Scientist
Why Most Data Scientist Candidates Can't Defend Their Own Numbers
Quick summary — Defending numbers
Candidates rarely fail because their numbers are bad. They fail because they cannot explain where the numbers came from or how much to trust them. Data scientists are supposed to be the people who question numbers. So when a candidate cannot defend their own metric, it is a serious signal. The fix is preparation: for every number on your resume and in your project story, know the data and split it came from, the baseline it beat, an interval that shows its uncertainty and whether a change is relative or absolute.
In this guide you will learn:
- The four questions every reported number must survive
- How to compute a confidence interval for a model metric with bootstrapping
- The difference between percent and percentage points, and why interviewers care
- How to test whether one model is really better than another
- A number-defence sheet for your resume
SECTION 01Where did this number come from?
The first follow-up is about origin. Which dataset? Which split? Training data, validation data or a final test set? Measured before or after tuning? A surprising number of candidates cannot answer, because they copied the best result from a notebook without writing down how it was produced.
If I hear 'I think it was the validation score', I start to suspect that the number was chosen as the best of many runs, which makes it optimistic. If I hear 'it is the test set score, measured once after all tuning, on the last three months of data', I believe it.
| Resume claim | Question it triggers | Weak defence | Strong defence |
|---|---|---|---|
| Achieved 92% accuracy | On which data, with what class balance? | On the dataset | Test set, 18% positives, baseline 82% |
| Improved F1 by 15% | Relative or absolute? From what? | It went up a lot | From 0.52 to 0.60, a relative gain of about 15% |
| Reduced forecast error | Which error metric, against what forecast? | The RMSE dropped | MAE vs last-week naive forecast, on a later period |
| Model saves money | How was that estimated? | Management said so | Simulated with stated cost assumptions, not measured |
Interviewer: Your resume says you improved accuracy by 12%.
Improved from what?
Candidate: From the earlier model.
Interviewer: What was its accuracy?
Candidate: Around 80, I think. Or maybe that was F1.
Interviewer: Was the 12% measured on the test set?
Candidate: It was the best score I got while tuning.Interviewer: Your resume says you improved recall.
Candidate: Yes. Recall on the positive class went from
0.61 with the logistic regression baseline to 0.68 with
the gradient boosting model, at the same precision of 0.50.
That is seven percentage points. I measured both on the
same held-out test set, which was the final two months
of data, and I only scored that set once.
The test set was small, so I bootstrapped an interval.
The new model's recall was roughly 0.64 to 0.72, so the
improvement is real but I would not claim more precision
than that.
Notice that the strong candidate fixed precision when comparing recall. Comparing recall at different thresholds is a common trick, often unintentional, that makes one model look better. Saying 'at the same precision' closes that gap before I find it.
SECTION 02How sure are you? Putting an interval on a metric
A single metric from one test set is an estimate. If your test set had a few hundred rows, a different sample could easily give a noticeably different score. Interviewers who have worked with small datasets know this, and they will ask how stable your number is.
The practical tool is the bootstrap. You resample the test set with replacement many times, recompute the metric each time and take the middle 95% of results as an interval. It needs no formulas, works for almost any metric and is easy to explain aloud.
| Situation | Risk to your number | What to report | Tool |
|---|---|---|---|
| Small test set | Score changes a lot with a new sample | Metric plus a 95% interval | Bootstrap resampling |
| A rate such as conversion | Point estimate hides uncertainty | Rate with a Wilson interval | proportion_confint |
| Cross-validation results | One fold may be unusual | Mean and standard deviation across folds | cross_val_score |
| Rare positive class | Few positives drive recall | Number of positives alongside recall | Simple counts |
import numpy as np
from sklearn.metrics import roc_auc_score
def bootstrap_ci(y_true, y_score, metric=roc_auc_score,
n_boot=2000, alpha=0.05, seed=42):
rng = np.random.default_rng(seed)
y_true = np.asarray(y_true)
y_score = np.asarray(y_score)
n = len(y_true)
stats = []
for _ in range(n_boot):
idx = rng.integers(0, n, n)
if len(np.unique(y_true[idx])) < 2: # AUC needs both classes
continue
stats.append(metric(y_true[idx], y_score[idx]))
lo, hi = np.percentile(stats, [100 * alpha / 2, 100 * (1 - alpha / 2)])
return metric(y_true, y_score), lo, hi
auc, lo, hi = bootstrap_ci(y_test, proba)
print(f"AUC {auc:.3f} (95% CI {lo:.3f} to {hi:.3f})")from statsmodels.stats.proportion import proportion_confint
# Example: 46 conversions out of 520 users who saw the new page
conversions, users = 46, 520
rate = conversions / users
low, high = proportion_confint(conversions, users,
alpha=0.05, method="wilson")
print(f"rate {rate:.3f}, 95% CI {low:.3f} to {high:.3f}")
# Spoken: "The observed rate is about 8.8 percent, but with
# this many users the plausible range is roughly 6.7 to 11.6
# percent. I would not make a big decision on this alone."
The figures in the rate example are illustrative inputs, and the interval printed comes from them. In your own project, run the same code on your real counts. The point is the habit of saying a range, not a single number.
SECTION 03Relative or absolute, and is the difference real?
The last trap is meaning. 'Improved accuracy by 5%' can mean from 80% to 85% (five percentage points) or from 80% to 84% (a five percent relative gain). Interviewers notice when candidates mix these up, and some candidates use the relative version because it sounds bigger.
Then comes the harder question: is the improvement real, or within noise? Two models scored on the same test set can be compared with a paired test such as McNemar's, which looks only at the rows where the two models disagree.
| Change described | Absolute (points) | Relative (%) | Honest way to say it |
|---|---|---|---|
| Accuracy 80% to 85% | 5 points | 6.25% relative | Up five percentage points, from 80 to 85 |
| Churn rate 10% to 8% | 2 points | 20% relative reduction | Down two points, a fifth of the original rate |
| F1 0.50 to 0.55 | 0.05 | 10% relative | F1 up 0.05, from 0.50 to 0.55 |
| Error 4.0 to 3.6 units | 0.4 units | 10% relative | MAE down 0.4 units, about a tenth |
import numpy as np
from statsmodels.stats.contingency_tables import mcnemar
# pred_a, pred_b: class predictions from two models on the same test set
correct_a = (pred_a == y_test)
correct_b = (pred_b == y_test)
table = [
[np.sum(correct_a & correct_b), np.sum(correct_a & ~correct_b)],
[np.sum(~correct_a & correct_b), np.sum(~correct_a & ~correct_b)],
]
result = mcnemar(table, exact=False, correction=True)
print(table)
print(f"statistic={result.statistic:.2f}, p-value={result.pvalue:.4f}")
# Only the off-diagonal cells matter: rows where one model
# is right and the other is wrong.Q: Is model B really better than model A?
A: "Both were scored on the same test set, so I used a
paired comparison rather than comparing two separate
accuracy numbers.
McNemar's test looks only at rows where the models
disagree. If B fixes many more of A's mistakes than it
introduces, the test shows it.
In my project the p-value was below 0.05, so I treated
the improvement as real. I also checked that it held
within the bootstrap intervals and across folds.
If it had not, I would have kept model A, because it was
simpler."
Ending with 'I would have kept the simpler model' is a strong move. It shows that your goal is the right decision, not the bigger number, and that you treat complexity as a cost.
SECTION 04The number-defence sheet for your resume
Write one sheet for every number on your resume and in your main project story. If any field stays blank, either fill it before the interview or remove the number.
CLAIM ON RESUME: _______________________________
Metric and exact value: _______________________
Dataset and split: ____________________________
Number of rows / positives: ___________________
Measured once at the end? Y / N
Baseline or previous value: ___________________
Absolute change: ______ Relative change: ______
95% interval (bootstrap or formula): __________
What it means in plain words: _________________BEFORE -> AFTER (illustrative wording)
"Improved accuracy by 12%"
-> "Raised recall from 0.61 to 0.68 at fixed precision
versus a logistic regression baseline"
"Built a highly accurate model"
-> "Gradient boosting model, AUC 0.78 on a later
time period, baseline 0.70"
"Reduced costs significantly"
-> "Simulated a lower contact cost under stated
assumptions; real impact not yet measured"
Use your own true figures, never invented ones.ASK YOURSELF ALOUD FOR EACH NUMBER
1. Where exactly did this number come from?
2. Training, validation or test data?
3. How many examples, and how many positives?
4. What was the baseline value?
5. Is the change in points or percent?
6. What is a plausible range for the true value?
7. Would it survive a different random seed?
8. What decision does this number support?
SECTION 05Habits that keep your numbers defensible
These habits start long before the interview, while you are still building the project.
- Log results as you go — Write each experiment's metric, split, date and settings in a simple table so you never rely on memory.
- Fix the random seed — Set seeds for splits and models so you can reproduce the exact number you report.
- Say 'points' for absolute changes — Use 'percentage points' for differences between rates. It removes ambiguity instantly.
- Report ranges by default — Attach an interval or a cross-validation spread to every headline metric in your README.
- Remove numbers you cannot defend — A resume with fewer, solid numbers is stronger than one with many shaky ones.
SECTION 06Interview Q&A — Defending numbers
Q1How would you report the performance of a model on a small test set?
I would report the metric along with the number of examples and positives, and add a confidence interval, usually from bootstrapping the test set. If possible I would also show cross-validation results so the reader can see how stable the score is.
Q2What is the difference between percent and percentage points?
Percentage points describe the absolute difference between two percentages, such as 80% to 85% being five points. Percent describes a relative change, so the same move is a 6.25% relative increase. Mixing them up can make results sound larger than they are.
Q3How do you know if one model is really better than another?
Compare them on the same test data with a paired method. McNemar's test works for classification predictions, and a paired bootstrap of the metric difference works for most metrics. I also check that the improvement is consistent across folds.
Q4What is bootstrapping in simple terms?
It means repeatedly drawing samples of the same size from your data with replacement, computing the statistic each time and looking at how much it varies. The middle 95% of those values gives an approximate confidence interval.
Q5Why is the best validation score not a fair number to report?
If you tried many models or settings and picked the best validation score, that score is optimistic because it benefited from luck in the selection. A fair estimate comes from a separate test set scored once after all choices are made.
SECTION 07Test yourself — Defending numbers quiz
Five questions. No sign-up.
0 / 5Pick an answer to see why it is right or wrong.
SECTION 08Frequently asked questions
How do I explain the numbers on my data science resume?
For each number, be ready to say which data and split it came from, what it was compared against, how many examples it was based on, whether the change is absolute or relative, and roughly how uncertain it is.
What is a confidence interval for a model metric?
It is a range that likely contains the metric's true value on new data. For model metrics it is often estimated by bootstrapping the test set and taking the middle 95% of the resampled results.
Should I put accuracy numbers on my data science resume?
Only if you can defend them. Prefer the metric that fits the problem, include the baseline and make sure the number is a fair test set estimate. Remove any number you cannot explain.
How do I compare two machine learning models statistically?
Evaluate both on the same test set and use a paired method, such as McNemar's test for predictions or a paired bootstrap of the difference in metric. Also check consistency across cross-validation folds.
What does relative improvement mean in machine learning?
It is the change divided by the starting value. Going from an F1 of 0.50 to 0.55 is an absolute gain of 0.05 and a relative gain of 10%. State both to avoid confusion.
Is there a course that covers Data Scientist interview answers?
Yes. Uncodemy's Data Science Training Course in Noida (classroom and online) includes live projects, one-to-one mock interviews and resume reviews, so you practise Data Scientist interview answers with trainer feedback before the real interview. You can book a free demo class from this page to see how the sessions work.
SECTION 09Related reads
Classroom & online · Noida
Report numbers you can always defend
Our Data Science Training Course covers statistics, machine learning evaluation and Python, with project reviews where trainers challenge your metrics the way interviewers do.
Talk to a counsellor for current fees- Statistics for ML
- Evaluation and testing labs
- Resume number review
- Mock interview rounds