Logistic Regression

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

258

লজিস্টিক রিগ্রেশন (Logistic Regression) একটি সুপারভাইজড মেশিন লার্নিং অ্যালগরিদম, যা সাধারণত ক্লাসিফিকেশন সমস্যা সমাধানে ব্যবহৃত হয়। এটি একটি গাণিতিক মডেল যা ডিপেনডেন্ট ভেরিয়েবলের (Y) মধ্যে দুটি বা তার বেশি ক্লাসের মধ্যে সম্পর্ক নির্ধারণ করতে ব্যবহৃত হয়। সাধারণত এটি বাইনরি ক্লাসিফিকেশন (Binary Classification) এর জন্য ব্যবহৃত হয়, যেখানে আউটপুট ভেরিয়েবল দুটি শ্রেণিতে বিভক্ত থাকে (যেমন: হ্যাঁ/না, ০/১, স্প্যাম/নন-স্প্যাম)।

লজিস্টিক রিগ্রেশন কী?

লজিস্টিক রিগ্রেশন একটি রিগ্রেশন মডেল হলেও, এটি রিগ্রেশন অ্যালগরিদমের মতো কন্টিনিউয়াস আউটপুট তৈরি না করে প্রবাবিলিটি আউটপুট তৈরি করে। এটি সিগময়েড ফাংশন (Sigmoid Function) ব্যবহার করে একটি ইনপুটকে ০ থেকে ১ এর মধ্যে স্কেল করে, যেটি একটি সম্ভাবনা বা প্রোবাবিলিটি হিসেবে ব্যাখ্যা করা যেতে পারে।

সিগময়েড ফাংশন (Sigmoid Function)

সিগময়েড ফাংশন হল একটি ধাপে ওঠানো কিউরিকাভি ফাংশন, যা -∞ থেকে +∞ এর মধ্যে যে কোনো মানকে ০ এবং ১ এর মধ্যে রূপান্তরিত করে। সিগময়েড ফাংশনের সাধারণ রূপ:

σ(x)=11+ex\sigma(x) = \frac{1}{1 + e^{-x}}

এখানে, ee হল ন্যাচারাল লগারিদমের ভিত্তি এবং xx হলো ইনপুট।

সিগময়েড ফাংশনের আউটপুট:

  • যখন xx অনেক বড় হয়, তখন আউটপুট ১ হয়ে যায়।
  • যখন xx অনেক ছোট বা নেগেটিভ হয়, তখন আউটপুট ০ হয়ে যায়।
  • যখন x=0x = 0, তখন আউটপুট ০.৫ হয়।

এটি একটি সম্ভাবনা হিসেবে কাজ করে, যা ১ এবং ০ এর মধ্যে থাকে, যা ক্লাসিফিকেশন সমস্যা সমাধানে ব্যবহৃত হয়।

লজিস্টিক রিগ্রেশন মডেলের সাধারণ রূপ:

লজিস্টিক রিগ্রেশন মডেলের সাধারণ সমীকরণ:

p=σ(w0+w1x1+w2x2+...+wnxn)p = \sigma(w_0 + w_1x_1 + w_2x_2 + ... + w_nx_n)

এখানে:

  • pp হল আউটপুট প্রবাবিলিটি (যেমন ১/০ বা স্প্যাম/নন-স্প্যাম)।
  • σ\sigma হল সিগময়েড ফাংশন।
  • w0,w1,w2,...,wnw_0, w_1, w_2, ..., w_n হল মডেলটির ওজন (weights)।
  • x1,x2,...,xnx_1, x_2, ..., x_n হল ইনপুট ফিচার।

লজিস্টিক রিগ্রেশন মডেল প্রশিক্ষণ:

