Precision, Recall, F1-Score এর ক্যালকুলেশন

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

445

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) সংখ্যা। এটি জানায় যে, মডেল কতটা সঠিকভাবে ইতিবাচক শ্রেণী চিহ্নিত করেছে।

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

২. Recall (রিকল)

Recall (বা Sensitivity বা True Positive Rate) হল আসল ইতিবাচক শ্রেণীর (True Positive) সংখ্যা, যা সঠিকভাবে পূর্বাভাস করা হয়েছে, সেই সংখ্যার তুলনায়। এটি জানায় যে, মডেলটি আসল ইতিবাচক শ্রেণীর মধ্যে কতটুকু সঠিকভাবে চিহ্নিত করেছে।

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

৩. F1-Score

F1-Score Precision এবং Recall এর মধ্যে ভারসাম্য বজায় রাখে। এটি Precision এবং Recall এর হারমনিক গড় (harmonic mean) হিসেবে কাজ করে। F1-Score তখন খুবই গুরুত্বপূর্ণ যখন আপনার ক্লাসের মধ্যে ইমব্যালেন্স (imbalance) থাকে, অর্থাৎ একটি শ্রেণী অন্যটির তুলনায় অনেক বেশি।

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

Precision, Recall, এবং F1-Score এর ক্যালকুলেশন উদাহরণ

ধরা যাক, আমাদের কাছে একটি Confusion Matrix এর ফলাফল:

Predicted PositivePredicted NegativeActual PositiveTP=40FN=10Actual NegativeFP=5TN=45\begin{array}{|c|c|c|} \hline & \text{Predicted Positive} & \text{Predicted Negative} \\ \hline \text{Actual Positive} & TP = 40 & FN = 10 \\ \text{Actual Negative} & FP = 5 & TN = 45 \\ \hline \end{array}

এখন, আসুন আমরা Precision, Recall, এবং F1-Score ক্যালকুলেট করি:

১. Precision:

Precision=TPTP+FP=4040+5=4045=0.8889\text{Precision} = \frac{TP}{TP + FP} = \frac{40}{40 + 5} = \frac{40}{45} = 0.8889

২. Recall:

Recall=TPTP+FN=4040+10=4050=0.8\text{Recall} = \frac{TP}{TP + FN} = \frac{40}{40 + 10} = \frac{40}{50} = 0.8

৩. F1-Score:

F1-Score=2×Precision×RecallPrecision+Recall=2×0.8889×0.80.8889+0.8=2×0.71111.6889=0.841\text{F1-Score} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} = 2 \times \frac{0.8889 \times 0.8}{0.8889 + 0.8} = 2 \times \frac{0.7111}{1.6889} = 0.841

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 এর ভারসাম্য, এবং এটি ইমব্যালেন্সড ডেটাসেটে কার্যকরী মেট্রিক্স হয়ে থাকে।

এগুলি আপনাকে মডেলের কার্যকারিতা সঠিকভাবে মূল্যায়ন করতে সহায়ক হবে, বিশেষত যখন ক্লাস ইমব্যালেন্স থাকে বা মডেলটি গুরুত্বপূর্ণ ভুল শনাক্ত করতে পারছে না।

Content added By
Promotion

Are you sure to start over?

Loading...