Practical MLপড়তে ৭ মিনিট লাগবে

বায়াস বনাম ভ্যারিয়েন্স (Bias vs Variance)

খুব সাধারণ নাকি বেশি অগোছালো — এর মাঝামাঝি একটি পারফেক্ট জায়গা (sweet spot) খুঁজে বের করুন
high bias:আন্ডারফিটিং (Underfitting) · মডেলটি অনেক বেশি সাধারণ (simple)high variance:ওভারফিটিং (Overfitting) · মডেলটি অনেক বেশি জটিল (complex)sweet spot:লো বায়াস (Low bias) + লো ভ্যারিয়েন্স (low variance)

ধরা যাক, আপনি একটি ডার্টবোর্ড (dartboard) প্রতিযোগিতায় অংশ নিয়েছেন। আপনার দুজন বন্ধু খেলছে:

  • অ্যালিস (Alice) তার প্রতিটি ডার্ট একটি নির্দিষ্ট জায়গায় কাছাকাছি মেরেছে — কিন্তু সেই জায়াগাটি মূল কেন্দ্র বা বুলসআই (bullseye) থেকে একটু বাম (left) দিকে সরে গেছে। সে অনেক নিখুঁত বা প্রিসাইজ (precise) হলেও, সে মূলত অফ-টার্গেট (off-target) বা আসল লক্ষ্য থেকে সরে গেছে।
  • অন্যদিকে বব (Bob)-এর ডার্টগুলো পুরো বোর্ড জুড়েই এলোমেলোভাবে ছড়িয়ে ছিটিয়ে আছে। এর মধ্যে কিছু হয়তো কেন্দ্রের কাছাকাছি লেগেছে, আর কিছু আবার দেয়াল গিয়ে বিঁধেছে। সে কোনো নির্দিষ্ট দিকে বায়াসড (biased) ছিল না (অর্থাৎ সে এক পাশে মারার চেষ্টা করেনি), কিন্তু তার থ্রো (throws) বা ছোড়াগুলো অনেক বেশি এলোমেলো আর অগোছালো (inconsistent) ছিল।

অ্যালিসের অবস্থাটি হলো হাই বায়াস, লো ভ্যারিয়েন্স (high bias, low variance)। আর ববের অবস্থাটি হলো লো বায়াস, হাই ভ্যারিয়েন্স (low bias, high variance)। আপনার মূল লক্ষ্য কী? এদের কারও মতোই ডার্ট না ছোড়া। আপনি অবশ্যই চাইবেন আপনার ডার্টগুলো যেন কাছাকাছি এবং একেবারে কেন্দ্রে (tight AND centered) থাকে — মেশিন লার্নিংয়ের ক্ষেত্রে এটিই হলো সেই পারফেক্ট জায়গা বা সুইট স্পট (sweet spot)।

বায়াস (Bias) কী?

বায়াস (Bias) হলো এমন একটি অবস্থা যেখানে আপনার মডেল অনেক বেশি সহজ ও সাধারণ (simplistic) অনুমান করে বসে। এটি মূলত কোনো বাঁকানো ডেটার ওপর দিয়ে একটি সোজা লাইন টানার মতো। এ অবস্থায় আপনি মডেলটিকে যত বেশি ডেটাই দিন না কেন, মডেলটি কোনোভাবেই এর আসল প্যাটার্নটি ধরতে পারে না। আর এটিকে আন্ডারফিটিং (underfitting) বলা হয়।

ধরা যাক, আপনি মেঘের ছবি আঁকার জন্য একটি সোজা রুলার বা স্কেল (ruler) ব্যবহার করছেন। কিন্তু স্কেলটি তো আর মেঘের মতো বাঁকানো নয় — মেঘটা যত আঁকাবাঁকাই হোক না কেন, স্কেল আপনাকে সব সময় একটি সোজা লাইনই দেবে।

ভ্যারিয়েন্স (Variance) কী?

