Models & Math · ML Systems Lab

Observation Discipline: How to Read Diagnostics Before Naming Concepts

Before any ML concept, this comes first. The single most common reason senior MLE candidates fail interviews — and the single most common reason production models die quietly — is jumping from a symptom to a named concept without doing the observation work in between. You see a train-validation gap and you say "variance." You should not. Not yet.

Observation discipline is the skill of looking at evidence carefully, separating what you see from what you assume, and asking "what changed?" before you reach for a label. It is the foundation under every other ML concept in this curriculum. Most failed interviews and most production incidents trace back to its absence, not to a missing technique.

The lazy label problem

A senior MLE candidate is shown a training curve and a validation curve. There is a gap. They say "overfitting." The interviewer asks why. The candidate cannot give a mechanism — they have matched the visual pattern to a memorised word.

In production, this is even worse. An on-call engineer sees a metric drop. They say "drift." They retrain. The metric is unchanged because the actual problem was a data pipeline timezone bug, not concept drift. A week of engineering time gets spent on the wrong fix because the first word out of someone's mouth became the working hypothesis.

The discipline is to refuse to name the concept until you have done the observation work. There is no point reaching for "variance" or "drift" or "leakage" if you have not yet asked the basic questions: what specifically did I see, what specifically changed, what would I expect to see for each of the candidate explanations, and how can I tell them apart.

Reading a learning curve

A learning curve plots training error and validation error against the size of the training set or the number of training iterations. It looks simple. It is misread constantly.

The four patterns to learn to recognise: (1) High training error AND high validation error AND the curves are roughly equal — this is bias, not variance. The model class lacks capacity to capture the pattern. (2) Low training error AND much higher validation error AND the gap stays roughly constant as data grows — this is variance and adding more data should close the gap. (3) Low training error AND validation error that gets WORSE during training — this is the classical overfit pattern; consider early stopping or regularisation. (4) Training and validation curves that look fine but production metrics fail — this is the most dangerous pattern, and it almost always points to validation contamination (the validation set is not honest) or a metric-vs-objective mismatch.

The discipline: never call a model "overfit" without first ruling out underfit. Never call a model "underfit" without first ruling out validation problems. Never trust a learning curve unless you know exactly how the validation split was constructed.

Comparing train vs validation properly

The train-validation comparison is the single most useful diagnostic in classical ML, and it is constantly misused. The questions to ask in order: (1) Are the train and validation distributions actually the same? If you have a time-series problem and you used random k-fold, your train and validation come from different time slices and the comparison is meaningless. (2) Are the labels equally clean in both? Label noise is often concentrated in recent data, which is often the validation slice. (3) Are you measuring the same thing in both? It is shockingly common for the validation pipeline to apply a different preprocessing step than the training pipeline. (4) Is the gap stable across multiple random seeds? A single train-validation comparison is one sample. Variance across seeds is itself a signal.

Asking "what changed?" before naming

When a metric moves, the discipline is to first list everything that changed between when the metric was at its old value and now. Code changes. Data source changes. Upstream pipeline changes. Schema migrations. Feature engineering changes. Calendar effects (Diwali, payday, weekday vs weekend). Marketing campaigns. Onboarding flow changes. Only after you have the list do you start ranking hypotheses by which changes could plausibly produce the observed pattern.

The opposite — naming the concept first and then hunting for evidence to fit — is how teams spend weeks investigating drift that turned out to be a feature pipeline bug introduced in the same release as the model.

Separating evidence from assumption

The third discipline: when you describe an incident, distinguish between what you have observed and what you have assumed. "Conversion dropped 3% on Tuesday" is an observation. "Conversion dropped because the new model is worse" is an assumption. Most production post-mortems blur the two. The most useful incident write-ups separate them ruthlessly — observations in one column, hypotheses in another, evidence-for-each-hypothesis in a third.

WARNING — Production tell: the silent alignment trap. When an engineer and a stakeholder both reach for the same word for a symptom — "the model drifted" — they often mean very different things. The engineer means the input feature distribution shifted. The stakeholder means the model's predictions stopped matching business expectations. They are talking past each other. The first conversation in any incident response should be to make the engineer say specifically what they observed, free of jargon, and to make the stakeholder describe specifically what they noticed, free of jargon. Only then introduce the technical terms. This single discipline collapses incident-resolution time roughly in half.

Interview questions on this topic

"You see a model with 95% training accuracy and 75% validation accuracy. What is your first response?" — The undisciplined answer is "overfitting, regularise more." The disciplined answer is to ask: how was the validation set constructed; is the distribution the same as production; is the label quality the same; is the gap stable across seeds; have I checked feature importances for stability; have I checked calibration on each set. The single number gap is not enough information to act on. The senior candidate refuses to name the concept until they have ruled out the alternatives.

"A production model's precision drops from 0.82 to 0.75 over two weeks. The on-call engineer says it is concept drift. What should you ask before agreeing?" — Was there any pipeline release in that period? Did the threshold get changed by anyone? Has the prevalence of the positive class changed (which would shift precision without any model change)? Is the precision computed on the same population as before, or has the input distribution shifted in a way that means the model is being applied to different cases? Is the labelling pipeline still capturing positives at the same rate? Concept drift is one of perhaps eight plausible explanations and is the least common in practice.

"A junior analyst reports that adding a new feature improved validation AUC by 0.02. Should you ship the change?" — Not until you have audited the feature for leakage. The first questions: is this feature available at prediction time? Is it computed using only data from before the prediction timestamp? Has it ever taken the future value of the target into account, even indirectly through an upstream aggregation? Has the analyst run a temporal cross-validation to confirm the improvement holds? Junior analysts almost always overestimate AUC gains because they almost always miss subtle leakage. Validating the gain is the senior move.

"What is the difference between 'the model is biased' and 'the data is biased'?" — Model bias (as in bias-variance) is systematic prediction error from a too-simple model class. Data bias is a property of the data generation process: certain groups are under-represented, labels are systematically wrong for certain populations, or features have been collected with measurement error that varies by group. Confusing the two leads to wrong fixes: model bias is fixed with a richer model; data bias is fixed by changing how data is collected, labelled, or sampled. A model with high data bias and low model bias will fit the biased data perfectly and fail in production on the under-represented group.

Try on Colab: take any well-behaved tabular dataset (Wisconsin Breast Cancer, Adult Income). Train a model. Now deliberately introduce four different problems: (1) random k-fold on a time-shuffled version of the data with a fake timestamp added, (2) a target leakage column constructed as the label plus small noise, (3) a label noise injection (flip 10% of labels in the validation set only), (4) a feature scaling bug where validation uses different scaler parameters than training. Each one will produce a misleading validation result. Walk through the four cases and for each one, identify which observation would have caught the problem before you trusted the metric. This is the practical version of observation discipline.

Continue interactively
Read this post inside ML Systems Lab — with Simplify toggle, interview Q&As, inline glossary, and the MLE Path forward pointer.
Open in MSL →