Classification হল একটি Supervised Learning (সুপারভাইজড লার্নিং) প্রক্রিয়া, যার মাধ্যমে ইনপুট ডেটা থেকে আউটপুট শ্রেণী (category) বা ক্লাস চিহ্নিত করা হয়। Binary Classification এবং Multiclass Classification হল ক্লাসিফিকেশন টাস্কের দুটি প্রধান ধরন, এবং তাদের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে।
1. Binary Classification
Binary Classification একটি ক্লাসিফিকেশন সমস্যা যেখানে আউটপুট শ্রেণী (label) দুটি সম্ভাব্য মানের মধ্যে থাকে, সাধারণত 0 এবং 1, True এবং False, অথবা Yes এবং No। এর মাধ্যমে মডেলটি একটি ইনপুট ডেটা থেকে দুটি শ্রেণীর মধ্যে একটি শ্রেণী নির্ধারণ করে।
উদাহরণ:
- ইমেইল স্প্যাম ডিটেকশন: মেইলটি স্প্যাম (1) নাকি স্প্যাম নয় (0) তা চিহ্নিত করা।
- রোগ নির্ধারণ: রোগীটি একটি নির্দিষ্ট রোগের (1) শিকার কি না, বা সুস্থ (0) আছে কিনা চিহ্নিত করা।
- ক্রেডিট স্কোরিং: ঋণগ্রহীতা ঋণ পরিশোধ করতে সক্ষম কি না (1 = সক্ষম, 0 = অক্ষম)।
সাধারণভাবে:
- ইনপুট: বিভিন্ন ফিচার যেমন বয়স, উচ্চতা, পেশা, শরীরের অবস্থা ইত্যাদি।
- আউটপুট: 0 অথবা 1, True অথবা False, স্প্যাম বা নন-স্প্যাম।
Binary Classification এর একটি উদাহরণ:
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# ডেটা তৈরি করা (Binary Classification)
X, y = make_classification(n_samples=1000, n_features=20, 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)
# মডেল তৈরি এবং ট্রেনিং
model = LogisticRegression()
model.fit(X_train, y_train)
# প্রেডিকশন করা
y_pred = model.predict(X_test)
# অ্যাকিউরেসি মূল্যায়ন
print("Accuracy:", accuracy_score(y_test, y_pred))
2. Multiclass Classification
Multiclass Classification হল একটি ক্লাসিফিকেশন সমস্যা যেখানে আউটপুট শ্রেণী তিনটির বেশি সম্ভাব্য ক্লাসে বিভক্ত থাকে। অর্থাৎ, এটি একাধিক শ্রেণী নির্বাচন করতে সক্ষম হয়। এখানে মডেলটি একটি ইনপুট ডেটাকে একাধিক শ্রেণীর মধ্যে একটি শ্রেণী নির্ধারণ করে।
উদাহরণ:
- চিত্র শ্রেণীকরণ: একটি ছবির মধ্যে কুকুর, বিড়াল, বা পাখি থাকতে পারে।
- মাল্টি-ক্লাস ইমেইল ক্যাটেগরাইজেশন: একটি ইমেইল ক্যাটেগরি হতে পারে "বিজনেস", "পার্সোনাল", "স্প্যাম" ইত্যাদি।
- হ্যান্ডরাইটেন ডিজিট শনাক্তকরণ: MNIST ডেটাসেটে প্রতিটি চিত্র 0 থেকে 9 পর্যন্ত একটি ডিজিট চিহ্নিত করে।
সাধারণভাবে:
- ইনপুট: বিভিন্ন ফিচার যেমন ইমেজ পিক্সেল, শব্দের সংখ্যা, বয়স ইত্যাদি।
- আউটপুট: 0, 1, 2, ..., n (এখানে n হল শ্রেণীর সংখ্যা)।
Multiclass Classification এর একটি উদাহরণ:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# Iris ডেটাসেট লোড করা
data = load_iris()
X = data.data
y = data.target
# ডেটা ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# মডেল তৈরি এবং ট্রেনিং
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)
# প্রেডিকশন করা
y_pred = model.predict(X_test)
# অ্যাকিউরেসি মূল্যায়ন
print("Accuracy:", accuracy_score(y_test, y_pred))
পার্থক্যগুলি:
| বিষয় | Binary Classification | Multiclass Classification |
|---|---|---|
| আউটপুট শ্রেণী | দুটি শ্রেণী (0 বা 1, Yes বা No) | তিনটি বা তার বেশি শ্রেণী |
| মডেল | একটি বাইনারি ক্লাসিফিকেশন মডেল | একটি মাল্টিক্লাস ক্লাসিফিকেশন মডেল |
| উদাহরণ | স্প্যাম বা নন-স্প্যাম ইমেইল, রোগ নির্ধারণ | ইমেজ শ্রেণীকরণ, মাল্টিক্লাস রেটিং |
| ক্লাসিফিকেশন সংখ্যা | ২টি ক্লাস | ৩টি বা তার বেশি ক্লাস |
| প্রযুক্তি | Logistic Regression, SVM, Naive Bayes | Logistic Regression, Random Forest, SVM |
সারাংশ:
- Binary Classification দুটি শ্রেণীর মধ্যে সিদ্ধান্ত নেয়, যেমন স্প্যাম বা নন-স্প্যাম, রোগী বা সুস্থ।
- Multiclass Classification তিনটি বা তার বেশি শ্রেণী মধ্যে একটি নির্ধারণ করে, যেমন চিত্র শ্রেণীকরণ বা ইমেইল ক্যাটেগরি।
উপরে দেওয়া উদাহরণগুলি Binary এবং Multiclass ক্লাসিফিকেশন সমস্যার একটি সহজ সমাধান প্রদর্শন করে, এবং এগুলিকে Logistic Regression, Support Vector Machine (SVM) এবং Random Forest ইত্যাদি মডেল ব্যবহার করে সমাধান করা যেতে পারে।