Logistic Regression এর ধারণা এবং কাজের ধারা

Logistic Regression - পাইথন দিয়ে মেশিন লার্নিং (Machine Learning with Python) - Machine Learning

295

Logistic Regression একটি জনপ্রিয় সুপারভাইজড মেশিন লার্নিং অ্যালগরিদম, যা মূলত ক্লাসিফিকেশন সমস্যা সমাধানে ব্যবহৃত হয়। এটি একটি প্রেডিকশন মডেল যা নির্দিষ্ট ইনপুট ডেটার উপর ভিত্তি করে দুটি বা তার বেশি শ্রেণীতে (classes) ডেটাকে ভাগ করতে সাহায্য করে। যদিও এটি "রিগ্রেশন" নামে পরিচিত, এটি মূলত ক্লাসিফিকেশন অ্যালগরিদম হিসেবে কাজ করে।

Logistic Regression এর ধারণা:

Logistic Regression একটি বাইনরি (binary) বা মাল্টি-ক্লাস (multi-class) ক্লাসিফিকেশন টেকনিক। এটি ইনপুট ফিচারের (features) ওপর ভিত্তি করে একটি সিগময়েড ফাংশন (sigmoid function) ব্যবহার করে আউটপুট ক্লাসের সম্ভাবনা নির্ধারণ করে। সিগময়েড ফাংশন আউটপুট হিসাবে 0 থেকে 1 এর মধ্যে একটি মান প্রদান করে, যা পরবর্তীতে একটি ক্লাস হিসেবে চিহ্নিত হয় (যেমন: 0 বা 1)।

সিগময়েড ফাংশন:

Logistic Regression এর মূল ভিত্তি হল সিগময়েড ফাংশন। সিগময়েড ফাংশন একটি S-shaped curve (S-আকৃতির বক্ররেখা), যা একটি রিয়েল নম্বর ইনপুটকে 0 থেকে 1 এর মধ্যে স্কেল করে। সিগময়েড ফাংশনটির ফর্মুলা হলো:

σ(z)=11+ez\sigma(z) = \frac{1}{1 + e^{-z}}

এখানে:

  • zz হল লিনিয়ার সমীকরণের আউটপুট, যা সাধারণত ইনপুট ফিচার এবং ওয়েটের গুনফল (weighted sum)।
  • ee হল ন্যাচারাল লগারিদমের বেস।

Logistic Regression এর কাজের ধারা:

