Core Algorithmsপড়তে ৭ মিনিট লাগবে

লিনিয়ার রিগ্রেশন (Linear Regression)

আপনার ডেটাগুলোর মাঝখান দিয়ে সবচেয়ে ভালো বা পারফেক্ট একটি সোজা লাইন টানুন
training:O(n * d) — এটি ডেটার আকার এবং ফিচারের (features) সাথে বাড়েprediction:O(d) — এটি কেবল একটি ডট প্রোডাক্ট (dot product)interpretability:অনেক বেশি (High) — আপনি এর ওয়েটগুলো (weights) সরাসরি পড়তে বা বুঝতে পারেন

ধরা যাক, আপনি একজন শিশু, যার হাতে একটি স্কেল এবং বিন্দু আঁকা একটি গ্রাফ পেপার রয়েছে। এখানে প্রতিটি বিন্দু হলো একেকটি বাড়ি — যার x-অক্ষে রয়েছে ঘরগুলোর বর্গফুট বা আকার এবং y-অক্ষে রয়েছে সেগুলোর দাম। এখন আপনার কাজ হলো: স্কেলটিকে এমনভাবে বসিয়ে একটি দাগ বা লাইন টানা, যাতে সেই লাইনটি সবগুলো বিন্দুর যতটা সম্ভব কাছাকাছি দিয়ে যায়

খুব সহজ ভাষায় এটিই হলো লিনিয়ার রিগ্রেশন (linear regression)। এখানে আপনি মূলত আপনার ডেটাগুলোর ভেতর দিয়ে সবচেয়ে পারফেক্ট একটি সোজা লাইন (best straight line) আঁকেন, যাতে পরবর্তীতে আপনি সেই লাইনটি ব্যবহার করে নতুন কোনো কিছুর মান অনুমান বা প্রেডিক্ট করতে পারেন।

এই লাইনের ভেতরের সমীকরণ বা ইকুয়েশন

যেকোনো সোজা লাইনকে নিচের মতো করে লেখা যায়:

y = mx + b

আপনি হয়তো স্কুল থেকেই এর সম্পর্কে জানেন। মেশিন লার্নিংয়ের ভাষায়, আমরা মূলত জিনিসগুলোর নাম বদলে ফেলি:

  • y — প্রেডিকশন বা অনুমান (যেমন বাড়ির দাম)
  • x — ইনপুট ফিচার (input feature) (যেমন বাড়ির আকার)
  • mওয়েট (weight) বা ওজন (প্রতি বর্গফুটে দাম কতটা পরিবর্তন হয়)
  • bবায়াস (bias) (কোনো বাড়ির আকার "শূন্য (zero)" হলেও এর একটি বেস প্রাইস বা সাধারণ দাম)

একটি লিনিয়ার রিগ্রেশন মডেলকে ট্রেইন করা মানে হলো m এবং b-এর সর্বোত্তম বা সবচেয়ে পারফেক্ট মানগুলো খুঁজে বের করা, যাতে লাইনটি ডেটার যত বেশি সম্ভব কাছাকাছি দিয়ে যেতে পারে।

আমরা এই "সবচেয়ে পারফেক্ট (best)"-কে কীভাবে মাপি?

এর জন্য আমরা মিন স্কয়ারড এরর (Mean Squared Error বা MSE) নামের একটি হিসাব ব্যবহার করি। এখানে আমরা প্রতিটি ডেটা পয়েন্টের জন্য তার আসল এবং আমাদের লাইনের অনুমান করা মানের মধ্যকার পার্থক্য বের করি, তারপর সেটিকে স্কয়ার (square) বা বর্গ করি (যাতে নেগেটিভ বা ঋণাত্মক মানগুলো বাতিল না হয়), এবং সবশেষে সেই স্কয়ার করা ভুলগুলোর একটি গড় বা এভারেজ বের করি।

এটিকে অনেকটা শিক্ষকের খাতা দেখার সাথে তুলনা করা যেতে পারে। যে উত্তরে ১০ নম্বরের ভুল রয়েছে, তার জন্য শিক্ষক ১০০ নম্বর (১০ এর স্কয়ার) কেটে নেন। আবার যার ২ নম্বরের ভুল রয়েছে, তাকে ৪ নম্বরের পেনাল্টি বা শাস্তি দেওয়া হয়। অর্থাৎ, ছোট ভুলের চেয়ে বড় ভুলগুলোকে অনেক বেশি শাস্তি দেওয়া বা পেনাল্টি দেওয়া হয় — আর এটিই হলো মূলত স্কয়ারিং (squaring)-এর আসল সৌন্দর্য।