লজিস্টিক রিগ্রেশন মডেল প্রশিক্ষণের সময়, লক্ষ্য থাকে সেই ওজনগুলো শিখতে, যা প্রেডিকশন (probability) আউটপুটের জন্য সবচেয়ে ভালো কাজ করবে।

  1. কস্ট ফাংশন: কস্ট ফাংশন বা লগ-লস ফাংশন (Log-Loss Function) ব্যবহার করে মডেলটি সবচেয়ে ভালো আউটপুট বের করার জন্য ওজন আপডেট করে।
  2. অ্যাডাম/গ্রেডিয়েন্ট ডিসেন্ট (Gradient Descent): কস্ট ফাংশনটি অপটিমাইজ করতে গ্রেডিয়েন্ট ডিসেন্ট অ্যালগরিদম ব্যবহার করা হয়, যা মডেলকে দ্রুত শিখতে সহায়ক।

বাইনরি ক্লাসিফিকেশন উদাহরণ:

ধরা যাক, একটি মডেল আমরা তৈরি করতে চাই যা ব্যবহারকারীর বয়স এবং আয় দেখে, তাকে "ক্রেতা" বা "অক্রেতা" শ্রেণীতে ভাগ করবে।

  • ইনপুট ফিচার: বয়স এবং আয়।
  • আউটপুট: ১ (ক্রেতা) বা ০ (অক্রেতা)।

এখানে, আমরা একটি সিগময়েড ফাংশন ব্যবহার করে আউটপুট তৈরি করব, যা আমাদের বাইনরি আউটপুট (ক্রেতা/অক্রেতা) প্রদান করবে।

লজিস্টিক রিগ্রেশন এর প্রক্রিয়া:

  1. ডেটা প্রস্তুতি: ইনপুট ডেটা (ফিচার) এবং আউটপুট লেবেল তৈরি করা।
  2. মডেল প্রশিক্ষণ: লজিস্টিক রিগ্রেশন অ্যালগরিদম ব্যবহার করে মডেলটি প্রশিক্ষণ করা। এই সময়ে, মডেলটি ওজন শিখতে থাকে।
  3. প্রেডিকশন: নতুন ডেটার উপর মডেলটি প্রেডিকশন বা সম্ভাবনা আউটপুট তৈরি করে, যেমন একটি ব্যবহারকারী ক্রেতা হতে পারে কি না।

লজিস্টিক রিগ্রেশন এর উদাহরণ:

এখন, একটি পাইথন উদাহরণ দেখে লজিস্টিক রিগ্রেশন কিভাবে কাজ করে তা দেখি:

উদাহরণ কোড (Python - Scikit-learn):

# প্রয়োজনীয় লাইব্রেরি ইমপোর্ট
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# ডেটাসেট তৈরি
data = {'Age': [22, 25, 47, 52, 46],
        'Income': [15000, 25000, 50000, 60000, 55000],
        'Purchased': [0, 0, 1, 1, 1]}  # 0: Not Purchased, 1: Purchased

df = pd.DataFrame(data)

# ইনপুট (X) এবং আউটপুট (y) নির্ধারণ
X = df[['Age', 'Income']]
y = df['Purchased']

# ডেটা বিভক্ত করা (Train/Test)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# মডেল তৈরি এবং প্রশিক্ষণ
model = LogisticRegression()
model.fit(X_train, y_train)

# প্রেডিকশন করা
y_pred = model.predict(X_test)

# মডেল মূল্যায়ন
print("Accuracy:", accuracy_score(y_test, y_pred))

এই কোডটি একটি সহজ লজিস্টিক রিগ্রেশন মডেল তৈরি করে, যা কিছু ডেটার ভিত্তিতে প্রেডিকশন করে। এর মধ্যে রয়েছে:

  • ডেটা প্রস্তুতি: Age এবং Income ফিচার ব্যবহার করা হয়েছে।
  • মডেল প্রশিক্ষণ: LogisticRegression ক্লাসের মাধ্যমে মডেলটি প্রশিক্ষিত করা হয়েছে।
  • মডেল মূল্যায়ন: accuracy_score ব্যবহার করে প্রেডিকশনের সঠিকতা পরিমাপ করা হয়েছে।

