মডেল বিশ্লেষণ হল মেশিন লার্নিং মডেলটি কতটা কার্যকরী এবং সঠিক তা পর্যালোচনা করার প্রক্রিয়া। মডেলটির পারফরম্যান্স মূল্যায়ন করা গুরুত্বপূর্ণ, যাতে নিশ্চিত হওয়া যায় যে মডেলটি বাস্তব দুনিয়ার সমস্যাগুলো সঠিকভাবে সমাধান করতে সক্ষম। এটি মূলত মডেল ট্রেনিংয়ের পর একটি গুরুত্বপূর্ণ ধাপ, যেখানে মডেলটির সক্ষমতা এবং এর ত্রুটিগুলি চিহ্নিত করা হয়।
মডেল বিশ্লেষণের মূল পদ্ধতি
মডেল বিশ্লেষণ বিভিন্ন মেট্রিকস এবং ভিজ্যুয়ালাইজেশন ব্যবহার করে করা হয়। মডেলটিকে বিশ্লেষণ করার জন্য বেশ কয়েকটি পদ্ধতি রয়েছে, যেমন অ্যাকিউরেসি, প্রিসিশন, রিকল, ফ1 স্কোর, ROC কিউরভ ইত্যাদি।
১. অ্যাকিউরেসি (Accuracy)
অ্যাকিউরেসি একটি সাধারণ মেট্রিক যা মডেলের সঠিকতা পরিমাপ করে। এটি সঠিক পূর্বাভাসের শতাংশকে নির্দেশ করে।
গাণিতিক সূত্র:
উদাহরণ:
from sklearn.metrics import accuracy_score
# মডেলের পূর্বাভাস এবং প্রকৃত মান
y_pred = [1, 0, 1, 1, 0]
y_test = [1, 0, 0, 1, 0]
# accuracy গননা করা
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
২. প্রিসিশন (Precision)
প্রিসিশন হল সঠিকভাবে শ্রেণীবদ্ধ করা পজিটিভ পূর্বাভাসের হার। এটি একটি মেট্রিক যা মডেল কতটা সঠিকভাবে পজিটিভ ক্লাস প্রেডিক্ট করেছে তা নির্ধারণ করে।
গাণিতিক সূত্র:
উদাহরণ:
from sklearn.metrics import precision_score
# precision গননা করা
precision = precision_score(y_test, y_pred)
print("Precision:", precision)
৩. রিকল (Recall)
রিকল হল পজিটিভ ক্লাসের সঠিকভাবে পূর্বাভাসের হার, যেখানে এটি একটি গুরুত্বপূর্ণ মেট্রিক যেটি নির্ধারণ করে কতটুকু সত্য পজিটিভ ক্লাস সঠিকভাবে চিহ্নিত হয়েছে।
গাণিতিক সূত্র:
উদাহরণ:
from sklearn.metrics import recall_score
# recall গননা করা
recall = recall_score(y_test, y_pred)
print("Recall:", recall)
৪. ফ1 স্কোর (F1 Score)
ফ1 স্কোর হল প্রিসিশন এবং রিকলের একটি সমন্বিত পরিমাপ। এটি বিশেষত গুরুত্বপূর্ণ যখন ডেটাতে ক্লাস ইমব্যালান্স থাকে, অর্থাৎ একটি ক্লাসের সংখ্যা অন্য ক্লাসের চেয়ে অনেক বেশি বা কম হয়। ফ1 স্কোরের মান ০ থেকে ১ পর্যন্ত থাকে, যেখানে ১ হল সেরা মান।
গাণিতিক সূত্র:
উদাহরণ:
from sklearn.metrics import f1_score
# F1 স্কোর গননা করা
f1 = f1_score(y_test, y_pred)
print("F1 Score:", f1)
৫. Confusion Matrix (কনফিউশন ম্যাট্রিক্স)
Confusion Matrix হল একটি টেবিল যা শ্রেণীবদ্ধ মডেলগুলির কার্যকারিতা পর্যালোচনা করতে ব্যবহৃত হয়। এটি আমাদেরকে সঠিক এবং ভুল শ্রেণীবদ্ধকরণের সংখ্যা দেখাতে সহায়তা করে।
- True Positives (TP): সঠিকভাবে পজিটিভ প্রেডিক্টেড
- True Negatives (TN): সঠিকভাবে নেগেটিভ প্রেডিক্টেড
- False Positives (FP): ভুলভাবে পজিটিভ প্রেডিক্টেড
- False Negatives (FN): ভুলভাবে নেগেটিভ প্রেডিক্টেড
উদাহরণ:
from sklearn.metrics import confusion_matrix
# confusion matrix গননা করা
conf_matrix = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:\n", conf_matrix)
৬. ROC কিউরভ এবং AUC (Area Under the Curve)
ROC কিউরভ (Receiver Operating Characteristic curve) হল একটি ভিজ্যুয়াল পদ্ধতি যা মডেলের পারফরম্যান্সের একটি গ্রাফিকাল উপস্থাপনা প্রদান করে। এটি False Positive Rate (FPR) এবং True Positive Rate (TPR) এর মধ্যে সম্পর্ক চিত্রিত করে। AUC (Area Under the Curve) হল ROC কিউরভের নিচের এলাকা, যা মডেলের বৈশিষ্ট্য বা ক্ষমতা পরিমাপ করে।
- TPR (True Positive Rate) =
- FPR (False Positive Rate) =
উদাহরণ:
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt
# মডেল প্রেডিকশন (প্রবাবিলিটি আউটপুট)
y_prob = log_reg.predict_proba(X_test)[:,1]
# ROC কিউরভ হিসেব করা
fpr, tpr, thresholds = roc_curve(y_test, y_prob)
roc_auc = auc(fpr, tpr)
# ROC কিউরভ প্লট করা
plt.figure()
plt.plot(fpr, tpr, color='blue', label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='gray', 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 (ROC)')
plt.legend(loc="lower right")
plt.show()
৭. Cross-validation (ক্রস ভ্যালিডেশন)
ক্রস ভ্যালিডেশন হল একটি কৌশল যা মডেলটির সাধারণীকরণের ক্ষমতা মূল্যায়ন করে। এটি ডেটাকে ছোট ছোট সাব-সেটগুলিতে ভাগ করে মডেলটি প্রশিক্ষণ এবং পরীক্ষার জন্য বিভিন্ন সেটে পর্যালোচনা করা হয়। এর মাধ্যমে মডেলের পারফরম্যান্স আরো নির্ভুলভাবে মূল্যায়ন করা যায়।
উদাহরণ:
from sklearn.model_selection import cross_val_score
# মডেল এবং ক্রস ভ্যালিডেশন
scores = cross_val_score(log_reg, X, y, cv=5) # 5-fold cross-validation
print("Cross-validation scores:", scores)
print("Mean score:", scores.mean())
সারাংশ
মডেল বিশ্লেষণ মডেলের কার্যকারিতা বুঝতে এবং উন্নতি করতে অত্যন্ত গুরুত্বপূর্ণ। এটি বিভিন্ন মেট্রিকস যেমন অ্যাকিউরেসি, প্রিসিশন, রিকল, ফ1 স্কোর, Confusion Matrix, এবং ROC কিউরভ ব্যবহার করে করা হয়। মডেল বিশ্লেষণের মাধ্যমে মডেলের সঠিকতা এবং এর উন্নতির প্রয়োজনীয়তা চিহ্নিত করা সম্ভব। এই বিশ্লেষণগুলি মডেল তৈরি এবং তা বাস্তব দুনিয়ায় প্রয়োগের জন্য অত্যন্ত গুরুত্বপূর্ণ।