ভ্যারিয়েন্স (Variance) হলো এমন একটি অবস্থা যখন আপনার মডেল ট্রেইনিং ডেটার প্রতি অনেক বেশি সংবেদনশীল (sensitive) হয়ে পড়ে। এটি ডেটার প্রতিটি ছোটখাটো বাঁক, ধাক্কা এবং নয়েজ (noise) মুখস্থ করে ফেলে। ফলে এটি ট্রেইনিং সেটে দারুণ পারফর্ম করলেও নতুন ডেটায় গিয়ে একেবারে কাজে আসে না (falls apart)। আর এটিকে ওভারফিটিং (overfitting) বলা হয়।

ধরুন, এবার আপনি আপনার কাঁপাকাঁপা হাত আর খুব সরু বা চিকন একটি কলম দিয়ে সেই একই মেঘের ছবি আঁকা শুরু করলেন। এবার আপনি বাতাসের প্রতিটি ছোটখাটো পরিবর্তন বা নয়েজগুলোও খুব ভালোভাবে ধরে ফেললেন, কিন্তু এর ফলে বাতাস একটু এদিক-সেদিক হওয়ার কারণে আপনার প্রতিটি আঁকা ছবি একেবারেই আলাদা বা ভিন্ন হতে শুরু করলো।

পলিনোমিয়াল ফিটস দিয়ে বায়াস এবং ভ্যারিয়েন্সের তুলনা করা (Seeing Bias vs Variance with Polynomial Fits)

import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.metrics import mean_squared_error
# আসল প্যাটার্ন: y = x^2 (নয়েজ বা অগোছালো মান সহ)
np.random.seed(42)
X = np.random.uniform(0, 5, 20).reshape(-1, 1)
y = X.flatten()**2 + np.random.normal(0, 2, 20)
# হাই বায়াস (High bias): একটি সোজা লাইন ফিট করা (ঘাত বা ডিগ্রি 1)
model_simple = LinearRegression()
model_simple.fit(X, y)
print(f"লিনিয়ার MSE: {mean_squared_error(y, model_simple.predict(X)):.2f}")
# সুইট স্পট (Sweet spot): একটি কোয়াড্রেটিক লাইন (quadratic line) ফিট করা (ঘাত বা ডিগ্রি 2)
poly2 = PolynomialFeatures(degree=2)
model_good = LinearRegression().fit(poly2.fit_transform(X), y)
print(f"কোয়াড্রেটিক MSE: {mean_squared_error(y, model_good.predict(poly2.transform(X))):.2f}")
# হাই ভ্যারিয়েন্স (High variance): ডিগ্রি ১৫ -এর একটি পলিনোমিয়াল (polynomial) ফিট করা
poly15 = PolynomialFeatures(degree=15)
model_overfit = LinearRegression().fit(poly15.fit_transform(X), y)
print(f"ডিগ্রি-১৫ MSE: {mean_squared_error(y, model_overfit.predict(poly15.transform(X))):.2f}")
Output
লিনিয়ার MSE: 18.43
কোয়াড্রেটিক MSE: 3.12
ডিগ্রি-১৫ MSE: 0.01

ট্রেডঅফ বা ভারসাম্য তৈরি করা (The tradeoff)

এর সবচেয়ে যন্ত্রণাদায়ক সত্যিটি হলো: বায়াস কমালে সাধারণত ভ্যারিয়েন্স বেড়ে যায় এবং ভ্যারিয়েন্স কমালে বায়াস বেড়ে যায়। এটি অনেকটা সি-স (seesaw) বা দোলনার মতো কাজ করে।

  • আপনি মডেলটিকে আরও জটিল বা কমপ্লেক্স বানাচ্ছেন → তখন এর বায়াস কমে যায়, কিন্তু ভ্যারিয়েন্স বেড়ে যায়
  • আপনি মডেলটিকে আরও সাধারণ বা সিম্পল বানাচ্ছেন → তখন এর ভ্যারিয়েন্স কমে যায়, কিন্তু বায়াস বেড়ে যায়