লজিস্টিক রিগ্রেশন মডেলের সুবিধা:

  1. সহজ এবং দ্রুত: এটি একটি সরল এবং দ্রুত কার্যকরী অ্যালগরিদম যা ছোট থেকে মাঝারি আকারের ডেটা সেটে ভালো ফলাফল দেয়।
  2. ব্যাখ্যাযোগ্য: লজিস্টিক রিগ্রেশন সহজে ব্যাখ্যা করা যায়, কারণ এটি শুধুমাত্র সিগময়েড ফাংশন ব্যবহার করে।
  3. প্রবাবিলিটি আউটপুট: এটি প্রোবাবিলিটি আউটপুট প্রদান করে, যা বিভিন্ন শ্রেণী এবং সিদ্ধান্ত তৈরি করার জন্য সহায়ক।

লজিস্টিক রিগ্রেশন মডেলের সীমাবদ্ধতা:

  1. লাইনিয়ার সম্পর্ক: এটি শুধুমাত্র লিনিয়ার সম্পর্ক বিশ্লেষণ করতে পারে, অর্থাৎ ইনপুট এবং আউটপুটের মধ্যে একটি সরল সম্পর্ক থাকতে হবে।
  2. প্রতিকূল ডেটা: যদি ডেটা অনেক বেশি জটিল বা নন-লিনিয়ার হয়, তবে লজিস্টিক রিগ্রেশন মডেলটি সঠিক ফলাফল নাও দিতে পারে।

সারাংশ:

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

Content added By

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

Binary Classification এবং Multiclass Classification হল দুটি প্রধান শ্রেণীবিভাগ সমস্যা, যেখানে মূল পার্থক্য হল ক্লাস বা শ্রেণীর সংখ্যা। নিচে এই দুটি টাস্কের মধ্যে পার্থক্য তুলে ধরা হলো:

১. Binary Classification (বাইনারি ক্লাসিফিকেশন)

Binary Classification এমন একটি ক্লাসিফিকেশন সমস্যা, যেখানে লক্ষ্য (target) বা আউটপুট মাত্র দুটি শ্রেণী বা ক্যাটেগরি তে বিভক্ত থাকে। এখানে আউটপুট দুটি ক্লাসে সীমাবদ্ধ থাকে, যেমন হ্যাঁ বা না, স্প্যাম বা নন-স্প্যাম, সুস্থ বা অসুস্থ, পাস বা ফেল ইত্যাদি।

বৈশিষ্ট্য:

  • ক্লাসের সংখ্যা: দুটি ক্লাস বা শ্রেণী থাকে।
  • ক্লাসের ধরন: আউটপুট কেবল দুটি ক্যাটেগরিতে সীমাবদ্ধ থাকে।
  • লক্ষ্য: ডেটাকে দুটি শ্রেণীতে শ্রেণীবদ্ধ করা।
  • আউটপুট: সাধারণত 0 বা 1, "হ্যাঁ" বা "না", "স্প্যাম" বা "নন-স্প্যাম" ইত্যাদি।

উদাহরণ:

  • স্প্যাম ডিটেকশন: একটি ইমেইল স্প্যাম (1) বা নন-স্প্যাম (0) হিসেবে শ্রেণীবদ্ধ করা।
  • রোগের উপস্থিতি বা অনুপস্থিতি: রোগের উপস্থিতি (1) বা অনুপস্থিতি (0) নির্ধারণ।
  • পাস বা ফেল: শিক্ষার্থীর ফলাফল পাস (1) বা ফেল (0) হওয়া।

জনপ্রিয় বাইনারি ক্লাসিফিকেশন অ্যালগরিদম:

  • লজিস্টিক রিগ্রেশন
  • K-Nearest Neighbors (KNN)
  • সাপোর্ট ভেক্টর মেশিন (SVM)
  • ডিসিশন ট্রি
  • র্যান্ডম ফরেস্ট

২. Multiclass Classification (মাল্টিক্লাস ক্লাসিফিকেশন)

Multiclass Classification এমন একটি ক্লাসিফিকেশন সমস্যা, যেখানে লক্ষ্য বা আউটপুট তিনটি বা তার বেশি শ্রেণীতে বিভক্ত থাকে। এখানে ডেটাকে একাধিক শ্রেণীতে শ্রেণীবদ্ধ করা হয়, যেমন ভিন্ন প্রকারের ফল, ভিন্ন ধরনের ইমেজ, বিভিন্ন ক্যাটেগরি ইত্যাদি।

