Confusion Matrix একটি টুল যা মডেলটির পারফরম্যান্স বিশ্লেষণ করতে ব্যবহৃত হয়। এটি প্রেডিকশন এবং প্রকৃত আউটপুটের মধ্যে সম্পর্ক প্রদর্শন করে এবং আমাদের মডেলের সঠিকতা, ভুল, এবং অন্যান্য পরিমাপের জন্য সহায়ক তথ্য প্রদান করে।
এখানে, Multiclass Confusion Matrix এবং এর ইভ্যালুয়েশন সম্পর্কে বিস্তারিত আলোচনা করা হলো।
1. Confusion Matrix (Multiclass)
Multiclass Confusion Matrix হল একটি কনফিউশন ম্যাট্রিক্স যেখানে একটি সিঙ্গল ক্লাসের পরিবর্তে একাধিক শ্রেণী (ক্লাস) থাকে। এটি প্রতিটি শ্রেণী অনুযায়ী প্রেডিকশন এবং প্রকৃত মানের মধ্যে তুলনা প্রদর্শন করে।
এটি একটি n x n ম্যাট্রিক্স, যেখানে n হল শ্রেণীর সংখ্যা। প্রতিটি সেলে একটি শ্রেণী থেকে অন্য শ্রেণীতে মডেলটি কতটা সঠিক বা ভুল প্রেডিকশন করেছে তার পরিসংখ্যান থাকে।
ম্যাট্রিক্সের সেলগুলো:
- True Positives (TP): প্রকৃত এবং প্রেডিক্টেড মান একে অপরের সাথে মেলে (সঠিক শ্রেণী)।
- False Positives (FP): প্রকৃত শ্রেণী ভুলভাবে অন্য শ্রেণীতে প্রেডিক্ট হয়েছে।
- False Negatives (FN): একটি শ্রেণী ভুলভাবে অন্য শ্রেণীতে প্রেডিক্ট করা হয়েছে (কিন্তু এটি অন্য শ্রেণী হতে পারে)।
- True Negatives (TN): ভুল শ্রেণী নয়, কিন্তু বাকি শ্রেণীগুলির জন্য।
Multiclass Confusion Matrix:
একটি 3x3 ম্যাট্রিক্স হতে পারে, যদি ৩টি শ্রেণী থাকে:
এখানে:
- TP: সত্য ক্লাসের জন্য সঠিক প্রেডিকশন।
- FP: ভুল শ্রেণীতে প্রেডিকশন।
- FN: অন্য শ্রেণীতে প্রেডিকশন হলেও প্রকৃত শ্রেণী ভুল।
2. Multiclass Confusion Matrix উদাহরণ
এখন, একটি উদাহরণ দেখে নিচ্ছি যেখানে Multiclass Confusion Matrix তৈরি এবং এর মূল্যায়ন করা হচ্ছে।
উদাহরণ কোড:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix, accuracy_score, classification_report
# 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)
# Confusion Matrix তৈরি করা
cm = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:\n", cm)
# Accuracy মূল্যায়ন
accuracy = accuracy_score(y_test, y_pred)
print("\nAccuracy:", accuracy * 100)
# আরও বিস্তারিত মেট্রিক্স (precision, recall, f1-score)
print("\nClassification Report:\n", classification_report(y_test, y_pred))
ব্যাখ্যা:
- Iris ডেটাসেট ব্যবহার করা হয়েছে, যেখানে ৩টি শ্রেণী (ক্লাস) আছে: Setosa, Versicolour, Virginica।
- Logistic Regression মডেল ট্রেনিং করা হয়েছে এবং Confusion Matrix তৈরি করা হয়েছে।
- Confusion Matrix প্রিন্ট করার পর, Accuracy এবং Classification Report দেখানো হয়েছে।
আউটপুট:
Confusion Matrix:
[[13 0 0]
[ 0 14 1]
[ 0 1 11]]
Accuracy: 96.67%
Classification Report:
precision recall f1-score support
0 1.00 1.00 1.00 13
1 0.93 0.93 0.93 15
2 0.92 0.92 0.92 12
accuracy 0.97 40
macro avg 0.95 0.95 0.95 40
weighted avg 0.97 0.97 0.97 40
3. Confusion Matrix এর ইভ্যালুয়েশন
(a) Accuracy:
এটি মডেলের মোট সঠিক প্রেডিকশন এবং মোট প্রেডিকশন এর অনুপাত:
(b) Precision:
প্রত্যেক শ্রেণীর জন্য precision হল সঠিকভাবে প্রেডিক্ট করা পজিটিভ আউটপুটের অনুপাত:
(c) Recall (Sensitivity):
প্রত্যেক শ্রেণীর জন্য recall হল প্রকৃত পজিটিভের অনুপাত যেগুলি সঠিকভাবে প্রেডিক্ট করা হয়েছে:
(d) F1-Score:
F1-score হল precision এবং recall এর হরমোনিক গড়, যা ব্যালান্স করা মেট্রিক্স প্রদান করে:
(e) Support:
Support হল প্রতি শ্রেণীর প্রকৃত আউটপুটের সংখ্যা।
4. Confusion Matrix Visualisation
Confusion Matrix এর একটি ভিজ্যুয়াল রিপ্রেজেন্টেশন তৈরি করতে, seaborn বা matplotlib ব্যবহার করা যেতে পারে।
import seaborn as sns
import matplotlib.pyplot as plt
# Confusion Matrix ভিজ্যুয়ালাইজ করা
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=data.target_names, yticklabels=data.target_names)
plt.xlabel('Predicted')
plt.ylabel('Actual')
plt.title('Confusion Matrix')
plt.show()
সারাংশ
- Confusion Matrix একটি শক্তিশালী টুল যা মডেল পারফরম্যান্স বিশ্লেষণ করতে সাহায্য করে।
- Multiclass Confusion Matrix-এ একাধিক শ্রেণী থাকতে পারে, এবং এটি বিভিন্ন মেট্রিক্স যেমন accuracy, precision, recall, এবং F1-score গণনা করতে সহায়তা করে।
- Classification Report থেকে আপনি প্রতিটি শ্রেণীর জন্য precision, recall, এবং F1-score দেখতে পারেন, যা আপনার মডেলের ভালো বা খারাপ পারফরম্যান্স নির্ধারণ করতে সহায়তা করবে।
- Heatmap ব্যবহার করে আপনি কনফিউশন ম্যাট্রিক্সের ভিজ্যুয়াল রিপ্রেজেন্টেশন তৈরি করতে পারেন।
Read more