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 করুন।

ইন্টারভিউ প্রশ্ন

  1. Precision ও Recall-এর পার্থক্য।
  2. F1-Score কেন harmonic mean?
  3. ROC ও AUC কী?
  4. Imbalanced data-তে কোন metric?
  5. Overfit ও underfit কীভাবে চিনবেন?

সারসংক্ষেপ

✨ এই অধ্যায়ে যা শিখলাম
  • Confusion matrix থেকে সব metric আসে।
  • সমস্যা অনুযায়ী Precision বা Recall।
  • Multi-class — macro/micro।
  • পরের অধ্যায়ে — hyperparameter tuning।