বৈশিষ্ট্য:

  • ক্লাসের সংখ্যা: তিনটি বা তার বেশি শ্রেণী বা ক্লাস থাকে।
  • ক্লাসের ধরন: আউটপুট একটি নির্দিষ্ট একাধিক ক্যাটেগরি থেকে নির্বাচিত হয়।
  • লক্ষ্য: ডেটাকে তিনটি বা তার বেশি শ্রেণীতে শ্রেণীবদ্ধ করা।
  • আউটপুট: সাধারণত একাধিক ক্লাসের মধ্যে একটি নির্বাচিত হয়, যেমন "আপেল", "কলা", "কমলা" ইত্যাদি।

উদাহরণ:

  • ফল চিহ্নিতকরণ: একটি ছবির মাধ্যমে এটি চিহ্নিত করা যে এটি আপেল, কলা, বা কমলা।
  • মাল্টি-ক্যাটাগরি ডকুমেন্ট ক্লাসিফিকেশন: একটি আর্টিকেলকে "বিজ্ঞান", "অর্থনীতি", "স্পোর্টস" ইত্যাদি ক্যাটাগরিতে শ্রেণীবদ্ধ করা।
  • বিভিন্ন ধরনের যানবাহন শনাক্তকরণ: গাড়ি, বাস, ট্রাক, বাইক ইত্যাদি শনাক্ত করা।

জনপ্রিয় মাল্টিক্লাস ক্লাসিফিকেশন অ্যালগরিদম:

  • লজিস্টিক রিগ্রেশন (যেটি মাল্টিক্লাস ক্লাসিফিকেশনেও ব্যবহৃত হতে পারে)
  • K-Nearest Neighbors (KNN)
  • ডিসিশন ট্রি
  • র্যান্ডম ফরেস্ট
  • নিউরাল নেটওয়ার্ক (বিশেষ করে ডীপ লার্নিং মডেল)

Binary এবং Multiclass Classification এর মধ্যে পার্থক্য:

বৈশিষ্ট্যBinary ClassificationMulticlass Classification
ক্লাসের সংখ্যাদুটি শ্রেণী (২ ক্লাস)তিনটি বা তার বেশি শ্রেণী (≥৩ ক্লাস)
আউটপুটএকটি বাইনারি ভ্যালু (যেমন 0 বা 1)একাধিক ক্লাস থেকে একটি নির্বাচিত হয়
উদাহরণস্প্যাম ডিটেকশন, রোগের উপস্থিতিফল চিহ্নিতকরণ, মাল্টি-ক্যাটাগরি ডকুমেন্ট ক্লাসিফিকেশন
অ্যালগরিদমলজিস্টিক রিগ্রেশন, SVM, KNNকাস্টমাইজড লজিস্টিক রিগ্রেশন, র্যান্ডম ফরেস্ট, নিউরাল নেটওয়ার্ক

সারাংশ

  • Binary Classification হল একটি ক্লাসিফিকেশন সমস্যা যেখানে আউটপুট দুটি ক্লাসে বিভক্ত থাকে (যেমন 0 বা 1, স্প্যাম বা নন-স্প্যাম)।
  • Multiclass Classification হল একটি ক্লাসিফিকেশন সমস্যা যেখানে আউটপুট তিনটি বা তার বেশি শ্রেণীতে বিভক্ত থাকে (যেমন ফল, যানবাহন, ইত্যাদি)।

এই দুটি ক্লাসিফিকেশন টাস্কের মধ্যে পার্থক্য হল আউটপুট শ্রেণীর সংখ্যা এবং ডেটা শ্রেণীবিভাগের ধরন।

Content added By

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

Logistic Regression মডেল তৈরির পদক্ষেপ

  1. ডেটা লোড করা: প্রথমে একটি ডেটাসেট নির্বাচন করতে হবে।
  2. ডেটা প্রক্রিয়াকরণ: ডেটাকে ট্রেনিং এবং টেস্ট সেটে ভাগ করা।
  3. মডেল তৈরি করা: Logistic Regression মডেল তৈরি করা।
  4. মডেল প্রশিক্ষণ: মডেলটিকে প্রশিক্ষিত (Train) করা।
  5. মডেল মূল্যায়ন: মডেলটির পারফরম্যান্স মূল্যায়ন করা।

