Confusion Matrix তৈরি এবং বিশ্লেষণ

Model Evaluation এবং Visualization - কেরাস ডিপ লার্নিং (Deep Learning with Keras) - Machine Learning

464

Confusion Matrix (বিশ্লেষণ ম্যাট্রিক্স) একটি টুল যা মডেলের পারফরম্যান্স বিশ্লেষণে ব্যবহৃত হয়, বিশেষ করে শ্রেণীবিভাগ সমস্যা (classification problems) সমাধানে। এটি মডেল দ্বারা পূর্বাভাস করা ফলাফল এবং আসল ফলাফলের মধ্যে সম্পর্ক প্রদর্শন করে।

Confusion Matrix সাধারণত একটি স্কয়ার ম্যাট্রিক্সের মতো দেখায়, যেখানে প্রতিটি সেলে দুইটি শ্রেণীর (Actual এবং Predicted) মধ্যে সম্পর্ক প্রদর্শিত হয়। এটি মডেলটির ভুল এবং সঠিক পূর্বাভাস সম্পর্কে তথ্য দেয়।

Confusion Matrix এর মৌলিক উপাদান:

একটি কনফিউশন ম্যাট্রিক্স সাধারণত নিচের এই ৪টি উপাদান দিয়ে গঠিত:

  1. True Positive (TP): সেগুলি যেগুলি সঠিকভাবে পজিটিভ হিসেবে শ্রেণীবদ্ধ করা হয়েছে।
  2. True Negative (TN): সেগুলি যেগুলি সঠিকভাবে নেগেটিভ হিসেবে শ্রেণীবদ্ধ করা হয়েছে।
  3. False Positive (FP): সেগুলি যেগুলি ভুলভাবে পজিটিভ হিসেবে শ্রেণীবদ্ধ করা হয়েছে (এটি Type I error হিসেবে পরিচিত)।
  4. False Negative (FN): সেগুলি যেগুলি ভুলভাবে নেগেটিভ হিসেবে শ্রেণীবদ্ধ করা হয়েছে (এটি Type II error হিসেবে পরিচিত)।

Confusion Matrix এর আকার:

যতগুলি শ্রেণী থাকে, ততগুলি আউটপুট তৈরি হয়, কিন্তু সাধারণত বাইনারি (দ্বৈত) শ্রেণীবিভাগে কনফিউশন ম্যাট্রিক্সের আকার হবে ২x২:

Predicted PositivePredicted Negative
Actual PositiveTrue Positive (TP)False Negative (FN)
Actual NegativeFalse Positive (FP)True Negative (TN)

Confusion Matrix এর বিশ্লেষণ

Confusion Matrix এর মাধ্যমে মডেলের কার্যকারিতা বিশ্লেষণ করার জন্য বিভিন্ন মেট্রিক্স বের করা যায়, যেগুলি মডেলের পারফরম্যান্স মূল্যায়নে সহায়ক:

1. Accuracy:

মডেলটি সঠিকভাবে কতগুলি পূর্বাভাস করেছে তা নির্দেশ করে।

Accuracy=TP+TNTP+TN+FP+FN\text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}

2. Precision:

এটি মডেলের পজিটিভ পূর্বাভাসগুলির মধ্যে কতগুলি সঠিক ছিল তা নির্দেশ করে। উচ্চ precision মানে ভুল পজিটিভ কম।

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

3. Recall (Sensitivity):

এটি মডেলের পজিটিভ ক্লাস সনাক্তকরণের ক্ষমতা নির্দেশ করে। উচ্চ recall মানে মডেলটি পজিটিভ ক্লাসগুলি ভালোভাবে শনাক্ত করছে।

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

4. F1-Score:

এটি precision এবং recall এর ভারসাম্যপূর্ণ গড়। F1-Score সাধারণত ব্যবহৃত হয় যখন precision এবং recall এর মধ্যে একটি ব্যালান্স প্রয়োজন হয়।

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

5. Specificity:

এটি মডেলের ক্ষমতা নির্দেশ করে নেগেটিভ ক্লাস সঠিকভাবে শনাক্ত করতে।

Specificity=TNTN+FP\text{Specificity} = \frac{TN}{TN + FP}

Keras ব্যবহার করে Confusion Matrix তৈরি

Keras এর মডেল ব্যবহার করে confusion matrix তৈরি করতে এবং বিশ্লেষণ করার জন্য, সাধারণত scikit-learn এর confusion_matrix ফাংশন ব্যবহার করা হয়।

নিচে একটি উদাহরণ দেওয়া হলো:

উদাহরণ: Confusion Matrix তৈরি করা

import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from sklearn.metrics import confusion_matrix, classification_report
import matplotlib.pyplot as plt
import seaborn as sns

# ডেটাসেট লোড করা (এটি আপনার প্রকল্পের জন্য কাস্টমাইজ করুন)
# উদাহরণস্বরূপ, এখানে MNIST ডেটাসেট ব্যবহার করা হয়েছে
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()

# ডেটাসেট প্রিপ্রসেসিং
x_train = x_train.astype('float32') / 255.0
x_test = x_test.astype('float32') / 255.0
x_train = np.reshape(x_train, (x_train.shape[0], 28, 28, 1))
x_test = np.reshape(x_test, (x_test.shape[0], 28, 28, 1))

# নিউরাল নেটওয়ার্ক মডেল তৈরি
model = Sequential()
model.add(Dense(128, activation='relu', input_shape=(28, 28, 1)))
model.add(Dense(10, activation='softmax'))  # 10 ক্লাস (0-9)

# মডেল কম্পাইল এবং প্রশিক্ষণ
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)

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

# Confusion Matrix তৈরি করা
y_pred_classes = np.argmax(y_pred, axis=1)  # Predicted class

cm = confusion_matrix(y_test, y_pred_classes)

# Confusion Matrix প্রদর্শন করা
plt.figure(figsize=(10, 7))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=np.arange(10), yticklabels=np.arange(10))
plt.xlabel('Predicted Labels')
plt.ylabel('True Labels')
plt.title('Confusion Matrix')
plt.show()

# Classification Report
print(classification_report(y_test, y_pred_classes))

Confusion Matrix এর বিশ্লেষণ

  1. Heatmap: মডেলটির কনফিউশন ম্যাট্রিক্সের heatmap চিত্র দেখে আপনি TP, TN, FP, FN এর অবস্থান দেখতে পারেন।
  2. Classification Report: এটি precision, recall, F1-score এবং support (কতটি ইনস্ট্যান্স ক্লাসে রয়েছে) সম্পর্কে বিস্তারিত তথ্য দেয়, যা মডেলের কার্যকারিতা বুঝতে সহায়ক।

নোট:

  • F1-Score সাধারণত যেসব ডেটাতে পজিটিভ ক্লাসের সংখ্যা কম, সেগুলোর জন্য খুব গুরুত্বপূর্ণ। এই পরিস্থিতিতে accuracy ভাল না হলেও F1-Score একটি ভালো মূল্যায়ন হতে পারে।
  • Confusion Matrix এর সাহায্যে আপনি আপনার মডেলের ভুল প্রেডিকশনগুলি চিহ্নিত করতে পারেন এবং প্রয়োজনে আরো উন্নতি সাধন করতে পারেন।
Content added By
Promotion

Are you sure to start over?

Loading...