মেশিন লার্নিং মডেল তৈরি করা যতটা গুরুত্বপূর্ণ, মডেলটি কতটা ভালোভাবে কাজ করছে তা পরিমাপ করা ততটাই জরুরি। শুধু নির্ভুলতা (accuracy) দেখে একটি মডেলের কার্যকারিতা পুরোপুরি বোঝা যায় না, বিশেষ করে যখন ডেটাসেটে শ্রেণীগুলো (classes) ভারসাম্যহীন থাকে। এখানেই কনফিউশন ম্যাট্রিক্স (Confusion Matrix) এর গুরুত্ব অপরিসীম। এটি একটি বিস্তারিত চিত্র তুলে ধরে যে, আপনার ক্লাসিফিকেশন মডেলটি কোন শ্রেণীকে কতটা সঠিকভাবে বা ভুলভাবে প্রেডিক্ট করছে।
এই ব্লগ পোস্টে আমরা কনফিউশন ম্যাট্রিক্স কী, এর উপাদানগুলো (TP, FP, TN, FN) কী বোঝায়, এবং কিভাবে এটি ব্যবহার করে নির্ভুলতা (Accuracy), প্রিসিশন (Precision), রিকল (Recall) এবং F1-স্কোর (F1-Score) এর মতো গুরুত্বপূর্ণ মেট্রিকগুলো গণনা করা যায়, তা বিস্তারিতভাবে আলোচনা করব।
কনফিউশন ম্যাট্রিক্স (Confusion Matrix) কী?
কনফিউশন ম্যাট্রিক্স হলো একটি সারণী (table) যা একটি ক্লাসিফিকেশন মডেলের পারফরম্যান্স বর্ণনা করতে ব্যবহৃত হয়। এটি আপনার মডেলের তৈরি করা পূর্বাভাসের (predictions) তুলনা করে ডেটার প্রকৃত লেবেলগুলোর (true labels) সাথে। এটি আপনাকে দেখায় যে, আপনার মডেলটি প্রতিটি শ্রেণীর উদাহরণকে কতটা সঠিকভাবে শ্রেণীবদ্ধ করেছে।
একটি কনফিউশন ম্যাট্রিক্স দেখতে সাধারণত গ্রিডের মতো হয় যখন দুটি শ্রেণী থাকে (যেমন, পজিটিভ/নেগেটিভ)। এখানে প্রতিটি সেল একটি নির্দিষ্ট ধরণের পূর্বাভাসকে নির্দেশ করে:
TP, FP, TN, FN এর বিস্তারিত ব্যাখ্যা:
- True Positive (TP): এটি সেইসব উদাহরণকে বোঝায় যখন মডেল সঠিকভাবে পজিটিভ শ্রেণীকে পজিটিভ বলে পূর্বাভাস দিয়েছে। উদাহরণ: একজন রোগীর ক্যান্সার আছে এবং মডেল সঠিকভাবে ভবিষ্যদ্বাণী করেছে যে তার ক্যান্সার আছে।
- False Positive (FP): এটি সেইসব উদাহরণকে বোঝায় যখন মডেল ভুলভাবে নেগেটিভ শ্রেণীকে পজিটিভ বলে পূর্বাভাস দিয়েছে। একে Type I Error ও বলা হয়। উদাহরণ: একজন রোগীর ক্যান্সার নেই কিন্তু মডেল ভুলভাবে ভবিষ্যদ্বাণী করেছে যে তার ক্যান্সার আছে।
- True Negative (TN): এটি সেইসব উদাহরণকে বোঝায় যখন মডেল সঠিকভাবে নেগেটিভ শ্রেণীকে নেগেটিভ বলে পূর্বাভাস দিয়েছে। উদাহরণ: একজন রোগীর ক্যান্সার নেই এবং মডেল সঠিকভাবে ভবিষ্যদ্বাণী করেছে যে তার ক্যান্সার নেই।
- False Negative (FN): এটি সেইসব উদাহরণকে বোঝায় যখন মডেল ভুলভাবে পজিটিভ শ্রেণীকে নেগেটিভ বলে পূর্বাভাস দিয়েছে। একে Type II Error ও বলা হয়। উদাহরণ: একজন রোগীর ক্যান্সার আছে কিন্তু মডেল ভুলভাবে ভবিষ্যদ্বাণী করেছে যে তার ক্যান্সার নেই।
কনফিউশন ম্যাট্রিক্স (Confusion Matrix) : বাস্তবসম্মত উদাহরণ
চলুন, একটি বাস্তবসম্মত উদাহরণ দিয়ে কনফিউশন ম্যাট্রিক্সের ধারণাটি পরিষ্কার করা যাক। ধরুন, আমরা একটি মেশিন লার্নিং (ক্যান্সার নির্ণয়) মডেল তৈরি করেছি যেটি কোনো ব্যক্তির মেডিকেল ডেটা বিশ্লেষণ করে তার ক্যান্সার আছে কি না তা নির্ণয় করবে।
- পজিটিভ ক্লাস (Positive Class): ব্যক্তির ক্যান্সার আছে।
- নেগেটিভ ক্লাস (Negative Class): ব্যক্তির ক্যান্সার নেই।
আমরা ৫০০ জন রোগীর উপর আমাদের মডেলটি পরীক্ষা করেছি। তাদের মধ্যে কিছু রোগীর সত্যিই ক্যান্সার ছিল এবং কিছু রোগীর ছিল না। মডেলের পূর্বাভাস এবং প্রকৃত ফলাফল নিচে দেওয়া হলো:
মডেলের পূর্বাভাস: ক্যান্সার আছে (Predicted Positive) | মডেলের পূর্বাভাস: ক্যান্সার নেই (Predicted Negative) | |
প্রকৃত অবস্থা: ক্যান্সার আছে (Actual Positive) | TP = 45 (45 জন রোগীর ক্যান্সার ছিল এবং মডেল সঠিকভাবে তাদের ক্যান্সার আছে বলে শনাক্ত করেছে) | FN = 5 (5 জন রোগীর ক্যান্সার ছিল কিন্তু মডেল ভুলভাবে তাদের ক্যান্সার নেই বলে শনাক্ত করেছে) |
প্রকৃত অবস্থা: ক্যান্সার নেই (Actual Negative) | FP = 10 (10 জন রোগীর ক্যান্সার ছিল না কিন্তু মডেল ভুলভাবে তাদের ক্যান্সার আছে বলে শনাক্ত করেছে) | TN = 440 (440 জন রোগীর ক্যান্সার ছিল না এবং মডেল সঠিকভাবে তাদের ক্যান্সার নেই বলে শনাক্ত করেছে) |
এই ম্যাট্রিক্স থেকে আমরা পাই:
- মোট রোগী = জন।
- প্রকৃতপক্ষে ক্যান্সার আছে এমন রোগী = জন।
- প্রকৃতপক্ষে ক্যান্সার নেই এমন রোগী = জন।
অ্যাকুরেসি (Accuracy), প্রিসিশন (Precision) এবং রিকল (Recall) গণনা
এই TP, FP, TN, FN মানগুলো ব্যবহার করে আমরা মডেলের পারফরম্যান্স পরিমাপের জন্য বিভিন্ন মেট্রিক গণনা করতে পারি:
১. অ্যাকুরেসি (Accuracy):
অ্যাকুরেসি হলো মডেলের সামগ্রিক সঠিক পূর্বাভাসের অনুপাত। এটি বোঝায়, আপনার মডেল কত শতাংশ ডেটা পয়েন্টকে সঠিকভাবে শ্রেণীবদ্ধ করেছে।
সূত্র:
আমাদের উদাহরণে গণনা:
1 |
Accuracy = (45+440)/(45+5+10+440) = 485/500 = 0.97 বা 97% |
আমাদের মডেলের অ্যাকুরেসি ৯৭%। এটি দেখতে খুবই ভালো মনে হচ্ছে, তাই না? কিন্তু, অ্যাকুরেসি একা সবসময় একটি মডেলের সম্পূর্ণ চিত্র দেয় না, বিশেষ করে যখন ক্লাসগুলো ভারসাম্যহীন হয় (যেমন, এখানে ক্যান্সার পজিটিভ রোগীর সংখ্যা নেগেটিভের চেয়ে অনেক কম)।
২. প্রিসিশন (Precision):
প্রিসিশন মেট্রিকটি False Positive (FP) কমানোর উপর গুরুত্ব দেয়। এটি সেই সব ক্ষেত্রে ব্যবহার করা হয় যখন আপনি নিশ্চিত হতে চান যে আপনার মডেল যখন “পজিটিভ” বলে, তখন তা সত্যিই পজিটিভ। এর মানে হলো, মডেল ভুল করে নেগেটিভ উদাহরণকে পজিটিভ হিসেবে চিহ্নিত করার প্রবণতা (ফলস পজিটিভ) কতটা কম। ফলস পজিটিভ (FP) কমানোর ক্ষেত্রে এটি গুরুত্বপূর্ণ।
সূত্র:
1 |
Precision = 45/(45+10) = 45/55 = 0.818 বা 81.8% |
এখানে প্রিসিশন মানে হলো, যখন মডেল ভবিষ্যদ্বাণী করেছে যে একজন ব্যক্তির ক্যান্সার আছে, তখন ক্ষেত্রে সত্যিই তার ক্যান্সার ছিল। বাকি ক্ষেত্রে মডেল ভুল করে বলে দিয়েছে ক্যান্সার আছে, যদিও তাদের ছিল না (False Positives)।
কখন প্রিসিশন গুরুত্বপূর্ণ?
- স্প্যাম ইমেল সনাক্তকরণ: আপনি চান না আপনার কোনো গুরুত্বপূর্ণ ইমেলকে ভুল করে স্প্যাম (False Positive) হিসেবে চিহ্নিত করা হোক।
- পণ্য সুপারিশ (Product Recommendation): আপনি যদি আপনার গ্রাহকদের এমন পণ্য সুপারিশ করেন যা তারা কিনতে আগ্রহী নয় (False Positive), তাহলে তা তাদের বিরক্তির কারণ হতে পারে।
৩. রিকল (Recall):
রিকল মেট্রিকটি False Negative (FN) কমানোর উপর গুরুত্ব দেয়। এটি সেই সব ক্ষেত্রে ব্যবহার করা হয় যখন আপনি নিশ্চিত হতে চান যে আপনার মডেল সমস্ত প্রকৃত পজিটিভ উদাহরণগুলোকে সঠিকভাবে শনাক্ত করতে পেরেছে, কোনোটিকে বাদ দেয়নি।
সূত্র:
আমাদের উদাহরণে গণনা:
1 |
Recall = 45 / (45+5) = 45/50 = 0.90 বা 90% |
এখানে রিকল মানে হলো, ক্যান্সার আক্রান্ত সমস্ত রোগীদের মধ্যে রোগীকে মডেল সঠিকভাবে শনাক্ত করতে পেরেছে। বাকি ক্যান্সার আক্রান্ত রোগীকে মডেল ভুল করে “ক্যান্সার নেই” বলে ভবিষ্যদ্বাণী করেছে (False Negatives)।
কখন রিকল গুরুত্বপূর্ণ?
- রোগ নির্ণয় (Disease Diagnosis): ক্যান্সারের মতো গুরুতর রোগ নির্ণয়ের ক্ষেত্রে, আপনি নিশ্চিতভাবে চাইবেন যে কোনো ক্যান্সার আক্রান্ত রোগীকে যেন বাদ না দেওয়া হয় (False Negative)। এখানে রিকল খুব উচ্চ হওয়া উচিত।
- জালিয়াতি সনাক্তকরণ (Fraud Detection): আপনি প্রতিটি জালিয়াতির ঘটনা শনাক্ত করতে চাইবেন, এমনকি যদি এর ফলে কিছু বৈধ লেনদেনকেও (False Positive) সন্দেহ করা হয়।
- নিরাপত্তা ব্যবস্থা (Security Systems): অনুপ্রবেশকারী শনাক্তকরণ সিস্টেমে কোনো প্রকৃত অনুপ্রবেশকারীকে যেন বাদ না দেওয়া হয় (False Negative)।
F1-স্কোর (F1-Score) এবং কেন এটি গুরুত্বপূর্ণ
F1-স্কোর হলো প্রিসিশন এবং রিকল এর একটি হারমোনিক গড়। এটি প্রিসিশন এবং রিকল উভয়কেই সমান গুরুত্ব দেয় এবং একটি একক সংখ্যায় মডেলের কার্যকারিতার একটি ভারসাম্যপূর্ণ চিত্র প্রদান করে। যখন প্রিসিশন এবং রিকল উভয়ই উচ্চ হয়, তখনই F1-স্কোর উচ্চ হয়। এটি ভারসাম্যহীন ক্লাসের ডেটাসেটে মডেল মূল্যায়নের জন্য একটি চমৎকার মেট্রিক।
যদি আপনার মডেলের প্রিসিশন এবং রিকল উভয়ই ভালো হয়, তাহলে F1-স্কোর উচ্চ হবে। যদি একটি খুব ভালো এবং অন্যটি খারাপ হয়, তাহলে F1-স্কোর কম হবে।
সূত্র:
আমাদের উদাহরণে গণনা:
1 2 3 4 |
F1-Score = 2 × ((0.818×0.90) / 0.818+0.90)) = 2 × (0.7362 / 1.718) = 2 × 0.4285 = 0.857 বা 85.7% |
আমাদের মডেলের F1-স্কোর প্রায় । এই মানটি প্রিসিশন এবং রিকলের মধ্যে একটি ভালো ভারসাম্য নির্দেশ করে।
প্রিসিশন এবং রিকলের ভারসাম্য (Balancing Precision and Recall)
প্রিসিশন এবং রিকল প্রায়শই একটি ট্রেড-অফ (trade-off) উপস্থাপন করে। এর মানে হলো, আপনি যখন একটি মেট্রিক বাড়ানোর চেষ্টা করেন, তখন অন্যটি কমে যাওয়ার সম্ভাবনা থাকে।
- মডেলকে কঠোর করলে (Strict Model): যদি আপনার মডেল পজিটিভ ভবিষ্যদ্বাণী করার জন্য খুব কঠোর হয় (অর্থাৎ, কেবল যখন এটি অত্যন্ত নিশ্চিত হয়), তখন এটি কম ফলস পজিটিভ তৈরি করবে, যার ফলে প্রিসিশন বাড়বে। কিন্তু এর ফলে এটি অনেক প্রকৃত পজিটিভ উদাহরণকে বাদ দিতে পারে (ফলস নেগেটিভ বাড়িয়ে), যার ফলে রিকল কমবে।
- মডেলকে শিথিল করলে (Lenient Model): যদি আপনার মডেল পজিটিভ ভবিষ্যদ্বাণী করার জন্য খুব শিথিল হয় (অর্থাৎ, সামান্য নিশ্চিত হলেও), তখন এটি অনেক প্রকৃত পজিটিভ উদাহরণকে ধরতে পারবে, যার ফলে রিকল বাড়বে। কিন্তু এর ফলে এটি অনেক নেগেটিভ উদাহরণকেও ভুল করে পজিটিভ হিসেবে চিহ্নিত করতে পারে (ফলস পজিটিভ বাড়িয়ে), যার ফলে প্রিসিশন কমবে।
আপনার নির্দিষ্ট ব্যবহারের ক্ষেত্রে (use case) কোন ধরণের ভুল (ফলস পজিটিভ নাকি ফলস নেগেটিভ) বেশি ব্যয়বহুল বা বিপজ্জনক, তার উপর ভিত্তি করে আপনাকে প্রিসিশন এবং রিকলের মধ্যে সঠিক ভারসাম্য খুঁজে বের করতে হবে। F1-স্কোর এই ভারসাম্যকে একটি একক সংখ্যায় সংক্ষেপিত করতে সাহায্য করে।
পাইথন ব্যবহার করে কনফিউশন ম্যাট্রিক্স (Confusion Matrix) এবং মেট্রিক গণনা
চলুন একটি উদাহরণ দেখা যাক। আমরা একটি ক্লাসিফিকেশন মডেলের ফলাফল নিয়ে কাজ করব এবং দেখব কিভাবে কনফিউশন ম্যাট্রিক্স এবং অন্যান্য মেট্রিক গণনা করা হয়।
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
import numpy as np from sklearn.metrics import confusion_matrix, accuracy_score, precision_score, recall_score, f1_score # ১. প্রকৃত লেবেল এবং মডেলের পূর্বাভাস (আমাদের ক্যান্সার নির্ণয় উদাহরণ থেকে) # 0 = ক্যান্সার নেই (নেগেটিভ) # 1 = ক্যান্সার আছে (পজিটিভ) # y_true: প্রকৃত অবস্থা # 50 জন রোগীর ক্যান্সার ছিল (1), 450 জন রোগীর ছিল না (0) y_true = [1]*50 + [0]*450 # y_pred: মডেলের পূর্বাভাস # TP=45 (ক্যান্সার আছে, প্রেডিক্টেড ক্যান্সার আছে) # FN=5 (ক্যান্সার আছে, প্রেডিক্টেড ক্যান্সার নেই) # FP=10 (ক্যান্সার নেই, প্রেডিক্টেড ক্যান্সার আছে) # TN=440 (ক্যান্সার নেই, প্রেডিক্টেড ক্যান্সার নেই) y_pred = [1]*45 + [0]*5 + [1]*10 + [0]*440 # নিশ্চিত করুন যে ডেটা numpy arrays বা lists হিসেবে আছে y_true = np.array(y_true) y_pred = np.array(y_pred) # ২. কনফিউশন ম্যাট্রিক্স গণনা করা conf_matrix = confusion_matrix(y_true, y_pred) print("কনফিউশন ম্যাট্রিক্স:") print(conf_matrix) # কনফিউশন ম্যাট্রিক্স থেকে TP, FP, TN, FN বের করা (সাধারণত 2x2 ম্যাট্রিক্সের জন্য) # [[TN, FP], # [FN, TP]] TN = conf_matrix[0, 0] FP = conf_matrix[0, 1] FN = conf_matrix[1, 0] TP = conf_matrix[1, 1] print(f"\nTrue Positives (TP): {TP}") print(f"False Positives (FP): {FP}") print(f"True Negatives (TN): {TN}") print(f"False Negatives (FN): {FN}") # ৩. মেট্রিকগুলো গণনা করা accuracy = accuracy_score(y_true, y_pred) precision = precision_score(y_true, y_pred) recall = recall_score(y_true, y_pred) f1 = f1_score(y_true, y_pred) print(f"\nঅ্যাকুরেসি (Accuracy): {accuracy:.4f}") print(f"প্রিসিশন (Precision): {precision:.4f}") print(f"রিকল (Recall): {recall:.4f}") print(f"F1-স্কোর (F1-Score): {f1:.4f}") # ম্যানুয়ালি গণনা করে দেখা (বোঝার সুবিধার জন্য) print("\nম্যানুয়াল গণনা:") manual_accuracy = (TP + TN) / (TP + TN + FP + FN) manual_precision = TP / (TP + FP) manual_recall = TP / (TP + FN) manual_f1 = 2 * (manual_precision * manual_recall) / (manual_precision + manual_recall) print(f"ম্যানুয়াল অ্যাকুরেসি: {manual_accuracy:.4f}") print(f"ম্যানুয়াল প্রিসিশন: {manual_precision:.4f}") print(f"ম্যানুয়াল রিকল: {manual_recall:.4f}") print(f"ম্যানুয়াল F1-স্কোর: {manual_f1:.4f}") |
কোডের বিস্তারিত ব্যাখ্যা:
১. লাইব্রেরি ইম্পোর্ট (Import Libraries):
import numpy as np
: নিউমেরিক্যাল অপারেশন, বিশেষ করে অ্যারে (arrays) নিয়ে কাজ করার জন্যnumpy
লাইব্রেরি ইম্পোর্ট করা হয়েছে।from sklearn.metrics import ...
:scikit-learn
লাইব্রেরিরmetrics
মডিউল থেকেconfusion_matrix
,accuracy_score
,precision_score
,recall_score
,f1_score
ফাংশনগুলো ইম্পোর্ট করা হয়েছে। এই ফাংশনগুলো মডেলের পারফরম্যান্স মূল্যায়নের জন্য ব্যবহৃত হয়।
২. প্রকৃত লেবেল (y_true
) এবং মডেলের পূর্বাভাস (y_pred
) তৈরি:
- এখানে একটি কাল্পনিক ক্যান্সার নির্ণয় মডেলের ডেটা সেট তৈরি করা হয়েছে।
- লেবেল:
0
মানে “ক্যান্সার নেই” (নেগেটিভ ক্লাস) এবং1
মানে “ক্যান্সার আছে” (পজিটিভ ক্লাস)। y_true
: এটি রোগীদের প্রকৃত অবস্থা নির্দেশ করে। এখানে, ৫০ জন রোগীর ক্যান্সার ছিল (1
) এবং ৪৫০ জন রোগীর ক্যান্সার ছিল না (0
)।y_pred
: এটি মডেলের পূর্বাভাস নির্দেশ করে।TP=45
: মডেল ৪৫ জনকে সঠিকভাবে ক্যান্সার আছে বলে ভবিষ্যদ্বাণী করেছে (True Positives)।FN=5
: মডেল ৫ জনকে ভুলভাবে ক্যান্সার নেই বলে ভবিষ্যদ্বাণী করেছে, যদিও তাদের ক্যান্সার ছিল (False Negatives)।FP=10
: মডেল ১০ জনকে ভুলভাবে ক্যান্সার আছে বলে ভবিষ্যদ্বাণী করেছে, যদিও তাদের ক্যান্সার ছিল না (False Positives)।TN=440
: মডেল ৪৪০ জনকে সঠিকভাবে ক্যান্সার নেই বলে ভবিষ্যদ্বাণী করেছে (True Negatives)।
np.array()
: নিশ্চিত করা হয়েছে যেy_true
এবংy_pred
দুটিই NumPy অ্যারেতে রূপান্তরিত হয়েছে, কারণscikit-learn
ফাংশনগুলো সাধারণত NumPy অ্যারে নিয়ে কাজ করে।
৩. কনফিউশন ম্যাট্রিক্স গণনা (Calculating Confusion Matrix):
conf_matrix = confusion_matrix(y_true, y_pred)
: এই ফাংশনটি প্রকৃত লেবেল (y_true
) এবং মডেলের পূর্বাভাস (y_pred
) ব্যবহার করে একটি কনফিউশন ম্যাট্রিক্স তৈরি করে।- কনফিউশন ম্যাট্রিক্সের গঠন (সাধারণত 2×2 ম্যাট্রিক্সের জন্য):
123[[True Negative (TN), False Positive (FP)],[False Negative (FN), True Positive (TP)]]
- এরপর, ম্যাট্রিক্স থেকে সরাসরি
TN
,FP
,FN
,TP
মানগুলো এক্সট্র্যাক্ট করা হয়েছে।
৪. পারফরম্যান্স মেট্রিক্স গণনা (Calculating Performance Metrics):
- অ্যাকুরেসি (Accuracy):
accuracy = accuracy_score(y_true, y_pred)
: এটি মডেলের সঠিক ভবিষ্যদ্বাণী করা নমুনার অনুপাত। অর্থাৎ, মোট নমুনার মধ্যে মডেল কত শতাংশ সঠিকভাবে শ্রেণীবদ্ধ করেছে।- সূত্র:
- প্রিসিশন (Precision):
precision = precision_score(y_true, y_pred)
: এটি মডেল যখন একটি ক্লাসকে (যেমন, ক্যান্সার আছে) পজিটিভ হিসাবে ভবিষ্যদ্বাণী করে, তখন সেই ভবিষ্যদ্বাণীগুলির কত শতাংশ আসলেই সঠিক ছিল তার পরিমাপ। এটি মিথ্যা পজিটিভ (FP) এর খরচ কমিয়ে আনে।- সূত্র:
- রিকল (Recall) বা সেনসিটিভিটি (Sensitivity):
recall = recall_score(y_true, y_pred)
: এটি সমস্ত প্রকৃত পজিটিভ নমুনার (যাদের সত্যিই ক্যান্সার ছিল) মধ্যে মডেল কত শতাংশকে সঠিকভাবে শনাক্ত করতে পেরেছে তার পরিমাপ। এটি মিথ্যা নেগেটিভ (FN) এর খরচ কমিয়ে আনে।- সূত্র:
- F1-স্কোর (F1-Score):
f1 = f1_score(y_true, y_pred)
: এটি প্রিসিশন এবং রিকলের একটি ভারসাম্যপূর্ণ গড় (harmonic mean)। যখন প্রিসিশন এবং রিকল উভয়ই গুরুত্বপূর্ণ হয়, তখন F1-স্কোর ব্যবহার করা হয়। এটি ০ থেকে ১ এর মধ্যে থাকে, যেখানে ১ হল সেরা স্কোর।- সূত্র: $2 \* (Precision \* Recall) / (Precision + Recall)$
৫. ম্যানুয়াল গণনা (Manual Calculation):
- কোডের এই অংশটি
scikit-learn
ফাংশন ব্যবহার না করে সরাসরি সংগৃহীতTP
,FP
,TN
,FN
মান ব্যবহার করে উপরের মেট্রিকগুলি ম্যানুয়ালি গণনা করে। এটি মেট্রিকগুলোর পিছনের সূত্র এবং তাদের অর্থ আরও ভালোভাবে বোঝার জন্য সহায়ক।
কেন এই মেট্রিকগুলো গুরুত্বপূর্ণ:
শুধু অ্যাকুরেসি দিয়ে একটি মডেলের পারফরম্যান্স সম্পূর্ণভাবে বোঝা যায় না, বিশেষ করে যখন ডেটা সেট ভারসাম্যহীন (যেমন, এখানে যেখানে ক্যান্সার নেই এমন রোগীর সংখ্যা বেশি)।
- ক্যান্সার নির্ণয়ের মতো ক্ষেত্রে:
- রিকল (Recall) খুবই গুরুত্বপূর্ণ, কারণ আমরা চাই না ক্যান্সার আছে এমন কোনো রোগীকে মডেল ‘ক্যান্সার নেই’ বলে ভুল ভবিষ্যদ্বাণী করুক (মিথ্যা নেগেটিভ, FN)। এর ফল মারাত্মক হতে পারে।
- প্রিসিশন (Precision) গুরুত্বপূর্ণ, কারণ আমরা চাই না মডেল সুস্থ কোনো ব্যক্তিকে ‘ক্যান্সার আছে’ বলে ভুল ভবিষ্যদ্বাণী করুক (মিথ্যা পজিটিভ, FP), যা অহেতুক উদ্বেগ এবং আরও পরীক্ষার কারণ হতে পারে।
কনফিউশন ম্যাট্রিক্স মেশিন লার্নিং মডেলের পারফরম্যান্স মূল্যায়নের জন্য একটি শক্তিশালী এবং অপরিহার্য হাতিয়ার। এটি আমাদেরকে কেবল মডেলের নির্ভুলতাই নয়, বরং এটি কোন ধরণের ভুল করছে (False Positives নাকি False Negatives) সে সম্পর্কেও গভীর অন্তর্দৃষ্টি প্রদান করে।
TP, FP, TN, FN এর ধারণা, এবং অ্যাকুরেসি, প্রিসিশন, রিকল ও F1-স্কোরের মতো মেট্রিকগুলো বোঝা আপনাকে আপনার মডেলের জন্য সঠিক মূল্যায়ন পদ্ধতি নির্বাচন করতে এবং সেগুলোকে আরও উন্নত করতে সাহায্য করবে। মেশিন লার্নিংয়ে সফল হতে চাইলে এই মেট্রিকগুলোর স্পষ্ট ধারণা থাকা অত্যাবশ্যক।
Leave a Comment