উদাহরণ: Iris ডেটাসেট ব্যবহার করে Logistic Regression

এখানে আমরা Iris ডেটাসেট ব্যবহার করব যা Scikit-learn এর মধ্যে রয়েছে। এই ডেটাসেটে ৩টি ক্লাস (Setosa, Versicolor, Virginica) রয়েছে, তবে আমরা এটি দুই ক্লাসে কনভার্ট করব যাতে Logistic Regression ব্যবহার করা যায়।

পদক্ষেপ ১: প্রয়োজনীয় লাইব্রেরি ইনস্টল এবং ইমপোর্ট করা

pip install scikit-learn matplotlib numpy pandas

পদক্ষেপ ২: কোড লিখে Logistic Regression মডেল তৈরি করা

# প্রয়োজনীয় লাইব্রেরি ইমপোর্ট করা
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris

# Iris ডেটাসেট লোড করা
iris = load_iris()
X = iris.data
y = iris.target

# কেবল দুটি ক্লাস নির্বাচন করা (Setosa এবং Versicolor)
X = X[y != 2]
y = y[y != 2]

# ডেটা প্রক্রিয়াকরণ: ডেটাকে ট্রেনিং এবং টেস্ট সেটে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# ফিচার স্কেলিং করা (যেহেতু Logistic Regression জন্য ফিচার স্কেলিং প্রয়োজন)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

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

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

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

# মডেল মূল্যায়ন
accuracy = accuracy_score(y_test, y_pred)
conf_matrix = confusion_matrix(y_test, y_pred)

print(f"Accuracy: {accuracy * 100:.2f}%")
print("Confusion Matrix:")
print(conf_matrix)

# কনফিউশন ম্যাট্রিক্সের ভিজ্যুয়ালাইজেশন
plt.figure(figsize=(5, 5))
plt.imshow(conf_matrix, interpolation='nearest', cmap=plt.cm.Blues)
plt.title('Confusion Matrix')
plt.colorbar()
tick_marks = np.arange(2)
plt.xticks(tick_marks, ['Setosa', 'Versicolor'])
plt.yticks(tick_marks, ['Setosa', 'Versicolor'])
plt.ylabel('True label')
plt.xlabel('Predicted label')
plt.show()

কোডের ব্যাখ্যা:

  1. ডেটা লোড:
    • আমরা Iris ডেটাসেট ব্যবহার করছি, যা ৪টি ফিচার (Sepal Length, Sepal Width, Petal Length, Petal Width) নিয়ে গঠিত।
    • যেহেতু Logistic Regression সাধারণত দুই শ্রেণির সমস্যা সমাধান করে, আমরা ডেটাতে থেকে কেবল দুইটি ক্লাস (Setosa এবং Versicolor) বেছে নিয়েছি।
  2. ট্রেনিং এবং টেস্ট ডেটা ভাগ করা:
    • train_test_split ব্যবহার করে ডেটাসেটটিকে ৭০% ট্রেনিং ডেটা এবং ৩০% টেস্ট ডেটাতে ভাগ করেছি।
  3. ফিচার স্কেলিং:
    • StandardScaler ব্যবহার করে ডেটার স্কেল পরিবর্তন করেছি যাতে সমস্ত ফিচার একই স্কেলে থাকে।
  4. মডেল তৈরি এবং প্রশিক্ষণ:
    • LogisticRegression মডেল তৈরি করা এবং ট্রেনিং ডেটা দিয়ে প্রশিক্ষণ দেওয়া।
  5. ফলাফল মূল্যায়ন:
    • Accuracy এবং Confusion Matrix ব্যবহার করে মডেলটি কতটা ভালো কাজ করেছে তা মূল্যায়ন করেছি।
    • কনফিউশন ম্যাট্রিক্স দিয়ে টার্গেট ক্লাসের সঠিক এবং ভুল শ্রেণীবিভাগের পরিসংখ্যান দেখা যায়।