মডেলটির আসল লক্ষ্য হলো: এর MSE কমানো বা মিনিমাইজ করা। অর্থাৎ, এমন m এবং b খুঁজে বের করা, যা এই মোট এরর বা ভুলের পরিমাণকে যতটা সম্ভব ছোট বা কম করে আনে।

শুরু থেকে লিনিয়ার রিগ্রেশন তৈরি করা (Linear Regression from Scratch)

import numpy as np
# বাড়ির আকার (বর্গফুট) এবং দাম ($১০০০)
X = np.array([600, 800, 1000, 1200, 1400, 1600])
y = np.array([150, 200, 250, 280, 340, 380])
# m (স্লোপ বা ঢাল) এবং b (ইন্টারসেপ্ট) হিসাব করা
n = len(X)
m = (n * np.sum(X * y) - np.sum(X) * np.sum(y)) / \
(n * np.sum(X**2) - np.sum(X)**2)
b = (np.sum(y) - m * np.sum(X)) / n
print(f"y = {m:.2f}x + {b:.2f}")
print(f"১৫০০ বর্গফুটের বাড়ি (1500 sq ft house): ${m * 1500 + b:.0f}k (হাজার)")
Output
y = 0.22x + 17.33
১৫০০ বর্গফুটের বাড়ি (1500 sq ft house): $347k (হাজার)
Note: লিনিয়ার রিগ্রেশন সব সময় ধরে নেয় যে ডেটাগুলোর মধ্যে একটি সোজা লাইনের সম্পর্ক রয়েছে। কিন্তু আপনার ডেটা যদি বাঁকানো (curves) হয় (যেমন লাভ কমার মতো বিষয়), তবে একটি সোজা লাইন কখনোই সেই প্যাটার্নটি ঠিকমতো ধরতে পারবে না। তাই সব সময় আগে আপনার ডেটাগুলোকে প্লট (plot) করে বা এঁকে দেখে নেবেন!

Key Metrics

ট্রেইনিং (নরমাল ইকুয়েশন)
d = ফিচারের সংখ্যা। ছোট ফিচার সেটের জন্য দ্রুত, কিন্তু হাজার হাজার ফিচারের জন্য অনেক ধীরগতির
ওয়ান-শট (One-shot) O(d^3)
ট্রেইনিং (গ্রেডিয়েন্ট ডিসেন্ট)
বড় ডেটাসেটের ক্ষেত্রে খুব ভালোভাবে কাজ করে
ইটারেটিভ (Iterative) বা বারবার করা O(n * d * iterations)
প্রেডিকশন (Prediction)
এটি কেবল ফিচারগুলোকে ওয়েট দিয়ে গুণ করে এবং যোগ করে
অনেক দ্রুত O(d)
বোঝার সুবিধা (Interpretability)
প্রতিটি ওয়েট আপনাকে বলে দেয় যে ওই নির্দিষ্ট ফিচারটি মডেলের জন্য কতটা গুরুত্বপূর্ণ
চমৎকার সরাসরি ওয়েটগুলো বুঝতে পারা

ছোট কুইজ

y = mx + b সমীকরণে, বাড়ির দামের একটি মডেলে 'm' কী বোঝায়?
Challenge

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

লজিস্টিক রিগ্রেশন (Logistic Regression)
হ্যাঁ নাকি না? এমন একটি লাইন টানুন যা এদের দুজনকে আলাদা করতে পারে
গ্রেডিয়েন্ট ডিসেন্ট (Gradient Descent)
সবচেয়ে নিচু পয়েন্ট বা বিন্দুটি খুঁজে পেতে পাহাড়ের ঢাল বেয়ে নিচে নামুন
ওভারফিটিং এবং আন্ডারফিটিং (Overfitting & Underfitting)
গোল্ডিলকস এবং তিনটি মডেল — একটি খুব সাধারণ, একটি অনেক জটিল, আর অন্যটি একদম পারফেক্ট
ফ্রিচার এবং লেবেল (Features & Labels)
রান্নার আইটেমগুলো হলো ফিচার আর খাবারের নামটি হলো লেবেল — আপনার মডেলকে শেখান যে তার কোন কোন উপাদানের দিকে নজর দিতে হবে এবং এর ওপর ভিত্তি করে কী অনুমান করতে হবে