Model Evaluation এবং Visualization মডেলের কার্যকারিতা পরিমাপ এবং তার উন্নতির জন্য গুরুত্বপূর্ণ পদক্ষেপ। মডেল প্রশিক্ষণ এবং ইভালুয়েশনের পরে, এর কর্মক্ষমতা বিশ্লেষণ এবং ভিজ্যুয়ালাইজেশন মডেল টিউনিং এবং সিদ্ধান্ত গ্রহণের জন্য সহায়ক হতে পারে।
১. Model Evaluation
Model Evaluation হল সেই প্রক্রিয়া, যার মাধ্যমে আপনি মডেলটির পারফরম্যান্স পরীক্ষা করেন, এবং বুঝতে পারেন এটি আপনার ডেটার জন্য কতটা কার্যকর। সাধারণত Accuracy, Precision, Recall, F1 Score, Confusion Matrix, AUC-ROC Curve ইত্যাদি ব্যবহার করে মডেল ইভালুয়েশন করা হয়।
১.১. Model Evaluation মেট্রিক্স
Accuracy: Accuracy হল সঠিক পূর্বাভাসের সংখ্যা (True Positives + True Negatives) থেকে মোট স্যাম্পলের সংখ্যা (True Positives + True Negatives + False Positives + False Negatives) ভাগ করা। এটি পুরোপুরি সঠিক পূর্বাভাসের হার নির্দেশ করে।
accuracy = (TP + TN) / (TP + TN + FP + FN)Precision: Precision হল সঠিকভাবে পূর্বাভাস করা পজিটিভ আউটপুটের সংখ্যা (True Positives) এবং পূর্বাভাস করা সব পজিটিভ আউটপুটের সংখ্যা (True Positives + False Positives) এর অনুপাত।
precision = TP / (TP + FP)Recall (Sensitivity): Recall, বা Sensitivity হল সঠিকভাবে পূর্বাভাস করা পজিটিভ আউটপুটের সংখ্যা এবং প্রকৃত পজিটিভ আউটপুটের সংখ্যা (True Positives + False Negatives) এর অনুপাত।
recall = TP / (TP + FN)F1 Score: F1-Score হল Precision এবং Recall এর হারমোনিক গড়, যা মডেলের সামগ্রিক কার্যকারিতা পরিমাপ করতে ব্যবহৃত হয়। এটি Precision এবং Recall এর মধ্যে ব্যালান্স বজায় রাখে।
f1_score = 2 * (precision * recall) / (precision + recall)- AUC-ROC Curve: AUC (Area Under the Curve) হল একটি মেট্রিক যা ROC Curve এর অধীনে থাকা এলাকার পরিমাপ করে। এটি মডেলের ক্ষমতা পরিমাপ করে কতটুকু সঠিকভাবে পজিটিভ এবং নেগেটিভ ক্লাস আলাদা করতে পারছে। উচ্চ AUC মানে মডেলটি ভাল পারফর্ম করছে।
১.২. Model Evaluation Code Example
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, roc_auc_score, confusion_matrix
# Predicted values
y_pred = model.predict(x_test)
# Convert probabilities to class labels
y_pred_classes = np.argmax(y_pred, axis=1)
# Accuracy
accuracy = accuracy_score(y_test, y_pred_classes)
print(f"Accuracy: {accuracy}")
# Precision
precision = precision_score(y_test, y_pred_classes, average='weighted')
print(f"Precision: {precision}")
# Recall
recall = recall_score(y_test, y_pred_classes, average='weighted')
print(f"Recall: {recall}")
# F1 Score
f1 = f1_score(y_test, y_pred_classes, average='weighted')
print(f"F1 Score: {f1}")
# AUC-ROC
roc_auc = roc_auc_score(y_test, y_pred)
print(f"AUC-ROC: {roc_auc}")
# Confusion Matrix
cm = confusion_matrix(y_test, y_pred_classes)
print(f"Confusion Matrix:\n{cm}")
২. Model Visualization
মডেল বিশ্লেষণের জন্য Visualization খুবই গুরুত্বপূর্ণ। এটি মডেলের পারফরম্যান্স সহজভাবে বোঝার জন্য সহায়ক।
২.১. Loss and Accuracy Visualization
মডেল ট্রেনিং এবং ভ্যালিডেশন কাটা লস এবং একুরেসি প্লট করার মাধ্যমে, আপনি দেখতে পারেন যে মডেলটি কতটা ভাল শিখছে এবং কিভাবে এটি মডেল ট্রেনিংয়ের সময় উন্নতি করছে।
import matplotlib.pyplot as plt
# Train history
history = model.fit(x_train, y_train, epochs=10, validation_data=(x_val, y_val))
# Accuracy plot
plt.plot(history.history['accuracy'], label='train accuracy')
plt.plot(history.history['val_accuracy'], label='validation accuracy')
plt.xlabel('Epochs')
plt.ylabel('Accuracy')
plt.legend()
plt.title('Model Accuracy')
plt.show()
# Loss plot
plt.plot(history.history['loss'], label='train loss')
plt.plot(history.history['val_loss'], label='validation loss')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()
plt.title('Model Loss')
plt.show()
২.২. ROC Curve Visualization
ROC curve এবং AUC (Area Under Curve) হল classification models এর জন্য অন্যতম গুরুত্বপূর্ণ মেট্রিক্স যা মডেলের পারফরম্যান্স বিশ্লেষণে সহায়ক।
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt
# ROC curve
fpr, tpr, _ = roc_curve(y_test, y_pred[:, 1]) # For binary classification (probabilities)
roc_auc = auc(fpr, tpr)
# Plot ROC curve
plt.figure()
plt.plot(fpr, tpr, color='darkorange', lw=2, label=f'ROC curve (area = {roc_auc:.2f})')
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic')
plt.legend(loc='lower right')
plt.show()
২.৩. Confusion Matrix Visualization
Confusion Matrix এর একটি heatmap প্লট ব্যবহার করে সহজে এর বিশ্লেষণ করা যায়। এটি বুঝতে সাহায্য করবে কোন শ্রেণিতে ভুল পূর্বাভাস হচ্ছে।
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix
# Generate confusion matrix
cm = confusion_matrix(y_test, y_pred_classes)
# Plot heatmap
sns.heatmap(cm, annot=True, fmt="d", cmap="Blues", xticklabels=['Negative', 'Positive'], yticklabels=['Negative', 'Positive'])
plt.xlabel('Predicted')
plt.ylabel('True')
plt.title('Confusion Matrix')
plt.show()
সারাংশ
Model Evaluation এবং Visualization মডেলের পারফরম্যান্স বিশ্লেষণ এবং উন্নতি করার জন্য অত্যন্ত গুরুত্বপূর্ণ। মডেলের কর্মক্ষমতা পরিমাপ করার জন্য Accuracy, Precision, Recall, F1-Score, এবং AUC-ROC এর মতো মেট্রিক্স ব্যবহৃত হয়। এছাড়াও Confusion Matrix, Loss-Accuracy curves, এবং ROC curves এর মাধ্যমে মডেলের পারফরম্যান্স ভিজ্যুয়ালি বিশ্লেষণ করা যায়, যা মডেল উন্নত করার জন্য দিকনির্দেশনা প্রদান করে।
মডেল প্রশিক্ষণের সময় Accuracy এবং Loss মেট্রিক্সগুলোর মূল্যায়ন করা গুরুত্বপূর্ণ, কারণ এগুলি মডেলের পারফরম্যান্স এবং উন্নতি প্রদর্শন করে। মডেল প্রশিক্ষণের পরে, আপনি Accuracy এবং Loss এর গ্রাফ তৈরি করে মডেলের উন্নতি এবং overfitting/underfitting পর্যবেক্ষণ করতে পারেন।
Matplotlib এবং Seaborn হল জনপ্রিয় গ্রাফিং লাইব্রেরি যা দিয়ে আপনি সহজেই Loss এবং Accuracy এর ভিজুয়ালাইজেশন তৈরি করতে পারেন।
১. মডেল Accuracy এবং Loss Plot করার জন্য প্রয়োজনীয় লাইব্রেরি
প্রথমে নিশ্চিত করুন যে আপনার সিস্টেমে Matplotlib এবং Seaborn ইনস্টল করা আছে:
pip install matplotlib seaborn
২. Keras মডেল প্রশিক্ষণের পর Accuracy এবং Loss Visualize করা
ধরা যাক, আপনি একটি মডেল প্রশিক্ষণ করেছেন এবং history অবজেক্টটি পেয়েছেন, যা মডেল প্রশিক্ষণের সময় accuracy এবং loss এর মান ধারণ করে।
import matplotlib.pyplot as plt
import seaborn as sns
# মডেল প্রশিক্ষণের পর history অবজেক্ট
history = model.fit(x_train, y_train, epochs=10, validation_data=(x_test, y_test))
# Accuracy গ্রাফ
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.plot(history.history['accuracy'], label='Training Accuracy')
plt.plot(history.history['val_accuracy'], label='Validation Accuracy')
plt.title('Model Accuracy')
plt.xlabel('Epochs')
plt.ylabel('Accuracy')
plt.legend()
# Loss গ্রাফ
plt.subplot(1, 2, 2)
plt.plot(history.history['loss'], label='Training Loss')
plt.plot(history.history['val_loss'], label='Validation Loss')
plt.title('Model Loss')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()
plt.tight_layout()
plt.show()
৩. গ্রাফের ব্যাখ্যা
- Training Accuracy: মডেলটি প্রশিক্ষণের সময় যে accuracy অর্জন করেছে, তা প্রতি epoch এর জন্য দেখাবে।
- Validation Accuracy: মডেলটি প্রশিক্ষণ করার পর validation ডেটার উপর যে accuracy অর্জন করেছে তা দেখাবে। এটি overfitting এর চিহ্ন দেয় যদি validation accuracy প্রশিক্ষণের accuracy এর চেয়ে কম হয়।
- Training Loss: মডেলটি প্রশিক্ষণ করার সময় যে loss অর্জন করেছে, তা প্রতি epoch এর জন্য দেখাবে।
- Validation Loss: মডেলটি validation ডেটার উপর যে loss অর্জন করেছে, তা দেখাবে।
৪. Seaborn এর মাধ্যমে আরও উন্নত Visualization
Seaborn ব্যবহার করলে আপনি আরও সুন্দর এবং উন্নত ভিজুয়ালাইজেশন তৈরি করতে পারেন:
import seaborn as sns
# Training Accuracy গ্রাফ
plt.figure(figsize=(10, 5))
sns.lineplot(x=range(1, 11), y=history.history['accuracy'], label='Training Accuracy', color='blue')
sns.lineplot(x=range(1, 11), y=history.history['val_accuracy'], label='Validation Accuracy', color='orange')
plt.title('Model Accuracy')
plt.xlabel('Epochs')
plt.ylabel('Accuracy')
plt.legend()
plt.show()
# Training Loss গ্রাফ
plt.figure(figsize=(10, 5))
sns.lineplot(x=range(1, 11), y=history.history['loss'], label='Training Loss', color='blue')
sns.lineplot(x=range(1, 11), y=history.history['val_loss'], label='Validation Loss', color='orange')
plt.title('Model Loss')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()
plt.show()
৫. গ্রাফ থেকে কী বুঝতে পারবেন?
- Overfitting:
- যদি training accuracy বেড়ে যায় কিন্তু validation accuracy কমে যায়, তবে এটি overfitting নির্দেশ করতে পারে। এর মানে হলো মডেলটি প্রশিক্ষণ ডেটা খুব ভালোভাবে শিখে ফেলেছে, কিন্তু নতুন ডেটার (validation) উপর খারাপ পারফর্ম করছে।
- Underfitting:
- যদি training accuracy এবং validation accuracy দুটোই খুব কম থাকে, তবে মডেলটি যথেষ্ট ভালো শিখতে পারেনি এবং এটি underfitting এর একটি লক্ষণ হতে পারে।
- Ideal Scenario:
- একটি আদর্শ পরিস্থিতি হলো training accuracy এবং validation accuracy এর মধ্যে একটি ভালো সামঞ্জস্য থাকা এবং loss গ্রাফের মধ্যে প্রশিক্ষণ এবং validation loss এর মধ্যে ব্যবধান কম থাকা।
সারাংশ
- Accuracy এবং Loss মেট্রিক্সগুলি মডেলের পারফরম্যান্স মূল্যায়ন করার জন্য অত্যন্ত গুরুত্বপূর্ণ।
- Matplotlib এবং Seaborn এর মাধ্যমে আপনি সহজে এই মেট্রিক্সগুলির ভিজুয়ালাইজেশন তৈরি করতে পারেন এবং মডেলের আচরণ বুঝতে পারেন।
- Training accuracy এবং validation accuracy এর মধ্যে পার্থক্য দেখলে আপনি overfitting বা underfitting এর সূচক পেতে পারেন।
Confusion Matrix (বিশ্লেষণ ম্যাট্রিক্স) একটি টুল যা মডেলের পারফরম্যান্স বিশ্লেষণে ব্যবহৃত হয়, বিশেষ করে শ্রেণীবিভাগ সমস্যা (classification problems) সমাধানে। এটি মডেল দ্বারা পূর্বাভাস করা ফলাফল এবং আসল ফলাফলের মধ্যে সম্পর্ক প্রদর্শন করে।
Confusion Matrix সাধারণত একটি স্কয়ার ম্যাট্রিক্সের মতো দেখায়, যেখানে প্রতিটি সেলে দুইটি শ্রেণীর (Actual এবং Predicted) মধ্যে সম্পর্ক প্রদর্শিত হয়। এটি মডেলটির ভুল এবং সঠিক পূর্বাভাস সম্পর্কে তথ্য দেয়।
Confusion Matrix এর মৌলিক উপাদান:
একটি কনফিউশন ম্যাট্রিক্স সাধারণত নিচের এই ৪টি উপাদান দিয়ে গঠিত:
- True Positive (TP): সেগুলি যেগুলি সঠিকভাবে পজিটিভ হিসেবে শ্রেণীবদ্ধ করা হয়েছে।
- True Negative (TN): সেগুলি যেগুলি সঠিকভাবে নেগেটিভ হিসেবে শ্রেণীবদ্ধ করা হয়েছে।
- False Positive (FP): সেগুলি যেগুলি ভুলভাবে পজিটিভ হিসেবে শ্রেণীবদ্ধ করা হয়েছে (এটি Type I error হিসেবে পরিচিত)।
- False Negative (FN): সেগুলি যেগুলি ভুলভাবে নেগেটিভ হিসেবে শ্রেণীবদ্ধ করা হয়েছে (এটি Type II error হিসেবে পরিচিত)।
Confusion Matrix এর আকার:
যতগুলি শ্রেণী থাকে, ততগুলি আউটপুট তৈরি হয়, কিন্তু সাধারণত বাইনারি (দ্বৈত) শ্রেণীবিভাগে কনফিউশন ম্যাট্রিক্সের আকার হবে ২x২:
| Predicted Positive | Predicted Negative | |
|---|---|---|
| Actual Positive | True Positive (TP) | False Negative (FN) |
| Actual Negative | False Positive (FP) | True Negative (TN) |
Confusion Matrix এর বিশ্লেষণ
Confusion Matrix এর মাধ্যমে মডেলের কার্যকারিতা বিশ্লেষণ করার জন্য বিভিন্ন মেট্রিক্স বের করা যায়, যেগুলি মডেলের পারফরম্যান্স মূল্যায়নে সহায়ক:
1. Accuracy:
মডেলটি সঠিকভাবে কতগুলি পূর্বাভাস করেছে তা নির্দেশ করে।
2. Precision:
এটি মডেলের পজিটিভ পূর্বাভাসগুলির মধ্যে কতগুলি সঠিক ছিল তা নির্দেশ করে। উচ্চ precision মানে ভুল পজিটিভ কম।
3. Recall (Sensitivity):
এটি মডেলের পজিটিভ ক্লাস সনাক্তকরণের ক্ষমতা নির্দেশ করে। উচ্চ recall মানে মডেলটি পজিটিভ ক্লাসগুলি ভালোভাবে শনাক্ত করছে।
4. F1-Score:
এটি precision এবং recall এর ভারসাম্যপূর্ণ গড়। F1-Score সাধারণত ব্যবহৃত হয় যখন precision এবং recall এর মধ্যে একটি ব্যালান্স প্রয়োজন হয়।
5. Specificity:
এটি মডেলের ক্ষমতা নির্দেশ করে নেগেটিভ ক্লাস সঠিকভাবে শনাক্ত করতে।
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 এর বিশ্লেষণ
- Heatmap: মডেলটির কনফিউশন ম্যাট্রিক্সের heatmap চিত্র দেখে আপনি TP, TN, FP, FN এর অবস্থান দেখতে পারেন।
- Classification Report: এটি precision, recall, F1-score এবং support (কতটি ইনস্ট্যান্স ক্লাসে রয়েছে) সম্পর্কে বিস্তারিত তথ্য দেয়, যা মডেলের কার্যকারিতা বুঝতে সহায়ক।
নোট:
- F1-Score সাধারণত যেসব ডেটাতে পজিটিভ ক্লাসের সংখ্যা কম, সেগুলোর জন্য খুব গুরুত্বপূর্ণ। এই পরিস্থিতিতে accuracy ভাল না হলেও F1-Score একটি ভালো মূল্যায়ন হতে পারে।
- Confusion Matrix এর সাহায্যে আপনি আপনার মডেলের ভুল প্রেডিকশনগুলি চিহ্নিত করতে পারেন এবং প্রয়োজনে আরো উন্নতি সাধন করতে পারেন।
Precision, Recall, এবং F1-Score হল মেশিন লার্নিং মডেলের পারফরম্যান্স পরিমাপের জন্য ব্যবহৃত গুরুত্বপূর্ণ মেট্রিক্স। এগুলি সাধারণত ক্লাসিফিকেশন মডেলগুলির কার্যকারিতা মূল্যায়ন করতে ব্যবহৃত হয়, বিশেষত যখন ডেটা ইমব্যালেন্স থাকে বা ভুল ধরণের কনফিউশন হতে পারে।
এই মেট্রিক্সগুলির ক্যালকুলেশন করার জন্য আমাদের Confusion Matrix এর চারটি মূল উপাদান প্রয়োজন:
- True Positive (TP): সঠিকভাবে ইতিবাচক শ্রেণী (positive class) চিহ্নিত করা হয়েছে।
- False Positive (FP): ভুলভাবে ইতিবাচক শ্রেণী চিহ্নিত করা হয়েছে।
- True Negative (TN): সঠিকভাবে নেতিবাচক শ্রেণী (negative class) চিহ্নিত করা হয়েছে।
- False Negative (FN): ভুলভাবে নেতিবাচক শ্রেণী চিহ্নিত করা হয়েছে।
১. Precision (প্রিসিশন)
Precision হল সঠিকভাবে পূর্বাভাস করা ইতিবাচক শ্রেণীর (positive class) তুলনায় আসল ইতিবাচক শ্রেণীর (True Positive) সংখ্যা। এটি জানায় যে, মডেল কতটা সঠিকভাবে ইতিবাচক শ্রেণী চিহ্নিত করেছে।
২. Recall (রিকল)
Recall (বা Sensitivity বা True Positive Rate) হল আসল ইতিবাচক শ্রেণীর (True Positive) সংখ্যা, যা সঠিকভাবে পূর্বাভাস করা হয়েছে, সেই সংখ্যার তুলনায়। এটি জানায় যে, মডেলটি আসল ইতিবাচক শ্রেণীর মধ্যে কতটুকু সঠিকভাবে চিহ্নিত করেছে।
৩. F1-Score
F1-Score Precision এবং Recall এর মধ্যে ভারসাম্য বজায় রাখে। এটি Precision এবং Recall এর হারমনিক গড় (harmonic mean) হিসেবে কাজ করে। F1-Score তখন খুবই গুরুত্বপূর্ণ যখন আপনার ক্লাসের মধ্যে ইমব্যালেন্স (imbalance) থাকে, অর্থাৎ একটি শ্রেণী অন্যটির তুলনায় অনেক বেশি।
Precision, Recall, এবং F1-Score এর ক্যালকুলেশন উদাহরণ
ধরা যাক, আমাদের কাছে একটি Confusion Matrix এর ফলাফল:
এখন, আসুন আমরা Precision, Recall, এবং F1-Score ক্যালকুলেট করি:
১. Precision:
২. Recall:
৩. F1-Score:
Python কোডে Precision, Recall, এবং F1-Score ক্যালকুলেশন
আপনি scikit-learn লাইব্রেরি ব্যবহার করে এই মেট্রিক্সগুলির ক্যালকুলেশন খুব সহজে করতে পারেন।
from sklearn.metrics import precision_score, recall_score, f1_score
# বাস্তব ফলাফল (True Labels) এবং পূর্বাভাস (Predicted Labels)
y_true = [1, 0, 1, 1, 0, 1, 0, 0, 1, 0]
y_pred = [1, 0, 1, 0, 0, 1, 0, 1, 1, 0]
# Precision, Recall, এবং F1-Score ক্যালকুলেশন
precision = precision_score(y_true, y_pred)
recall = recall_score(y_true, y_pred)
f1 = f1_score(y_true, y_pred)
print(f"Precision: {precision}")
print(f"Recall: {recall}")
print(f"F1-Score: {f1}")
এই কোডটি y_true এবং y_pred থেকে Precision, Recall, এবং F1-Score এর মান গণনা করবে।
সারাংশ
- Precision হল সঠিকভাবে পূর্বাভাস করা ইতিবাচক শ্রেণীর সংখ্যা, এবং এটি জানায় মডেল কতটা সঠিকভাবে ইতিবাচক শ্রেণী চিহ্নিত করেছে।
- Recall হল আসল ইতিবাচক শ্রেণীর সংখ্যা, যা সঠিকভাবে পূর্বাভাস করা হয়েছে, এবং এটি জানায় মডেল কতটা সঠিকভাবে ইতিবাচক শ্রেণী ধরতে সক্ষম হয়েছে।
- F1-Score হল Precision এবং Recall এর ভারসাম্য, এবং এটি ইমব্যালেন্সড ডেটাসেটে কার্যকরী মেট্রিক্স হয়ে থাকে।
এগুলি আপনাকে মডেলের কার্যকারিতা সঠিকভাবে মূল্যায়ন করতে সহায়ক হবে, বিশেষত যখন ক্লাস ইমব্যালেন্স থাকে বা মডেলটি গুরুত্বপূর্ণ ভুল শনাক্ত করতে পারছে না।
ROC-AUC Curve এবং Model Performance Metrics হল মেশিন লার্নিং মডেলের কার্যকারিতা মূল্যায়ন করার জন্য ব্যবহৃত গুরুত্বপূর্ণ টুল। যখন আপনি একটি শ্রেণীকরণ মডেল তৈরি করেন, তখন এটি খুবই গুরুত্বপূর্ণ যে আপনি মডেলের পারফরম্যান্স পর্যালোচনা করতে পারেন। এটি মডেলের সঠিকতা এবং দক্ষতা নিশ্চিত করতে সহায়ক।
১. ROC Curve (Receiver Operating Characteristic Curve)
ROC Curve একটি গ্রাফিকাল প্লট যা মডেলের পারফরম্যান্স পরিমাপ করে, বিশেষ করে binary classification (যেমন, দুইটি ক্লাসে ভাগ করা) সমস্যা সমাধানের ক্ষেত্রে। এটি একটি False Positive Rate (FPR) এবং True Positive Rate (TPR) এর মধ্যে সম্পর্ক প্রদর্শন করে।
True Positive Rate (TPR) বা Sensitivity বা Recall: এটি সঠিকভাবে শনাক্ত করা পজিটিভ ক্লাসের শতাংশ।
False Positive Rate (FPR): এটি সঠিকভাবে নেগেটিভ ক্লাসের মধ্যে ভুলভাবে পজিটিভ ক্লাস শনাক্ত করার হার।
ROC Curve এর কাঠামো:
- X-axis: False Positive Rate (FPR)
- Y-axis: True Positive Rate (TPR)
- Diagonal Line: এটি র্যান্ডম পারফরম্যান্সকে নির্দেশ করে, অর্থাৎ মডেলটি যদি এলোমেলোভাবে শ্রেণীভুক্ত করে।
একটি ভাল মডেলের ROC কিউরভে প্রায় উঁচু Y-Axis এবং শূন্য X-Axis থাকতে হবে। এর মানে, মডেলটি সঠিকভাবে পজিটিভ ক্লাস চিহ্নিত করতে সক্ষম এবং কম ভুল পজিটিভ করতে সক্ষম।
ROC Curve প্লট করা:
from sklearn.metrics import roc_curve
import matplotlib.pyplot as plt
# প্রেডিক্টেড প্রোবাবিলিটি এবং রিয়েল লেবেল
fpr, tpr, thresholds = roc_curve(y_true, y_pred_proba)
# ROC curve প্লট করা
plt.figure()
plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve')
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()
২. AUC (Area Under the Curve)
AUC (Area Under the Curve) হল ROC কিউরভের নিচে থাকা ক্ষেত্রের পরিমাণ। এটি মডেলের দক্ষতা পরিমাপ করার একটি সিঙ্গেল মেট্রিক্স।
- AUC = 0.5: যদি AUC 0.5 হয়, তবে এটি র্যান্ডম কেটাগরি মডেলকে নির্দেশ করে, যেখানে মডেল সঠিকভাবে কোনও সিদ্ধান্ত নিতে পারে না।
- AUC = 1: এটি একটি আদর্শ মডেলকে নির্দেশ করে, যেখানে মডেল সম্পূর্ণরূপে সঠিক সিদ্ধান্ত নিচ্ছে।
- AUC > 0.8: এটি ভাল পারফরম্যান্স নির্দেশ করে।
AUC মাপার কোড উদাহরণ:
from sklearn.metrics import roc_auc_score
# AUC score
auc_score = roc_auc_score(y_true, y_pred_proba)
print(f'AUC: {auc_score}')
৩. Model Performance Metrics
মডেল পারফরম্যান্স পরিমাপ করার জন্য আরো কিছু গুরুত্বপূর্ণ মেট্রিক্স রয়েছে যা মডেলের সফলতা বা ব্যর্থতা বুঝতে সহায়ক। এগুলি মূলত classification মডেলগুলির জন্য ব্যবহৃত হয়:
৩.1. Accuracy (সঠিকতা)
Accuracy মেট্রিকটি সঠিকভাবে শ্রেণীভুক্ত করা কেসের শতাংশ পরিমাপ করে।
এটি একটি খুব সাধারণ মেট্রিক, তবে এটি ইমব্যালেন্সড ডেটা সেটের জন্য খুব কার্যকরী নয়।
৩.2. Precision (প্রিসিশন)
Precision হল পজিটিভ কেসগুলোর মধ্যে সঠিকভাবে চিহ্নিত পজিটিভ কেসের শতাংশ। এটি ভুল পজিটিভ হ্রাসে সহায়ক।
৩.3. Recall (রিকল) / Sensitivity
Recall বা Sensitivity হল সঠিকভাবে শনাক্ত করা পজিটিভ কেসের শতাংশ। এটি মডেলের সক্ষমতা পরিমাপ করে পজিটিভ কেস শনাক্ত করতে।
৩.4. F1-Score
F1-Score হলো Precision এবং Recall এর একটি সমন্বিত মেট্রিক্স। এটি সাধারণত তখন ব্যবহৃত হয় যখন আপনি ইমব্যালেন্সড ডেটাসেটের সাথে কাজ করছেন।
৩.5. Confusion Matrix (কনফিউশন ম্যাট্রিক্স)
Confusion Matrix হল একটি টেবিল যা শ্রেণীকরণের ফলাফলকে তুলে ধরে এবং আপনাকে মডেলের সঠিকতা, ভুল, পজিটিভ এবং নেগেটিভ কেসগুলো চিহ্নিত করতে সহায়ক।
from sklearn.metrics import confusion_matrix
# কনফিউশন ম্যাট্রিক্স
cm = confusion_matrix(y_true, y_pred)
print(cm)
৩.6. Log Loss (লগ লস)
Log Loss হল একটি মেট্রিক যা মডেলের ক্লাসিফিকেশন ভুলের পরিমাণ পরিমাপ করে। এটি সাধারণত classification problems এর জন্য ব্যবহৃত হয় যেখানে প্রোবাবিলিটি ব্যবহার করা হয়।
সারাংশ
ROC-AUC Curve এবং Model Performance Metrics (যেমন Accuracy, Precision, Recall, F1-Score) হল মডেলের কার্যকারিতা পরিমাপ করার গুরুত্বপূর্ণ টুল। ROC Curve মডেলের পারফরম্যান্সের একটি ভিজ্যুয়াল রিপ্রেজেন্টেশন প্রদান করে, যেখানে AUC হল সেই কিউরভের নিচে থাকা এলাকা, যা মডেলের সাধারণ দক্ষতা প্রদর্শন করে। অন্যান্য পারফরম্যান্স মেট্রিক্স যেমন Precision, Recall, এবং F1-Score ব্যবহার করে মডেলের পারফরম্যান্স আরও বিস্তারিতভাবে বিশ্লেষণ করা যায়।
Read more