আউটপুট:

  1. Accuracy: মডেলটি কতটা সঠিকভাবে পূর্বানুমান করেছে তার শতাংশ।
  2. Confusion Matrix: এই ম্যাট্রিক্সে মডেলটি কীভাবে বিভিন্ন ক্লাস সঠিকভাবে বা ভুলভাবে শ্রেণীভুক্ত করেছে তা দেখা যাবে।

এটি একটি বেসিক Logistic Regression মডেল তৈরি করার প্রক্রিয়া। আপনি এটি আরও উন্নত করতে পারেবেন বিভিন্ন হাইপারপ্যারামিটার টিউনিং এবং আরও ডেটা ব্যবহার করে।

সারাংশ

এই প্রক্রিয়াতে, আপনি Scikit-learn ব্যবহার করে একটি Logistic Regression মডেল তৈরি, প্রশিক্ষণ এবং মূল্যায়ন করতে শিখলেন। এটি আপনাকে দুটি শ্রেণীর মধ্যে সম্পর্ক বুঝতে এবং ভবিষ্যদ্বাণী করতে সহায়তা করবে।

Content added By

Confusion Matrix, Precision, Recall, এবং F1-Score মেশিন লার্নিং মডেলগুলির কার্যকারিতা (performance) মূল্যায়ন করতে ব্যবহৃত হয়। বিশেষ করে classification মডেলের ক্ষেত্রে, এই টুলগুলি মডেলের যথার্থতা, ভুল অনুমান এবং ভারসাম্য বিশ্লেষণে সাহায্য করে।

১. Confusion Matrix

Confusion Matrix একটি টেবিল আকারে প্রদর্শিত হয়, যা মডেলের পূর্বানুমানিত (predicted) এবং প্রকৃত (actual) শ্রেণী (class) বা আউটপুটের মধ্যে তুলনা করে। এটি মডেলের কার্যকারিতা বিশ্লেষণ করতে ব্যবহৃত হয়।

Confusion Matrix এর গঠন:

Confusion Matrix সাধারণত ৪টি অংশে বিভক্ত হয়:

  • True Positives (TP): সেগুলি যা সঠিকভাবে positive class হিসেবে পূর্বানুমানিত হয়েছিল।
  • True Negatives (TN): সেগুলি যা সঠিকভাবে negative class হিসেবে পূর্বানুমানিত হয়েছিল।
  • False Positives (FP): সেগুলি যা ভুলভাবে positive class হিসেবে পূর্বানুমানিত হয়েছিল (Type I Error)।
  • False Negatives (FN): সেগুলি যা ভুলভাবে negative class হিসেবে পূর্বানুমানিত হয়েছিল (Type II Error)।

Confusion Matrix উদাহরণ:

ধরা যাক, একটি মডেল একটি ডেটাসেটের উপর কাজ করছে যেখানে দুটি শ্রেণী positive এবং negative রয়েছে।

Predicted PositivePredicted Negative
Actual PositiveTP (True Positive)FN (False Negative)
Actual NegativeFP (False Positive)TN (True Negative)

Python উদাহরণ:

from sklearn.metrics import confusion_matrix
import numpy as np

# প্রকৃত (Actual) এবং পূর্বানুমানিত (Predicted) লেবেল
y_true = np.array([1, 0, 1, 1, 0, 1, 0, 1, 0, 0])
y_pred = np.array([1, 0, 0, 1, 0, 1, 0, 0, 1, 0])

# কনফিউশন ম্যাট্রিক্স তৈরি করা
cm = confusion_matrix(y_true, y_pred)
print(cm)

২. Precision

Precision হল সঠিকভাবে পূর্বানুমানিত পজিটিভ আউটপুটগুলির (True Positives) হার, যা ভুল পজিটিভ আউটপুট (False Positives) বাদ দিয়ে বের করা হয়।

Precision ফর্মুলা:

Precision=TPTP+FP\text{Precision} = \frac{TP}{TP + FP}

এটি নির্দেশ করে মডেল কতটা সঠিকভাবে পজিটিভ শ্রেণী শনাক্ত করছে।

Python উদাহরণ:

