Imbalanced Data হ্যান্ডলিং এর উদাহরণ

Imbalanced Data হ্যান্ডলিং - পাইথনে লজিস্টিক রিগ্রেশন (Logistic Regression in Python) - Machine Learning

341

Imbalanced Data হল এমন ডেটা যেখানে ক্লাসগুলির মধ্যে ভারসাম্যহীনতা থাকে, অর্থাৎ এক শ্রেণীর ডেটার সংখ্যা অন্য শ্রেণীর ডেটার তুলনায় অনেক বেশি বা কম। উদাহরণস্বরূপ, ক্রেডিট কার্ড ফ্রড ডিটেকশন বা স্প্যাম ইমেইল ডিটেকশন এর মতো সমস্যাগুলিতে সাধারণত নেগেটিভ ক্লাস (যেমন, সৎ লেনদেন) অনেক বেশি থাকে এবং পজিটিভ ক্লাস (যেমন, জালিয়াত লেনদেন) অনেক কম থাকে। এই ধরনের ডেটাতে মডেলটি কেবলমাত্র প্রধান শ্রেণী (যেমন সৎ লেনদেন) শিখতে পারে, এবং অপ্রচলিত শ্রেণী (যেমন জালিয়াত লেনদেন) সঠিকভাবে শনাক্ত করতে ব্যর্থ হতে পারে।

Imbalanced Data হ্যান্ডলিংয়ের পদ্ধতিগুলি:

  1. Resampling Methods:
    • Oversampling (পজিটিভ ক্লাসের জন্য ডেটা বাড়ানো)
    • Undersampling (নেগেটিভ ক্লাসের জন্য ডেটা কমানো)
  2. SMOTE (Synthetic Minority Over-sampling Technique):
    • এটি একটি জনপ্রিয় পদ্ধতি যেখানে মাইনোরিটি ক্লাস থেকে নতুন সিনথেটিক উদাহরণ তৈরি করা হয়।
  3. Class Weights:
    • মডেল ট্রেনিংয়ের সময় ক্লাস-ভিত্তিক পেনালটি যোগ করা, যাতে মডেল কম প্রতিনিধিত্ব করা ক্লাসের জন্য বেশি গুরুত্ব দেয়।

উদাহরণ: Imbalanced Data হ্যান্ডলিং এর জন্য SMOTE ব্যবহার

এখানে আমরা একটি সাধারণ উদাহরণ দেখাবো যেখানে আমরা imbalanced dataset ব্যবহার করব এবং SMOTE (Synthetic Minority Over-sampling Technique) ব্যবহার করে মডেল ট্রেনিং করব।

1. লাইব্রেরি ইমপোর্ট করা

import numpy as np
import pandas as pd
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, accuracy_score
from imblearn.over_sampling import SMOTE

2. Imbalanced ডেটাসেট তৈরি করা

এখানে, আমরা একটি কৃত্রিম অপ্রতিনিধিত্বমূলক (imbalanced) ডেটাসেট তৈরি করবো।

# কৃত্রিম Imbalanced ডেটাসেট তৈরি করা
X, y = make_classification(n_samples=1000, n_features=20, n_informative=2, n_redundant=10,
                            n_classes=2, weights=[0.95, 0.05], flip_y=0, random_state=42)

# ডেটার শ্রেণী বণ্টন দেখানো
print("Original class distribution:", dict(zip(*np.unique(y, return_counts=True))))

এই ডেটাসেটে 95% ক্লাস 0 (নেগেটিভ ক্লাস) এবং 5% ক্লাস 1 (পজিটিভ ক্লাস) থাকবে, যা একটি ইমব্যালেন্সড ডেটাসেট।

3. ডেটা ট্রেনিং এবং টেস্ট সেটে ভাগ করা

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

4. SMOTE ব্যবহার করে Oversampling

SMOTE (Synthetic Minority Over-sampling Technique) ব্যবহার করে মাইনোরিটি ক্লাস (পজিটিভ ক্লাস) এর জন্য নতুন সিনথেটিক উদাহরণ তৈরি করা হবে।

# SMOTE ব্যবহার করে oversampling
smote = SMOTE(random_state=42)
X_resampled, y_resampled = smote.fit_resample(X_train, y_train)

# রিস্যাম্পলড ডেটার শ্রেণী বণ্টন দেখানো
print("Resampled class distribution:", dict(zip(*np.unique(y_resampled, return_counts=True))))

এখানে, SMOTE দ্বারা পজিটিভ ক্লাস এর উদাহরণগুলি বৃদ্ধি পাবে, ফলে ডেটাসেটটি ভারসাম্যপূর্ণ হয়ে যাবে (50%/50%)।

5. মডেল তৈরি এবং ফিট করা

এখন আমরা একটি লজিস্টিক রিগ্রেশন মডেল তৈরি করবো এবং তা ট্রেনিং ডেটাতে ফিট করবো।

# লজিস্টিক রিগ্রেশন মডেল তৈরি করা
model = LogisticRegression()

# মডেল ফিট করা
model.fit(X_resampled, y_resampled)

6. মডেল মূল্যায়ন

মডেলটি প্রশিক্ষণের পর, এখন আমরা এর কার্যকারিতা পরীক্ষা করতে পারি। আমরা accuracy এবং অন্যান্য মূল্যায়ন মেট্রিকস যেমন precision, recall, এবং F1-score দেখতে পারি।

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

# মডেলের accuracy এবং classification report
print(f"Accuracy: {accuracy_score(y_test, y_pred) * 100}%")
print("Classification Report:")
print(classification_report(y_test, y_pred))

7. সারাংশ

  • Imbalanced Data Handling: Imbalanced ডেটা হ্যান্ডলিংয়ের জন্য আমরা SMOTE ব্যবহার করেছি, যা মাইনোরিটি ক্লাসের উদাহরণ বাড়ানোর জন্য সিনথেটিক উদাহরণ তৈরি করে।
  • Oversampling: SMOTE ব্যবহার করে পজিটিভ ক্লাসের উদাহরণ বৃদ্ধি করেছি।
  • Logistic Regression: মডেল ট্রেনিং শেষে এর পারফরম্যান্স মূল্যায়ন করেছি।

এছাড়া Undersampling, Class Weights ইত্যাদি পদ্ধতিও ব্যবহার করা যেতে পারে।

অন্যান্য পদ্ধতিগুলি:

  1. Undersampling: নেগেটিভ ক্লাসের উদাহরণ কমানো।
  2. Class Weights: মডেলকে ক্লাস-ভিত্তিক পেনালটি দেওয়া যাতে এটি মাইনোরিটি ক্লাসের দিকে বেশি মনোযোগ দেয়।

এই ধরনের ডেটাসেট হ্যান্ডলিং পদ্ধতিগুলি ইমব্যালেন্সড ডেটাসেটে মডেলের পারফরম্যান্স উন্নত করতে সহায়ক।

Content added By
Promotion

Are you sure to start over?

Loading...