Hook — Dartboard এর গল্প
Dart ছুঁড়ে কেউ সবগুলো center এর পাশে এক জায়গায় ফেলেছে (low variance, high bias)। আরেকজন এদিক ওদিক ছড়িয়ে ফেলেছে কিন্তু গড়ে center এ (low bias, high variance)। ভালো model — দুটোই কম।
Concept — তিন উপাদান
E[(y − ŷ)²] = Bias² + Variance + Irreducible Noise
- Bias — model এর সরলীকরণ থেকে ভুল (underfit)।
- Variance — training data এর প্রতি sensitivity (overfit)।
- Noise — কমানো অসম্ভব, data এর inherent randomness।
Diagnose কীভাবে
- High bias — train ও test দুটোই কম accuracy।
- High variance — train অনেক ভালো, test অনেক কম।
- Just right — দুটোই ভালো, gap ছোট।
Tool
Learning Curve plot করলে গল্পটা চোখে দেখা যায়।
কীভাবে ঠিক করব
- High bias → বড় model, feature বাড়াও, regularization কমাও।
- High variance → বেশি data, regularization বাড়াও, simpler model, ensemble (bagging)।
Code — Learning Curve
learning_curve.py
import numpy as np, matplotlib.pyplot as plt
from sklearn.model_selection import learning_curve
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_breast_cancer
X, y = load_breast_cancer(return_X_y=True)
sizes, tr, te = learning_curve(
DecisionTreeClassifier(max_depth=None, random_state=0),
X, y, cv=5, train_sizes=np.linspace(0.1, 1.0, 8)
)
plt.plot(sizes, tr.mean(1), label="Train")
plt.plot(sizes, te.mean(1), label="Validation")
plt.xlabel("Training size"); plt.ylabel("Accuracy"); plt.legend(); plt.show()Common Mistakes
- শুধু test score দেখে judge — train score ছাড়া diagnose অসম্পূর্ণ।
- Overfit হলে শুধু model বদলানো — data বাড়ানো সবচেয়ে কার্যকর প্রায়শই।
Summary
এক নজরে
Bias-Variance tradeoff = সব ML problem এর মূল debug ভাষা।