Confusion Matrix, ROC Curve, এবং AUC হল মেশিন লার্নিং মডেলগুলির পারফরম্যান্স মূল্যায়ন করার জন্য ব্যবহৃত জনপ্রিয় মেট্রিক্স। এই তিনটি ধারণা বিশেষত বাইনারি ক্লাসিফিকেশন সমস্যায় ব্যবহৃত হয়, যেখানে দুইটি শ্রেণী (যেমন: 0 বা 1, True বা False) থাকে।
নিচে Confusion Matrix, ROC Curve, এবং AUC সম্পর্কে বিস্তারিত আলোচনা করা হয়েছে।
1. Confusion Matrix (কনফিউশন ম্যাট্রিক্স)
Confusion Matrix হল একটি টেবিল যা ক্লাসিফিকেশন মডেলের পারফরম্যান্সকে বিশ্লেষণ করতে ব্যবহৃত হয়। এটি প্রকৃত শ্রেণী এবং মডেল দ্বারা প্রেডিক্ট করা শ্রেণীর তুলনা করে। এই ম্যাট্রিক্সটি মডেলের পারফরম্যান্সের একটি বিস্তারিত চিত্র প্রদর্শন করে।
কনফিউশন ম্যাট্রিক্সের ৪টি উপাদান:
- True Positive (TP): মডেল সঠিকভাবে ইতিবাচক শ্রেণী (positive class) পূর্বানুমান করেছে।
- True Negative (TN): মডেল সঠিকভাবে নেতিবাচক শ্রেণী (negative class) পূর্বানুমান করেছে।
- False Positive (FP): মডেল ভুলভাবে নেতিবাচক শ্রেণীকে ইতিবাচক হিসেবে পূর্বানুমান করেছে (Type I error)।
- False Negative (FN): মডেল ভুলভাবে ইতিবাচক শ্রেণীকে নেতিবাচক হিসেবে পূর্বানুমান করেছে (Type II error)।
কনফিউশন ম্যাট্রিক্সের উদাহরণ:
| Predicted Positive | Predicted Negative | |
|---|---|---|
| Actual Positive | True Positive (TP) | False Negative (FN) |
| Actual Negative | False Positive (FP) | True Negative (TN) |
কনফিউশন ম্যাট্রিক্সের মানদণ্ড:
Accuracy:
এটি মোট সঠিক পূর্বানুমানগুলির অনুপাত।
Precision:
এটি পূর্বানুমান করা ইতিবাচক শ্রেণীর মধ্যে সঠিক পূর্বানুমানগুলির অনুপাত।
Recall (Sensitivity):
এটি প্রকৃত ইতিবাচক শ্রেণীর মধ্যে সঠিক পূর্বানুমানগুলির অনুপাত।
F1 Score:
Precision এবং Recall এর মধ্যকার ভারসাম্য।
2. ROC Curve (Receiver Operating Characteristic Curve)
ROC Curve হল একটি গ্রাফিক্যাল রিপ্রেজেন্টেশন যা True Positive Rate (TPR) (যাকে Recall বলা হয়) এবং False Positive Rate (FPR) এর মধ্যে সম্পর্ক প্রদর্শন করে।
ROC Curve ব্যাখ্যা:
True Positive Rate (TPR):
এটি রিস্কিত ইতিবাচক শ্রেণী চিহ্নিত করার দক্ষতা।
False Positive Rate (FPR):
এটি ভুলভাবে নেতিবাচক শ্রেণীকে ইতিবাচক হিসেবে চিহ্নিত করার হার।
ROC Curve তে X-axis এ FPR এবং Y-axis এ TPR থাকে। একটি আদর্শ মডেল কিউভের উপরের বাম কোণে থাকবে (অর্থাৎ TPR খুব বেশি এবং FPR খুব কম)।
ROC Curve এর মানদণ্ড:
- Perfect Classifier: যদি মডেলটি খুব ভাল হয়, তবে ROC Curve কোণাকৃতি বাম উপরের দিকে চলে যাবে, যার মানে TPR প্রায় 1 এবং FPR প্রায় 0।
- Random Classifier: যদি মডেলটি শুধুমাত্র এলোমেলো সিদ্ধান্ত নেয়, তবে ROC Curve X-axis বরাবর চলবে (যেখানে TPR = FPR)।
3. AUC (Area Under the Curve)
AUC (Area Under the Curve) হল ROC Curve এর নিচে থাকা এলাকা, যা মডেলের পারফরম্যান্স পরিমাপ করে। AUC এর মান 0 থেকে 1 এর মধ্যে থাকে:
- AUC = 1: এর মানে মডেলটি শতভাগ সঠিকভাবে কাজ করছে।
- AUC = 0.5: এর মানে মডেলটি পুরোপুরি এলোমেলো (random) কাজ করছে।
- AUC < 0.5: এর মানে মডেলটি ভুল ক্লাসিফিকেশন করছে, এটি এলোমেলো চেয়ে খারাপ।
AUC এবং পারফরম্যান্সের সম্পর্ক:
- AUC > 0.8: এটি একটি ভালো মডেল হিসেবে বিবেচিত হয়।
- AUC > 0.9: এটি একটি দুর্দান্ত মডেল।
- AUC ≈ 0.5: এটি খুবই খারাপ বা এলোমেলো মডেল।
উদাহরণ: Python কোডে Confusion Matrix, ROC Curve এবং AUC
from sklearn.metrics import confusion_matrix, roc_curve, auc
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
# ডেটা লোড করা
data = load_iris()
X = data.data
y = data.target
# শুধুমাত্র বাইনারি ক্লাসিফিকেশন নিয়ে কাজ করব
y = (y == 0).astype(int) # 'setosa' ক্লাসকে 1 এবং অন্য সবকিছুকে 0 হিসেবে চিহ্নিত করা
# ডেটাকে ট্রেনিং এবং টেস্ট সেটে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# মডেল তৈরি এবং প্রশিক্ষণ
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)
# প্রেডিকশন
y_pred = model.predict(X_test)
y_prob = model.predict_proba(X_test)[:, 1] # প্রোবাবিলিটি বের করা
# Confusion Matrix
cm = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:")
print(cm)
# ROC Curve এবং AUC
fpr, tpr, thresholds = roc_curve(y_test, y_prob)
roc_auc = auc(fpr, tpr)
print(f"AUC: {roc_auc}")
# ROC Curve প্লট করা
plt.figure()
plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (AUC = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic')
plt.legend(loc="lower right")
plt.show()
সারাংশ:
- Confusion Matrix: একটি টেবিল যা মডেলের পারফরম্যান্স বিশ্লেষণ করতে সাহায্য করে।
- ROC Curve: এটি TPR এবং FPR এর মধ্যে সম্পর্ক দেখায়, যেখানে X-axis এ FPR এবং Y-axis এ TPR থাকে।
- AUC: ROC Curve এর নিচে থাকা এলাকা, যা মডেলের পারফরম্যান্স পরিমাপ করে।
এই মেট্রিক্সগুলো মডেলের পারফরম্যান্সের বিস্তারিত বিশ্লেষণ প্রদান করে এবং বিশেষত বাইনারি ক্লাসিফিকেশন সমস্যায় ব্যবহৃত হয়।
Read more