তাই মেশিন লার্নিংয়ের সবচেয়ে বড় আর্ট (art) বা শিল্পটি হলো এর এমন একটি ভারসাম্যের বিন্দু (balance point) খুঁজে বের করা, যেখানে মোট ভুলের (total error - বায়াস² + ভ্যারিয়েন্স) পরিমাণ সবচেয়ে কম থাকে। আর এটিকেই মূলত বায়াস-ভ্যারিয়েন্স ট্রেডঅফ (bias-variance tradeoff) বলা হয়।

আপনি কীভাবে সমস্যাগুলো চিনবেন?

লক্ষণ (Symptom)সমস্যা (Problem)সমাধান (Fix)
ট্রেইনিং এবং টেস্ট দুটোতেই খারাপ পারফর্ম করাহাই বায়াস (High bias) (আন্ডারফিটিং)আরও জটিল বা কমপ্লেক্স মডেল ব্যবহার করুন, নতুন ফিচার যুক্ত করুন
ট্রেইনিং ডেটায় ভালো করে, কিন্তু টেস্ট ডেটায় খারাপ করাহাই ভ্যারিয়েন্স (High variance) (ওভারফিটিং)আরও ডেটা সংগ্রহ করুন, মডেলকে সাধারণ বা সিম্পল করুন, রেগুলারাইজেশন (regularization) ব্যবহার করুন
Note: এখানে ১৫ ডিগ্রির (degree-15) পলিনোমিয়ালটি (polynomial)-র ট্রেনিং এরর ছিলো প্রায় শূন্য এবং দেখতে বেশ দারুণ লাগছিলো! কিন্তু আপনি যদি নতুন ডেটার ওপর এটি ব্যবহার করেন, তবে এটি উল্টোপাল্টা (nonsense) প্রেডিক্ট করবে বা ফলাফল দেবে। তাই ট্রেইনিং এরর কম মানেই যে আপনার মডেলটি অনেক ভালো, তা কিন্তু নয়। সবসময় টেস্ট ডেটার পারফরম্যান্স চেক বা পরীক্ষা করুন।

Key Metrics

🎯 হাই বায়াস মডেল (High Bias Model)
ক্রমাগত ভুল করে — আসল প্যাটার্নগুলো বুঝতে পারে না
খুব দ্রুত ট্রেইন হয় আন্ডারফিটস করা (Underfits the data)
🌊 হাই ভ্যারিয়েন্স মডেল (High Variance Model)
নয়েজগুলো (noise) মুখস্থ করে ফেলে — নতুন ডেটায় গিয়ে ফেইল করে
ট্রেইন হতে অনেক বেশি সময় নেয় ওভারফিটস করা (Overfits the data)
✅ ব্যালেন্স বা ভারসাম্যযুক্ত মডেল (Balanced Model)
অপ্রয়োজনীয় ডেটা বা নয়েজগুলো মুখস্থ না করেই আসল প্যাটার্নগুলো ধরে ফেলতে পারে
মাঝারি খুব ভালোভাবে নতুন ডেটায় কাজ করতে পারে (Generalizes well)

ছোট কুইজ

একটি মডেল তার ট্রেইনিং এবং টেস্ট ডেটা — দুটিতেই খুব খারাপ পারফর্ম করছে। এক্ষেত্রে আসল সমস্যাটি কী হতে পারে?
Challenge

পড়া চালিয়ে যান

রেগুলারাইজেশন (Regularization)
মডেলটি যাতে সৎ থাকে সেজন্য এর কমপ্লেক্সিটিতে (complexity) পেনাল্টি (penalty) দেওয়া
ক্রস-ভ্যালিডেশন (Cross-Validation)
প্রতিটি ফোল্ডে (fold) টেস্ট করুন, যাতে কোনো ডেটাই নষ্ট না হয়
মডেল ইভ্যালুয়েশন বা মূল্যায়ন (Model Evaluation)
অ্যাকুরেসি বা নির্ভুলতাই সবকিছু নয় — আসুন আরও ভালোভাবে আরওসি (ROC), এইউসি (AUC), এফ১ (F1) সম্পর্কে জেনে নিই