Bias-Variance ট্রেডঅফ
এই পাঠে যা শিখবেন
- Bias ও Variance — গাণিতিক সংজ্ঞা ও স্বজ্ঞাত অর্থ
- Underfitting ও Overfitting — কীভাবে চিনবেন
- মডেল complexity বাড়ালে কী হয় — চিত্রসহ
- NumPy দিয়ে hands-on demo
- Tradeoff কমানোর কৌশল
১ · প্রশ্নটি: কেন মডেল ভুল করে?
প্রতিটি মডেলের prediction-এ ভুল থাকে। কিন্তু সব ভুল একই ধরনের নয়। ১৯৯২-এ Geman, Bienenstock & Doursat একটি classic decomposition দিয়েছিলেন — যা এখনো ML-এর শেখার কেন্দ্রে।
$$\text{Expected Error} = \underbrace{(\text{Bias})^2}_{\text{ভুল ধারণা}} + \underbrace{\text{Variance}}_{\text{অস্থিরতা}} + \underbrace{\sigma^2}_{\text{noise — irreducible}}$$
এই তিন উপাদান ML-এর সব দ্বন্দ্বের ব্যাখ্যা — কেন বড় মডেল সবসময় ভাল না, কেন আরো ডেটা সমাধান, কেন regularization কাজ করে।
২ · Bias — সরলতার মূল্য
BiasBiasমডেল-এর গড় prediction এবং সঠিক উত্তরের মধ্যে systematic পার্থক্য। উচ্চ bias = মডেল উদ্দেশ্যপ্রণোদিতভাবে "ভুল" — কারণ তার hypothesis class সীমিত। মাপে — আপনি যদি অসংখ্যবার মডেল train করেন (বিভিন্ন training set-এ), তাদের গড় prediction সঠিক উত্তরের কত কাছে।
$$\text{Bias}(\hat{f}) = \mathbb{E}[\hat{f}(x)] - f^*(x)$$
উদাহরণ: আপনি একটি sine wave fit করতে চান, কিন্তু $\mathcal{H}$ = সব linear function। যত ডেটা দিন — linear function sine ধরতে পারে না। গড় prediction sine থেকে দূরে — উচ্চ bias।
উচ্চ bias-এর লক্ষণ:
- Training error বেশি (মডেল train data-ও ফিট করতে পারছে না)।
- Validation error প্রায় সমান training error-এর।
- আরো ডেটা যোগ করলেও সাহায্য হয় না।
৩ · Variance — চঞ্চলতার মূল্য
VarianceVarianceভিন্ন training set-এ মডেল কত আলাদা prediction দেয়। উচ্চ variance = মডেল sensitive — সামান্য ডেটা পরিবর্তনে বিশাল পরিবর্তন। মাপে — ভিন্ন training set দিলে মডেল কতটুকু আলাদা।
$$\text{Variance}(\hat{f}) = \mathbb{E}\left[(\hat{f}(x) - \mathbb{E}[\hat{f}(x)])^2\right]$$
উদাহরণ: ১০-degree polynomial — ১০০ point fit করতে ১০০টি বাঁক বানিয়ে ফেলে। ভিন্ন ১০০ point দিলে — সম্পূর্ণ ভিন্ন বাঁক। উচ্চ variance।
উচ্চ variance-এর লক্ষণ:
- Training error প্রায় ০।
- Validation error অনেক বেশি (gap বড়)।
- ভিন্ন split-এ accuracy অনেক ভিন্ন।
৪ · জ্যামিতিক স্বজ্ঞা — Dart Board
Bias-Variance বুঝার চিরচেনা analogy — চারটি dart board:
- Low bias, low variance: সব dart bullseye-তে ও কাছাকাছি — আদর্শ মডেল।
- Low bias, high variance: dart-গুলোর গড় bullseye, কিন্তু ছড়িয়ে — overfitting।
- High bias, low variance: dart একসাথে কিন্তু wrong corner-এ — underfitting।
- High bias, high variance: ছড়িয়ে এবং ভুল জায়গায় — সবচেয়ে খারাপ।
৫ · গাণিতিক প্রমাণ (sketch)
Squared loss-এ true target $y = f^*(x) + \epsilon$ যেখানে $\epsilon$ noise (mean ০, variance $\sigma^2$)। Expected test error $(y - \hat{f}(x))^2$ এর expectation:
$$\mathbb{E}[(y - \hat{f}(x))^2] = (\mathbb{E}[\hat{f}] - f^*)^2 + \mathbb{E}[(\hat{f} - \mathbb{E}[\hat{f}])^2] + \sigma^2$$
$$= \text{Bias}^2 + \text{Variance} + \text{Irreducible Error}$$
$\sigma^2$ — irreducible: কোনো মডেল noise predict করতে পারে না। আমরা শুধু Bias ও Variance optimize করতে পারি।
৬ · NumPy demo — hands-on
একটি sine wave-এ polynomial degree বাড়ালে কী হয় — দেখুন:
import numpy as np
# True function: sin(x) on [0, 2π]
def true_f(x): return np.sin(x)
# Generate noisy training data
np.random.seed(0)
X_train = np.random.uniform(0, 2*np.pi, 30)
y_train = true_f(X_train) + np.random.normal(0, 0.2, 30)
# Test on dense grid
X_test = np.linspace(0, 2*np.pi, 200)
y_test = true_f(X_test)
# তিনটি ভিন্ন degree
for deg in [1, 4, 15]:
coef = np.polyfit(X_train, y_train, deg)
pred = np.polyval(coef, X_test)
train_pred = np.polyval(coef, X_train)
train_err = np.mean((train_pred - y_train) ** 2)
test_err = np.mean((pred - y_test) ** 2)
print(f"degree={deg:2d} train MSE={train_err:.4f} test MSE={test_err:.4f}")
৭ · কোনটি bias, কোনটি variance — কীভাবে চিনবেন
Train low + Test low: ✅ ভাল — sweet spot।
Train high + Test high: ⚠️ Underfitting — high bias।
Train low + Test high: ⚠️ Overfitting — high variance।
Train high + Test low: ❓ অস্বাভাবিক — সম্ভবত data leakage বা bug।
৮ · Tradeoff কমানোর কৌশল
Bias কমাতে (underfitting):
- Larger model — polynomial degree, NN width/depth।
- Feature engineering — non-linear features (L08)।
- Boosting — multiple weak learners (L23)।
- Regularization কমান।
Variance কমাতে (overfitting):
- আরো ডেটা — সবচেয়ে কার্যকর।
- Regularization (L15 — Ridge, Lasso)।
- Smaller model।
- Bagging (L21 — Random Forest)।
- Dropout (NN-এ)।
- Early stopping।
৯ · আধুনিক বিস্ময় — Double Descent
Classical theory বলে — variance বাড়লে error বাড়ে। কিন্তু Belkin et al. (২০১৯) Deep Learning-এ "double descent" দেখাল — মডেল আরও বড় হলে error প্রথমে বাড়ে, তারপর আবার কমে! এটি classical bias-variance theory-র extension — এখনো গবেষণা চলছে।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ "আমার মডেল train accuracy ৯৯%, test accuracy ৬০%" — overfitting। কিন্তু "train ৬০%, test ৬০%" — underfitting। দু'টো ক্ষেত্রে আপনি প্রথম কী চেষ্টা করবেন এবং কেন?
এই দু'টি — Andrew Ng-এর "ML Yearning" বইয়ের core diagnostic। সঠিক identification → সঠিক intervention।
Case 1: Overfitting (train ৯৯, test ৬০) — High Variance
প্রথম তিন স্টেপ:
- (১) আরো ডেটা সংগ্রহ: সবসময় #1 প্রতিকার। ১০K → ১০০K হলে variance dramatically কমে। কিন্তু expensive।
- (২) Regularization বাড়ান: Free, immediate। L2 lambda বাড়ান, dropout rate বাড়ান। দ্রুত feedback।
- (৩) Model size কমান: Neural network — fewer layers/neurons। Tree — depth কমান। Polynomial — degree কমান।
আরো — data augmentation, ensemble (bagging), early stopping, simpler model class।
Case 2: Underfitting (train ৬০, test ৬০) — High Bias
প্রথম তিন স্টেপ:
- (১) Larger model: বেশি parameter → বেশি capacity। NN-এ layers/width বাড়ান। Tree depth বাড়ান। Linear → polynomial।
- (২) Feature engineering: Domain expertise লাগান। interaction terms, polynomial features, log/sqrt transformations। প্রায়ই magic।
- (৩) Train longer: Optimization এখনও convergence-এ পৌঁছায়নি। আরো epochs, lower learning rate stops।
আরো — Regularization কমান, boosting algorithm, different model architecture।
Counter-intuitive insight:
- "আরো ডেটা" overfitting-এ সাহায্য করে — কিন্তু underfitting-এ অর্থহীন। মডেল-ই capacity-less।
- "Regularization" overfitting-এ ভাল — কিন্তু underfitting-এ খারাপ। বাড়ানো লাগবে capacity, কমানো না।
Practical workflow:
- Always start simple — baseline model।
- Underfitting? — capacity বাড়ান।
- Overfitting? — regularize/ensemble।
- Both fixed? — done, deploy।
মূল উপলব্ধি: "Bigger model" সবসময় উত্তর নয়। সঠিক diagnostic → সঠিক treatment।
প্র ০২ "আরো ডেটা" সবসময় overfitting-এর সমাধান বলা হয়। কিন্তু কখন এটি কাজ করে না? এর গাণিতিক ব্যাখ্যা?
"More data is the answer" — popular wisdom। কিন্তু সবসময় না — এর সীমাবদ্ধতা বুঝা ML expertise-এর গভীর স্তর।
কখন আরো ডেটা কাজ করে:
- মডেল-এর capacity যথেষ্ট কিন্তু variance high।
- Statistical learning theory অনুসারে — variance $O(1/n)$ rate-এ কমে।
- ১০০ → ১K — সাধারণত nice improvement।
- ১K → ১০K — moderate।
- ১০K → ১০০K — diminishing।
কখন আরো ডেটা কাজ করে না:
(১) Bias dominated:
- Linear model কে non-linear ডেটায় train করছেন।
- আরো ডেটা — bias একই রকম থাকবে। Variance আরো কমবে — কিন্তু total error reduce নাটকীয়ভাবে নয়।
- সমাধান — model class বদলান, ডেটা না।
(২) Distribution mismatch:
- Train ঢাকার data, test চট্টগ্রামের। আরো ঢাকার data — চট্টগ্রামে সাহায্য সীমিত।
- সমাধান — domain adaptation, transfer learning, target domain data।
(৩) Noise dominated:
- Irreducible error $\sigma^2$ — কোনো ডেটায় reduce হয় না।
- Stock price-এ ৫০% noise — আরো ডেটা = সমান প্রায় পরিবেশের ৫০% noise।
- সমাধান — accept lower bound, या additional features।
(৪) Label noise:
- লেবেল-এ ১০% ভুল — আরো ডেটা মানে আরো ভুল।
- সমাধান — data cleaning, robust loss functions।
(৫) Concept drift:
- ২০২২-এর pattern আজ আর প্রাসঙ্গিক না।
- পুরোনো ডেটা যোগ করলে — হয়তো আরো confuse।
- সমাধান — recent data prefer, time-decay weighting।
গাণিতিক ব্যাখ্যা:
- Test error = Bias² + Variance + Noise
- Variance = $O(d/n)$ যেখানে $d$ = effective complexity।
- $n \to \infty$ → variance $\to$ 0।
- কিন্তু Bias ও Noise unchanged।
- Total error → Bias² + Noise — irreducible floor।
Practical learning curve diagnostic:
- X-axis: dataset size; Y-axis: train ও test error।
- Plateau-এ পৌঁছেছে? — আরো ডেটা useless।
- এখনো decreasing? — আরো ডেটা সাহায্য করবে।
- scikit-learn-এ
learning_curve।
মূল উপলব্ধি: "More data" simple rule, কিন্তু complete নয়। Diagnose first, then act।
প্র ০৩ Random Forest প্রায়ই single Decision Tree থেকে ভাল কাজ করে। Bias-Variance perspective-এ এর কারণ ব্যাখ্যা করুন। Boosting (XGBoost) কীভাবে আলাদা?
Ensemble methods — practical ML-এর কেন্দ্র। তাদের শক্তি bias-variance lens-এ ব্যাখ্যাযোগ্য।
Single Decision Tree:
- Deep tree — high variance। সামান্য ডেটা পরিবর্তনে completely different tree।
- Low bias — যথেষ্ট flexible সব pattern capture-এ।
- Test accuracy অস্থির।
Random Forest = Bagging:
- ১০০টি tree, প্রতিটি bootstrap sample-এ। প্রতি split-এ random feature subset।
- Average prediction।
- গাণিতিক — variance কমানো:
- $N$ uncorrelated estimators-এর গড়ের variance = $\sigma^2/N$।
- Trees correlated হয় (একই data) — exact $1/N$ পাওয়া যায় না।
- Random feature selection correlation কমায় — variance কমে আরো।
- Bias? তেমন বদলায় না — average ও individual tree-এর গড় bias একই।
- Net effect: same bias, lower variance → ভাল।
Boosting (XGBoost):
- Sequential weak learners — প্রতিটি previous-এর errors fix করে।
- Shallow trees — high bias individually।
- একসাথে — bias ক্রমশ কমে।
- Variance-এর কী হয়?
- Individual weak learner low variance।
- Sequential combination হলে variance বাড়ে — careful regularization (depth limit, learning rate, num_trees)।
- সঠিক tuning-এ — low bias + low variance।
সারসংক্ষেপ:
| Method | Base learner | Strategy | কী reduce |
|---|---|---|---|
| Bagging (RF) | Deep tree | Parallel + averaging | Variance |
| Boosting (XGB) | Shallow tree | Sequential + correction | Bias |
প্র্যাকটিক্যাল implication:
- Noisy data — RF (variance reduction)।
- Clean data + complex pattern — XGBoost (bias reduction)।
- Kaggle-এ XGBoost dominant — কারণ data সাধারণত clean ও large।
মূল উপলব্ধি: Ensemble "magic" নয় — bias-variance principle-এর ingenious প্রয়োগ। L21-২৬-এ বিস্তারিত।
প্র ০৪ "Double Descent" phenomenon (Belkin et al., 2019) — Deep Learning কেন classical bias-variance theory-কে challenge করে? এর implication কী?
Double Descent — modern ML-এর সবচেয়ে চমকপ্রদ আবিষ্কার। Classical theory পুরোপুরি explain করতে পারে না।
Classical prediction (U-curve):
- Complexity বাড়ালে — error প্রথমে কমে, তারপর বাড়ে।
- Sweet spot — middle-এ।
- "Don't overfit" — small model preferred।
Belkin et al. (2019)-এর observation:
- Modern NN, kernel methods — অনেক বড় হলে error আবার কমে!
- "Interpolation threshold" — যেখানে exactly training data fit হয়।
- সেই threshold-এর পর — keep growing → error decrease।
- Plot — দু'টি descent: classical valley + interpolation regime descent।
কেন এমন হয়:
- Implicit regularization: SGD-এর gradient noise = soft regularization।
- Lottery ticket hypothesis: বড় network-এ "winning subnetworks"।
- Margin-based generalization: Many-parameter solutions large margin tend করে।
- NTK (Neural Tangent Kernel): Infinite-width limit-এ kernel method — generalize করে।
Implication:
- Bigger isn't worse: GPT-৪ (১.৭৬T parameters) "should overfit" — কিন্তু না।
- Overparameterization helpful: বেশি parameter optimization landscape-কে smooth করে।
- Classical wisdom পাল্টাচ্ছে: "AIC, BIC" criteria less relevant।
সতর্কতা — কখন এটি apply করে না:
- Tabular data, small dataset — classical U-curve still rules। XGBoost ছোট/মাঝারি best।
- Noisy labels — overfitting still real।
- Limited compute — practically interpolation threshold reach impossible।
2024 update:
- Scaling laws (Hoffmann et al., Chinchilla) — model size + data size জুটি optimize।
- Compute-optimal — neither too large model, nor too small।
- Deep learning maturing — new design principles emerging।
Philosophical implication:
- Theory প্রায়ই empirical observation-কে trail করে।
- "Overparameterized" models work — কেন তা পুরোপুরি understood নয়।
- ML researcher হলে — classical foundation শেখুন, কিন্তু modern phenomenon-এর প্রতি curious থাকুন।
Bottom line:
- Tabular/small ML — Bias-Variance classical-ই কাজ করে।
- Deep learning — extension এখনো গবেষণায়।
- Bias-Variance কনসেপ্ট প্রাসঙ্গিক — কিন্তু simple U-curve অসম্পূর্ণ।
মূল উপলব্ধি: ML "settled science" নয় — actively-evolving discipline। Classical foundation মাস্টারিং সাথে modern observation প্রতি humility।
অনুশীলন
-
চিনুন: নিচের প্রতিটি case — high bias, high variance, না both?
- (ক) Train MSE ০.০২, Test MSE ০.৫০
- (খ) Train MSE ০.৪০, Test MSE ০.৪৫
- (গ) Train MSE ০.৪০, Test MSE ১.২০
- (ঘ) Train MSE ০.০২, Test MSE ০.০৩
- (ক) High variance — overfitting
- (খ) High bias — underfitting
- (গ) Both high — খুব খারাপ মডেল
- (ঘ) Sweet spot — ভাল
-
NumPy চালান: উপরের polynomial demo চালান। degree=২, ৩, ৭, ১০ চেষ্টা করুন। কোথায় sweet spot?
সাধারণত degree ৩-৫-এ minimum test error। ১০-এ overfitting।
-
চিন্তা: একজন colleague-এর model train ৯৮%, test ৭০%। Overfitting। তিনি ৩টি জিনিস চেষ্টা করেছেন: (১) আরো features যোগ, (২) Tree depth ১০ → ২০, (৩) Training epochs ১০০ → ৫০০। কেন কোনটাই কাজ করল না?
সব ৩টি — variance বাড়ানোর কাজ করেছে! Overfitting-এ কাজ করে capacity কমানো বা regularize: regularization, dropout, fewer features, shallower trees, early stopping, more data।
আরও পড়ুন
- পাঠ ০৫ · Cross-validation পরবর্তী পাঠ Bias-Variance estimate করার robust পদ্ধতি।
- পাঠ ০৩ · Train/Val/Test আগের পাঠ এই tradeoff মাপার কাঠামো।
- পাঠ ১৫ · Ridge ও Lasso এই পাঠের সাথে সম্পর্কিত Variance কমানোর গাণিতিক হাতিয়ার।
- AI Foundations · L29 · Overfitting প্রাসঙ্গিক Underfitting/Overfitting-এর intuitive ব্যাখ্যা।