Chapter 16
মডেল মূল্যায়ন
Model Evaluation
🎬 Accuracy যথেষ্ট নয়
১০০টি email-এ ৯৫টা ham, ৫টা spam। একটি মডেল সব email-কে "ham" বললেই accuracy 95%! কিন্তু মডেলটি আসলে কিচ্ছু শেখেনি। এজন্যই আমরা শুধু accuracy দেখি না — Precision, Recall, F1, ROC সবই দেখি।
Confusion Matrix
Pred Positive
Pred Negative
Actual Positive
TP (True Positive)
FN (False Negative)
Actual Negative
FP (False Positive)
TN (True Negative)
মূল Metrics
Accuracy
(TP + TN) / (TP + TN + FP + FN)
Balanced dataset-এ ঠিক আছে। Imbalanced-এ misleading।
Precision — predict করলে কতটা ঠিক
TP / (TP + FP)
উদাহরণ: spam filter — যা spam বলেছি, তার কতটা সত্যিই spam।
Recall (Sensitivity) — সব positive ধরা পড়ল কি
TP / (TP + FN)
উদাহরণ: ক্যান্সার detection — সব রোগী কি ধরা পড়েছে।
F1-Score — Precision ও Recall-এর harmonic mean
2 × (P × R) / (P + R)
🔑 কখন কোনটা?
- Spam filter: Precision বেশি দরকার — false alarm কম।
- রোগ নির্ণয়: Recall বেশি দরকার — কেউ যেন না missed হয়।
- Balanced trade-off: F1-Score।
sklearn-এ এক লাইনে
from sklearn.metrics import (
accuracy_score, precision_score, recall_score, f1_score,
confusion_matrix, classification_report, roc_auc_score
)
print(classification_report(y_true, y_pred))
print(confusion_matrix(y_true, y_pred))
print("AUC:", roc_auc_score(y_true, y_prob))ROC Curve ও AUC
Threshold পরিবর্তন করে TPR (Recall) vs FPR-এর graph। AUC = curve-এর নিচের area। 1.0 = perfect, 0.5 = random।
import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve
fpr, tpr, _ = roc_curve(y_true, y_prob)
plt.plot(fpr, tpr); plt.plot([0,1],[0,1], "--")
plt.xlabel("FPR"); plt.ylabel("TPR"); plt.title("ROC"); plt.show()Multi-class — Macro vs Micro
Macro: প্রতি class-এর metric আলাদা গণনা করে গড়। Class imbalance থাকলেও সমান weight।
Micro: সব class-এর TP/FP/FN একসাথে যোগ করে metric। Frequent class-এর প্রভাব বেশি।
Regression-এর Metrics
- MAE: গড় absolute error।
- MSE / RMSE: বড় ভুল বেশি penalize।
- R²: মডেল কতটুকু variance explain করে।
Overfit vs Underfit
লক্ষণ
Train
Val
Underfit
নিম্ন accuracy
নিম্ন accuracy
Good fit
উচ্চ
উচ্চ
Overfit
খুব উচ্চ
অনেক কম
সাধারণ ভুল ধারণা
⚠️ এড়িয়ে চলবেন
- শুধু accuracy দেখা — imbalanced data-তে বিভ্রান্তিকর।
- Validation set-এ overfit হলে বুঝতে না পারা।
- Threshold 0.5 ধরে বসে থাকা — সমস্যা অনুযায়ী tune করতে হয়।
অনুশীলন
১. Iris dataset-এ Logistic Regression train করে classification_report দেখুন।
২. একটি imbalanced dataset বানিয়ে accuracy ও F1 তুলনা করুন।
৩. ROC curve plot করুন।
মিনি প্রজেক্ট
🚀 আজকের চ্যালেঞ্জ
Credit card fraud detection dataset-এ একটি classifier train করুন। শুধু accuracy দেখাবেন না — Precision, Recall, F1, ROC-AUC সব report করুন।
ইন্টারভিউ প্রশ্ন
- Precision ও Recall-এর পার্থক্য।
- F1-Score কেন harmonic mean?
- ROC ও AUC কী?
- Imbalanced data-তে কোন metric?
- Overfit ও underfit কীভাবে চিনবেন?
সারসংক্ষেপ
✨ এই অধ্যায়ে যা শিখলাম
- Confusion matrix থেকে সব metric আসে।
- সমস্যা অনুযায়ী Precision বা Recall।
- Multi-class — macro/micro।
- পরের অধ্যায়ে — hyperparameter tuning।