Logistic Regression মডেল তৈরির মূল কাজের ধাপগুলো নিম্নরূপ:

  1. ডেটা প্রস্তুতি (Data Preparation): প্রথমে ডেটা প্রক্রিয়াকরণ করতে হয়, যেখানে ইনপুট ফিচারগুলো (features) এবং আউটপুট লেবেল (labels) প্রস্তুত করা হয়। আউটপুটটি একটি শ্রেণী (যেমন: 0 বা 1) হতে পারে।
  2. লিনিয়ার সমীকরণ (Linear Equation): Logistic Regression মডেল ইনপুট ফিচারের উপর ভিত্তি করে একটি লিনিয়ার সমীকরণ তৈরি করে:

    z=w1x1+w2x2++wnxn+bz = w_1 x_1 + w_2 x_2 + \dots + w_n x_n + b

    যেখানে:

    • x1,x2,,xnx_1, x_2, \dots, x_n হল ইনপুট ফিচার,
    • w1,w2,,wnw_1, w_2, \dots, w_n হল ফিচারগুলোর ওয়েট (weights),
    • bb হল বাইস (bias), যা মডেলের সমীকরণকে শিফট করে।
  3. সিগময়েড ফাংশন প্রয়োগ (Sigmoid Function): এই লিনিয়ার সমীকরণের আউটপুট zz এর উপর সিগময়েড ফাংশন প্রয়োগ করা হয়, যাতে আউটপুট 0 থেকে 1 এর মধ্যে আসে।

    y^=σ(z)\hat{y} = \sigma(z)

    এখানে y^\hat{y} হল আউটপুট, যা 0 থেকে 1 এর মধ্যে থাকে এবং সম্ভাবনা (probability) হিসেবে ব্যাখ্যা করা যায়।

  4. থ্রেশহোল্ড নির্ধারণ (Thresholding): সিগময়েড ফাংশন থেকে প্রাপ্ত ফলাফলকে 0 বা 1 এ রূপান্তরিত করার জন্য একটি থ্রেশহোল্ড ব্যবহার করা হয়। সাধারণত, যদি সম্ভাবনা 0.5 এর বেশি হয়, তবে আউটপুট ক্লাস 1 হবে, অন্যথায় ক্লাস 0 হবে।

    y^={1if σ(z)0.50if σ(z)<0.5\hat{y} = \begin{cases} 1 & \text{if } \sigma(z) \geq 0.5 \\ 0 & \text{if } \sigma(z) < 0.5 \end{cases}

  5. লস ফাংশন (Loss Function): মডেলটি প্রশিক্ষিত (trained) করার জন্য, লস ফাংশন ব্যবহার করা হয়। Logistic Regression এর জন্য সাধারণত বাইনরি ক্রস-এন্ট্রপি (Binary Cross-Entropy) লস ফাংশন ব্যবহার করা হয়, যা মডেল ও প্রকৃত আউটপুটের মধ্যে পার্থক্য মাপার জন্য ব্যবহৃত হয়।

    L(y^,y)=[ylog(y^)+(1y)log(1y^)]L(\hat{y}, y) = - \left[ y \log(\hat{y}) + (1 - y) \log(1 - \hat{y}) \right]

    যেখানে yy প্রকৃত আউটপুট এবং y^\hat{y} পূর্বানুমানিত আউটপুট।

  6. অপটিমাইজেশন (Optimization): লস ফাংশন কমানোর জন্য গ্রেডিয়েন্ট ডিসেন্ট (Gradient Descent) বা অন্যান্য অপটিমাইজেশন টেকনিক ব্যবহার করা হয়। অপটিমাইজেশন মডেলটির ওয়েটস (weights) আপডেট করার জন্য ব্যবহৃত হয়, যাতে মডেল সঠিক আউটপুটের কাছাকাছি পৌঁছায়।

Logistic Regression এর উদাহরণ

ধরা যাক, আমরা একটি ডেটাসেটের মাধ্যমে একটি ক্লাসিফিকেশন সমস্যা সমাধান করতে যাচ্ছি, যেখানে আমরা একটি ছাত্রের পরীক্ষা পাসের সম্ভাবনা (0 বা 1) নির্ধারণ করতে চাই, তার পড়াশোনার সময় (study hours) এবং পূর্ববর্তী পরীক্ষার ফলাফল (previous exam result) এর উপর ভিত্তি করে।

উদাহরণ কোড:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification

# ডেটাসেট তৈরি করা (এটা একটি কৃত্রিম ডেটাসেট)
X, y = make_classification(n_samples=100, n_features=2, n_classes=2, random_state=42)

# ডেটাসেটকে ট্রেন এবং টেস্টে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Logistic Regression মডেল তৈরি করা
model = LogisticRegression()

# মডেলটি প্রশিক্ষিত করা
model.fit(X_train, y_train)

# মডেলের স্কোর দেখা
accuracy = model.score(X_test, y_test)
print(f"Accuracy: {accuracy * 100:.2f}%")

# ভবিষ্যদ্বাণী করা
y_pred = model.predict(X_test)

# ডেটা প্লট করা
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_pred, cmap=plt.cm.Paired)
plt.title("Logistic Regression Decision Boundary")
plt.show()

এই কোডে, আমরা sklearn.datasets.make_classification থেকে একটি কৃত্রিম ক্লাসিফিকেশন ডেটাসেট তৈরি করছি এবং LogisticRegression ব্যবহার করে মডেল প্রশিক্ষণ করছি। আমরা শেষে গ্রাফের মাধ্যমে ডেটার শ্রেণীভিত্তিক বিভাজন (decision boundary) দেখতে পারছি।


সারাংশ

Logistic Regression হল একটি সহজ এবং শক্তিশালী ক্লাসিফিকেশন অ্যালগরিদম, যা সিগময়েড ফাংশন ব্যবহার করে আউটপুট হিসাব করে। এটি সাধারণত বাইনরি ক্লাসিফিকেশন সমস্যায় ব্যবহৃত হয়, যেখানে ইনপুট ডেটার ভিত্তিতে দুটি সম্ভাব্য ক্লাসের মধ্যে একটি নির্ধারণ করা হয়। Logistic Regression সহজ, দ্রুত এবং ভাল কার্যকারিতা সম্পন্ন অ্যালগরিদম, বিশেষত যখন ডেটা লাইনারি (linear) সম্পর্কযুক্ত থাকে।

Content added By
Promotion

Are you sure to start over?

Loading...