from sklearn.metrics import precision_score

# Precision গণনা
precision = precision_score(y_true, y_pred)
print("Precision:", precision)

৩. Recall

Recall (বা Sensitivity বা True Positive Rate) হল সঠিকভাবে পূর্বানুমানিত পজিটিভ আউটপুটগুলির হার, যা প্রকৃত পজিটিভ (True Positives) এর মধ্যে বিভক্ত।

Recall ফর্মুলা:

Recall=TPTP+FN\text{Recall} = \frac{TP}{TP + FN}

এটি নির্দেশ করে মডেল কতটা সঠিকভাবে প্রকৃত পজিটিভ শ্রেণী শনাক্ত করছে।

Python উদাহরণ:

from sklearn.metrics import recall_score

# Recall গণনা
recall = recall_score(y_true, y_pred)
print("Recall:", recall)

৪. F1-Score

F1-Score হল Precision এবং Recall এর মধ্যকার ভারসাম্য। এটি Precision এবং Recall এর হারমনিক গড় (harmonic mean) হিসাব করে এবং মডেলের পারফরম্যান্সের একটি সামগ্রিক মূল্যায়ন প্রদান করে।

F1-Score ফর্মুলা:

F1-Score=2×Precision×RecallPrecision+Recall\text{F1-Score} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}

এটি Precision এবং Recall এর মধ্যে একটি ভারসাম্য তৈরি করে, বিশেষ করে যখন কেবল Precision বা Recall ব্যবহার করা সম্ভব না।

Python উদাহরণ:

from sklearn.metrics import f1_score

# F1-Score গণনা
f1 = f1_score(y_true, y_pred)
print("F1-Score:", f1)

Confusion Matrix, Precision, Recall, এবং F1-Score এর মধ্যে পার্থক্য:

মেট্রিকবর্ণনাব্যবহার
Confusion Matrixপ্রকৃত এবং পূর্বানুমানিত আউটপুটের মধ্যে সম্পর্ক প্রদর্শন করে (TP, TN, FP, FN)।মডেলের ভুল এবং সঠিক পূর্বানুমান বোঝাতে ব্যবহৃত হয়।
Precisionসঠিকভাবে পূর্বানুমানিত পজিটিভ আউটপুটের শতাংশ। (False Positive কমানোর জন্য)মডেল পজিটিভ কেস সঠিকভাবে চিহ্নিত করছে তা জানতে ব্যবহৃত হয়।
Recallপ্রকৃত পজিটিভ আউটপুটের মধ্যে সঠিকভাবে পূর্বানুমানিত পজিটিভ আউটপুটের শতাংশ। (False Negative কমানোর জন্য)মডেল আসল পজিটিভ কেস চিহ্নিত করতে সক্ষম কিনা তা জানতে ব্যবহৃত হয়।
F1-ScorePrecision এবং Recall এর মধ্যে ভারসাম্য বজায় রেখে মডেলের সামগ্রিক কার্যকারিতা মূল্যায়ন করে।Precision এবং Recall এর মধ্যে একটি ভারসাম্য তৈরি করতে ব্যবহৃত হয়।

সারাংশ:

  • Confusion Matrix: মডেলের পূর্বানুমান এবং প্রকৃত আউটপুটের মধ্যে সম্পর্কের বিশ্লেষণ।
  • Precision: মডেল কতটা সঠিকভাবে পজিটিভ কেস শনাক্ত করেছে।
  • Recall: মডেল কতটা সঠিকভাবে প্রকৃত পজিটিভ কেস শনাক্ত করেছে।
  • F1-Score: Precision এবং Recall এর ভারসাম্য প্রদান করে, বিশেষত যখন দুটি মেট্রিকের মধ্যে ভারসাম্য রাখা প্রয়োজন।

এই মেট্রিকগুলি মডেলের পারফরম্যান্স মূল্যায়নে সহায়ক, বিশেষ করে যখন আপনি ভুল অনুমান (False Positives এবং False Negatives) সম্পর্কে গভীরভাবে বিশ্লেষণ করতে চান।

Content added By
Promotion

Are you sure to start over?

Loading...