Data Science · Tricky Terms
Confusing Data Science Terms Explained in Simple Words
Quick summary — confusing data science terms made simple
The most confusing data science terms come in pairs: correlation vs causation, p-value vs effect size, bias vs variance, overfitting vs underfitting, precision vs recall, accuracy vs balanced metrics, validation set vs test set and normalisation vs standardisation. Each pair has a simple difference and a small example that makes it stick.
In this guide you will learn:
- Statistics pairs — explained simply.
- Model and metric pairs — with code.
- Data preparation pairs — that trip beginners.
- Memory aids — for every pair.
- Interview questions — built on these confusions.
SECTION 01Confusing statistics pairs
Statistics terms are often confused because they describe related ideas. Mixing them up can lead to wrong conclusions, such as claiming one thing causes another when the data only shows they move together, or treating a tiny but significant difference as important. These pairs come up again and again in projects and interviews:
| Pair | Simple difference | Example | Memory aid |
|---|---|---|---|
| Correlation vs causation | Moving together vs one causing the other | Ice cream sales and sunburn both rise in summer | Look for a hidden third factor |
| p-value vs effect size | How surprising vs how big | Tiny difference can be significant in huge data | Significant does not mean important |
| Mean vs median | Average vs middle value | A few very high salaries pull the mean up | Median resists outliers |
| Population vs sample | Everyone vs the group you measured | All customers vs 1,000 surveyed | Samples estimate populations |
import statistics
monthly_spend = [800, 950, 1000, 1100, 1200, 40000] # one very large customer
print("mean: ", round(statistics.mean(monthly_spend)))
print("median:", statistics.median(monthly_spend))
# The mean is pulled up by one customer; the median shows a typical one.
import numpy as np
from scipy import stats
rng = np.random.default_rng(0)
a = rng.normal(100.0, 15, 200_000)
b = rng.normal(100.3, 15, 200_000) # tiny true difference
t, p = stats.ttest_ind(a, b)
print(f"p-value: {p:.2e}") # very small -> 'significant'
print(f"difference in means: {b.mean() - a.mean():.2f}") # but tiny effect
# Always report the effect size, not just the p-value.
SECTION 02Confusing model and metric pairs
When building models, beginners often confuse terms that describe why a model fails or how to measure it. Bias and variance describe two different kinds of error. Precision and recall describe two different kinds of success. Accuracy can look excellent while a model fails completely on the cases that matter. These pairs are central to evaluating models properly:
| Pair | Simple difference | Example | Memory aid |
|---|---|---|---|
| Bias vs variance | Too simple vs too sensitive to training data | Straight line on curved data vs wiggly curve | Bias misses, variance memorises |
| Overfitting vs underfitting | Great on train, poor on test vs poor on both | Deep tree vs very shallow tree | Check the train-test gap |
| Precision vs recall | Right when it flags vs finds all real cases | Fraud flags that are correct vs fraud caught | Precision: purity; recall: coverage |
| Accuracy vs balanced metrics | Overall correct vs fair across classes | 99% accuracy predicting 'no fraud' always | Check the minority class |
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
X, y = make_classification(n_samples=800, n_features=8, flip_y=0.1, random_state=1)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, random_state=1)
for depth, label in [(1, "underfit"), (4, "balanced"), (None, "overfit")]:
m = DecisionTreeClassifier(max_depth=depth, random_state=1).fit(X_tr, y_tr)
print(f"{label:9} train={m.score(X_tr, y_tr):.2f} test={m.score(X_te, y_te):.2f}")
from sklearn.metrics import accuracy_score, recall_score, balanced_accuracy_score
# 100 transactions, 2 are fraud; the model always predicts 'not fraud'
y_true = [1, 1] + [0] * 98
y_pred = [0] * 100
print("accuracy: ", accuracy_score(y_true, y_pred)) # 0.98
print("recall (fraud): ", recall_score(y_true, y_pred)) # 0.0
print("balanced accuracy:", balanced_accuracy_score(y_true, y_pred)) # 0.5
SECTION 03Confusing data preparation pairs
Data preparation has its own confusing pairs. Validation and test sets sound similar but serve different purposes. Normalisation and standardisation are both called scaling but work differently. Label encoding and one-hot encoding both turn categories into numbers, with very different effects on some models. Getting these right prevents subtle mistakes such as leakage or misleading results:
| Pair | Simple difference | Example | Memory aid |
|---|---|---|---|
| Validation vs test set | Used for tuning vs used once at the end | Pick tree depth on validation, report test score | Test set is the final exam |
| Normalisation vs standardisation | Scale to 0-1 vs mean 0, standard deviation 1 | MinMaxScaler vs StandardScaler | Range vs spread |
| Label vs one-hot encoding | One number per category vs one column per category | City as 0,1,2 vs three 0/1 columns | Avoid fake order in labels |
| Feature vs target | Input vs answer to predict | Age, spend vs churned | Features help predict the target |
import numpy as np
from sklearn.preprocessing import MinMaxScaler, StandardScaler
spend = np.array([[200], [500], [800], [1100], [5000]])
print("normalised (0-1):", MinMaxScaler().fit_transform(spend).ravel().round(2))
print("standardised: ", StandardScaler().fit_transform(spend).ravel().round(2))
# Fit scalers on training data only, then apply to validation and test.
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
X, y = make_classification(n_samples=1000, random_state=3)
X_tmp, X_test, y_tmp, y_test = train_test_split(X, y, test_size=0.2, random_state=3)
X_tr, X_val, y_tr, y_val = train_test_split(X_tmp, y_tmp, test_size=0.25, random_state=3)
best = max([2, 4, 6, 8], key=lambda d: DecisionTreeClassifier(max_depth=d, random_state=3)
.fit(X_tr, y_tr).score(X_val, y_val)) # tune on validation
final = DecisionTreeClassifier(max_depth=best, random_state=3).fit(X_tmp, y_tmp)
print("chosen depth:", best, "test score:", round(final.score(X_test, y_test), 3))
SECTION 04Memory aids for confusing terms
Use these templates to remember the differences and test yourself:
Correlation vs causation -> 'Together' is not 'because'
p-value vs effect size -> Surprising is not the same as big
Bias vs variance -> Too simple vs too jumpy
Precision vs recall -> Purity of flags vs coverage of cases
Validation vs test -> Practice test vs final exam
Normalise vs standardise -> Squeeze into a range vs centre and scale
Pair: ____________ vs ____________
One-line difference: ______________________
Everyday example: ______________________
Code check: ______________________
When the mix-up causes harm: ______________________
Answer in one sentence each:
1. Why does correlation not prove causation?
2. Can a result be significant but unimportant?
3. What does a big train-test gap tell you?
4. When does recall matter more than precision?
5. Why keep the test set untouched until the end?
6. When might one-hot encoding be better than label encoding?
SECTION 05Tips for mastering confusing terms
These habits make tricky terms easier to remember:
- Learn in pairs — compare the two terms directly, side by side.
- Attach one example — a simple story beats a formal definition.
- Prove it in code — a tiny script shows the difference clearly.
- Explain it aloud — if you can say it simply, you understand it.
- Revisit before interviews — these pairs are favourite interview questions.
SECTION 06Interview Q&A — tricky DS terms
Q1What is the difference between correlation and causation?
Correlation means two variables move together. Causation means one directly affects the other. A hidden factor can create correlation without causation.
Q2Explain the bias-variance trade-off.
Simple models may miss patterns (high bias); complex models may learn noise (high variance). Good models balance both to generalise well.
Q3Why can accuracy be misleading?
On imbalanced data, a model can be highly accurate by always predicting the majority class while missing the cases that matter.
Q4What is the difference between a validation set and a test set?
The validation set is used for tuning and model choice; the test set is used once at the end for an unbiased performance estimate.
Q5When would you use the median instead of the mean?
When data has outliers or is skewed, such as income or spend, because the median represents a typical value better.
SECTION 07Test yourself — tricky DS terms quiz
Five questions. No sign-up.
0 / 5Pick an answer to see why it is right or wrong.
SECTION 08Frequently asked questions
What are the most confusing data science terms for beginners?
Common ones include correlation vs causation, p-value vs effect size, bias vs variance, precision vs recall, and validation set vs test set.
What is the difference between precision and recall in simple words?
Precision asks how many flagged items were correct. Recall asks how many of the real cases were found.
What does overfitting mean in simple words?
The model memorises the training data, including noise, so it performs well on training data but poorly on new data.
Is a low p-value always important?
No. A low p-value means a result is unlikely to be chance, but the effect may still be too small to matter. Check the effect size.
Why do we need both validation and test sets?
The validation set helps choose and tune models. The test set gives a fair final score because it was not used in any decisions.
SECTION 09Related reads
Classroom & online · Noida
Understand data science deeply, not just by name
Our Data Science Training Course explains statistics and machine learning concepts with code, projects and mentor support.
Talk to a counsellor for current fees- Concepts with code
- Statistics and ML
- Portfolio projects
- Weekday & weekend batches