Part 1 — গল্প ও ধারণা
তুমি কি উত্তর দিতে পারবে? কীভাবে? — এটাই হলো Regression এর কাজ!
Regression কী?
Regression হলো Machine Learning-এর একটি পদ্ধতি যা দিয়ে আমরা একটি সংখ্যাগত মান (numerical value) পূর্বানুমান (predict) করতে পারি।
সহজ ভাষায়: পুরনো তথ্য দেখে ভবিষ্যতের সংখ্যা বলে দেওয়াই হলো Regression।
Regression কী কী সমস্যা সমাধান করে?
| সমস্যা | Input Features | Predicted Output |
|---|---|---|
| 🏠 বাড়ির দাম | আয়তন, অবস্থান, বেডরুম সংখ্যা | ৮৫,০০,০০০ টাকা |
| 💼 বেতন | অভিজ্ঞতা, শিক্ষা, দক্ষতা | ৬৫,০০০ টাকা/মাস |
| 🚗 গাড়ির দাম | বয়স, মাইলেজ, ব্র্যান্ড | ১২,০০,০০০ টাকা |
| 📈 শেয়ার দাম | আগের দাম, ভলিউম, সূচক | ১৫৫.৭০ টাকা |
| 🛒 বিক্রয় | বিজ্ঞাপন খরচ, মৌসুম | ৩,২০,০০০ টাকা |
Regression vs Classification — পার্থক্য কী?
Classification → ভাগ করে দেয় (যেমন: হ্যাঁ/না, বিড়াল/কুকুর)
| বৈশিষ্ট্য | Regression | Classification |
|---|---|---|
| Output ধরন | সংখ্যা (৫০০০, ৭৮.৫, ১২০) | শ্রেণী (Yes/No, Cat/Dog) |
| উদাহরণ | বাড়ির দাম, তাপমাত্রা | স্প্যাম/স্প্যাম নয়, রোগ আছে/নেই |
| প্রশ্নের ধরন | "কত?" / "কতটুকু?" | "কোনটি?" / "কোন ধরনের?" |
| Algorithm | Linear Regression | Logistic Regression, SVM |
প্রতিটি scenario-তে click করুন:
উত্তর দিতে উপরের বাক্যগুলোতে click করুন, তারপর নিজে বলুন Regression না Classification।
রিমা কিন্তু কোনো সূত্র ব্যবহার করেননি! তিনি অভিজ্ঞতা থেকে প্যাটার্ন মনে রেখে Prediction করলেন। Machine Learning-ও ঠিক এভাবেই কাজ করে — শুধু অনেক বেশি তথ্য থেকে।
Study Hours → Marks: Interactive Data Table
নিজের student data যোগ করুন — প্যাটার্ন সাথে সাথে update হবে।
| ছাত্রের নাম | ঘণ্টা (x) | নম্বর (y) |
|---|
৭ ঘণ্টা পড়লে প্রায় ১০১ নম্বর পাবে।
Linear Regression কী?
Linear Regression হলো সবচেয়ে সহজ এবং সবচেয়ে জনপ্রিয় Machine Learning Algorithm। এটি দুটি জিনিসের মধ্যে সরলরেখার সম্পর্ক খুঁজে বের করে এবং সেই রেখা ব্যবহার করে ভবিষ্যতের মান predict করে।
উদাহরণ: বেশি পড়লে → বেশি নম্বর (সরলরেখায় বাড়ে)
Regression Line / Best Fit Line কী?
অনেকগুলো Data Point এর মাঝ দিয়ে যে একটি সরলরেখা টানা হয় যা সব বিন্দুর যতটা সম্ভব কাছে থাকে — সেটাই Best Fit Line বা Regression Line।
🎮 Best Fit Line দেখুন
Part 2 — চোখে দেখো
Scatter Plot — ডেটা বিন্দু
প্রতিটি বিন্দু একজন ছাত্রের তথ্য — এগুলোকে বলা হয় Data Point।
Best Fit Line যোগ করা হলে
Prediction মানে কী?
নতুন কোনো ইনপুট দিলে আমরা রেখার উপর সেই বিন্দু খুঁজে বের করি — সেটাই Predicted Value।
সমস্যা: অনেক লাইন আঁকা যায়!
কোন রেখা সেরা তা বোঝার উপায়
প্রতিটি অংশ বিস্তারিত
| চিহ্ন | নাম | মানে কী? | উদাহরণ |
|---|---|---|---|
| y | Predicted Value | আমরা যা বের করতে চাই | পরীক্ষার নম্বর |
| x | Input Feature | আমরা যা দিচ্ছি | পড়ার ঘণ্টা |
| m | Slope (ঢাল) | x বাড়লে y কত বাড়বে | প্রতি ঘণ্টায় ১৩ নম্বর বাড়ে |
| b | Intercept | x=০ হলে y কত? | না পড়লেও ১০ নম্বর পায় |
উদাহরণ দিয়ে বোঝো
ধরা যাক আমাদের সূত্র হলো: y = 13x + 10
| পড়ার সময় (x) | হিসাব | Predicted নম্বর (y) |
|---|---|---|
| 0 ঘণ্টা | 13 × 0 + 10 = 10 | 10 |
| 1 ঘণ্টা | 13 × 1 + 10 = 23 | 23 |
| 3 ঘণ্টা | 13 × 3 + 10 = 49 | 49 |
| 5 ঘণ্টা | 13 × 5 + 10 = 75 | 75 |
| 7 ঘণ্টা | 13 × 7 + 10 = 101 | 101 |
m (Slope) ও b (Intercept) — সহজ ভাষায়
সিঁড়ির উপমা: m বেশি হলে সিঁড়ি খাড়া → এক ঘণ্টা বেশি পড়লে নম্বর অনেক বাড়ে।
উদাহরণ: m = 13 মানে ১ ঘণ্টা বেশি পড়লে +১৩ নম্বর।
উদাহরণ: b = 10 মানে না পড়লেও (০ ঘণ্টা) base ১০ নম্বর ধরা হয়।
Line যেখানে y-axis ছোঁয় (x=0), সেটাই b।
সূত্র ভাঙা দেখি — y = (m×x) + b
x বেছে নিন, তারপর m ও b slider বদলিয়ে দেখুন প্রতিটি অংশ কীভাবে যোগ হয়:
৩ ঘণ্টায়: পড়ার বোনাস ৩৯ + বেস নম্বর ১০ = ৪৯
Interactive Labs — Formula / Slope / Intercept
| x (ঘণ্টা) | m×x | + b | = y | ব্যাখ্যা |
|---|
x=2 থেকে x=3: y বাড়ে +13
b বাড়লে line উপরে উঠে — সব prediction +b পরিমাণ shift
| Slope (m) | x = 5 ঘণ্টা হলে | মানে কী? |
|---|---|---|
| m = 5 | 5×5+10 = 35 | প্রতি ঘণ্টায় মাত্র ৫ নম্বর বাড়ে (কম কার্যকর) |
| m = 13 | 13×5+10 = 75 | প্রতি ঘণ্টায় ১৩ নম্বর বাড়ে (মাঝামাঝি) |
| m = 20 | 20×5+10 = 110 | প্রতি ঘণ্টায় ২০ নম্বর বাড়ে (অনেক বেশি) |
Slope কী?
Slope বলে: "x এক একক বাড়লে y কতটুকু পরিবর্তন হয়।"
| উদাহরণ | x (Input) | y (Output) | Slope ধরন |
|---|---|---|---|
| পড়া → নম্বর | বেশি পড়লে | নম্বর বাড়ে | ✅ Positive |
| বয়স → গাড়ির দাম | বয়স বাড়লে | দাম কমে | ❌ Negative |
| জুতার সাইজ → IQ | সাইজ বাড়লে | IQ একই থাকে | ➖ Zero |
উদাহরণ: বিন্দু (2, 38) এবং (4, 62) থেকে Slope = (62 - 38) / (4 - 2) = 24 / 2 = 12
Intercept কী?
Intercept হলো সেই মান যা রেখা y-অক্ষকে ছেদ করে। সহজ ভাষায়: যখন x = 0, তখন y = b
🎮 Intercept Interactive Lab খুলুন
| পরিস্থিতি | Intercept এর মানে |
|---|---|
| পড়াশোনা → নম্বর (b = 10) | না পড়লেও (x=0) ১০ নম্বর পাবে (MCQ তে হয়তো ভাগ্যে) |
| অভিজ্ঞতা → বেতন (b = 15000) | নতুন চাকরিতে (x=0 বছর) মিনিমাম ১৫,০০০ টাকা |
| বিজ্ঞাপন → বিক্রয় (b = 5000) | বিজ্ঞাপন না দিলেও ৫০০০ টাকার বিক্রি হয় |
Part 3 — ML কীভাবে শেখে
Error / Residual কী?
অর্থাৎ, আমরা কত বলেছিলাম আর আসলে কত হয়েছে — তার পার্থক্য।
| Student | x | Actual | Predicted | Error |
|---|
Error হিসাবের পর ML কী করে?
২. প্রতিটি point-এ predict → Error বের করো
৩. সব error মিলিয়ে MSE = “মোট কত ভুল করেছি” (report card)
৪. MSE বেশি হলে → line সরাও (m, b বদলাও)
৫. আবার ২–৪ — MSE কম না হওয়া পর্যন্ত
Interactive — ML শেখার loop দেখুন
ধাপ বেছে নিন — উপরের graph ও error table সাথে সাথে বদলাবে:
ধাপ ১: ভুল line — error lines লম্বা, MSE এখনো বেশি
Best Line হলো সেই রেখা যেখানে MSE সবচেয়ে কম — Error শুধু দেখার জন্য নয়, line ঠিক করার feedback signal।
এই সংখ্যাটা দেখে বোঝে line ভালো নাকি খারাপ। MSE বেশি = আরও শেখতে হবে (m, b ঠিক করতে হবে)।
শুধু Error যোগ করলে হয় না কেন?
যেমন: +3 + (-3) = 0 → কিন্তু এর মানে এই না যে ভুল শূন্য!
Error +2 এবং Error -2:
সমাধান: Error-কে বর্গ করো!
প্রতিটি Error কে বর্গ করলে (square করলে) সব মান ধনাত্মক হয়ে যায়। তারপর গড় করি — এটাই Mean Squared Error (MSE)।
MSE হিসাব — ধাপে ধাপে
| Actual (y) | Predicted (ŷ) | Error | Error² |
|---|
Error বর্গ করার আরেকটি কারণ
বড় Error-কে বেশি শাস্তি দেওয়া হয়। যদি একটি Error = 10 হয়, তাহলে Error² = 100। কিন্তু Error = 1 হলে Error² = 1। তাই বড় ভুলগুলো model আরো বেশি মনে রাখে এবং কমানোর চেষ্টা করে।
পর্বত থেকে নামার গল্প 🏔️
তুমি চোখ দেখতে না পেলেও — পায়ের নিচে মাটি কোন দিকে ঢালু সেটা অনুভব করতে পারো। তুমি সবসময় ঢালু দিকে পা রাখো। এভাবে ধীরে ধীরে উপত্যকায় পৌঁছাও।
Gradient Descent-ও ঠিক এভাবে কাজ করে!
Gradient Descent এর ধাপ
মূল কথা: Error → MSE → line ঠিক → আবার Error (যতক্ষণ না MSE সবচেয়ে কম)
— α বড় → দ্রুত কিন্তু minimum miss করতে পারে
— α ছোট → নির্ভুল কিন্তু অনেক সময় লাগে
সাধারণত: α = 0.01 থেকে শুরু।
Part 4 — দেখে বোঝো: Data থেকে Prediction
Part 5 — হাতে করো
Step 1: Perfect dataset plot করুন (y = 20x)
Step 2: নিজে m ও b guess করুন
Step 3: Error table (live)
| x | Actual | Predicted | Error | Error² |
|---|
Step 4: MSE = —
MSE যত কম, line তত ভালো।
Step 5: Best Fit = y = 20x + 0 · MSE = 0
📄 হাতে হিসাব (backup reference)
আমাদের Dataset
| Hours (x) | Marks (y) |
|---|---|
| 1 | 20 |
| 2 | 40 |
| 3 | 60 |
| 4 | 80 |
উপরের তথ্য Scatter Plot-এ আঁকো।
(এটা random অনুমান)
| x | Predicted (15x+5) | Actual | Error | Error² |
|---|---|---|---|---|
| 1 | 20 | 20 | 0 | 0 |
| 2 | 35 | 40 | 5 | 25 |
| 3 | 50 | 60 | 10 | 100 |
| 4 | 65 | 80 | 15 | 225 |
এটা অনেক বেশি! Line ভালো না।
| x | Predicted (20x) | Actual | Error | Error² |
|---|---|---|---|---|
| 1 | 20 | 20 | 0 | 0 |
| 2 | 40 | 40 | 0 | 0 |
| 3 | 60 | 60 | 0 | 0 |
| 4 | 80 | 80 | 0 | 0 |
Part 6 — Extra (Optional)
Card-এ click করলে উদাহরণ দেখাবে:
Card-এ click করুন highlight করতে:
✅ সুবিধা (Advantages)
- সহজ বোঝা যায় — সূত্র মাত্র y = mx + b
- দ্রুত কাজ করে — ট্রেনিং খুব fast
- ব্যাখ্যাযোগ্য — Slope দেখেই বুঝা যায়
- কম ডেটাতেও কাজ করে
- Baseline Model হিসেবে দারুণ
❌ সীমাবদ্ধতা (Limitations)
- Outlier-এ দুর্বল — একটি বাজে ডেটায় Line নড়ে
- জটিল সম্পর্ক ধরতে পারে না
- শুধু Linear সম্পর্কের জন্য
- Feature Scaling দরকার হতে পারে
- Multicollinearity সমস্যা
Outlier এর প্রভাব
Beginner Track — ৩ Steps
import pandas as pd
from sklearn.linear_model import LinearRegression
print("✅ Libraries ready!")
data = {'Hours': [1,2,3,4,5,6,7,8,9,10],
'Marks': [15,25,45,55,70,80,85,90,95,100]}
df = pd.DataFrame(data)
X = df[['Hours']]
y = df['Marks']
model = LinearRegression().fit(X, y)
print(f"m={model.coef_[0]:.2f}, b={model.intercept_:.2f}")
pred = model.predict([[7]])
print(f"৭ ঘণ্টায় নম্বর: {pred[0]:.1f}")
Advanced — Train/Test Split, MSE, R², Plot
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
print(f"MSE={mean_squared_error(y_test,y_pred):.2f}, R²={r2_score(y_test,y_pred):.2f}")
import matplotlib.pyplot as plt plt.scatter(X, y); plt.plot(X, model.predict(X), 'r-') plt.show() # নীল point + লাল Best Fit Line
Note: Beginner track-এ STUDY dataset (S2) ব্যবহার করুন। Advanced-এ extended 10-point COLAB dataset।
📝 Quick Revision Notes
- Regression → সংখ্যাগত মান predict করে
- Linear Regression → সরলরেখার সাহায্যে predict করে
- সূত্র: y = mx + b
- m (Slope) → x এক বাড়লে y কত বাড়বে
- b (Intercept) → x = 0 হলে y-এর মান
- Error = Actual − Predicted
- MSE = Error² গুলোর গড়
- Gradient Descent → MSE কমিয়ে Best Line খোঁজে
- R² → 1-এর কাছে হলে ভালো model
🎯 Interactive MCQ
🗣️ ভাইভা প্রশ্ন (click করে উত্তর)
💡 Interview প্রশ্ন (self-check)
📚 Practical Exercises
(x, y): (1, 10), (2, 20), (3, 30), (4, 40)
Initial Line: y = 8x + 2
— অভিজ্ঞতা: 0, 1, 2, 3, 5, 7, 10 বছর
— বেতন: 20000, 25000, 30000, 38000, 50000, 65000, 90000 টাকা
Model train করো এবং ৪ বছরের অভিজ্ঞতায় কত বেতন হবে predict করো।