K-Nearest Neighbors (KNN) হল একটি সাদামাটা, তবে কার্যকরী মেশিন লার্নিং অ্যালগরিদম, যা প্রধানত classification বা regression সমস্যা সমাধানে ব্যবহৃত হয়। এটি একটি instance-based learning অ্যালগরিদম, যেখানে মডেল কোনও প্রশিক্ষণ প্রক্রিয়া অনুসরণ না করে, বরং সরাসরি ডেটার কাছাকাছি অবস্থানে থাকা Kটি সর্বাধিক কাছের প্রতিবেশী (neighbors) থেকে ভবিষ্যদ্বাণী করে।
KNN মডেলের কার্যকারিতা বিশ্লেষণ করতে, সাধারণত কয়েকটি পারফরম্যান্স মেট্রিক্স ব্যবহার করা হয়, যেমন accuracy, precision, recall, F1-score, এবং confusion matrix। এই মেট্রিকগুলির মাধ্যমে KNN মডেলের কার্যকারিতা এবং ভুল অনুমানগুলো বিশ্লেষণ করা সম্ভব।
KNN মডেলের পারফরম্যান্স বিশ্লেষণের জন্য কিছু সাধারণ ধাপ:
১. KNN মডেল প্রশিক্ষণ ও ভবিষ্যদ্বাণী
KNN মডেল প্রশিক্ষণ করা হয় ডেটাসেটের কাছাকাছি প্রতিবেশী (neighbors) ব্যবহার করে এবং মডেল নতুন ইনপুটের জন্য ভবিষ্যদ্বাণী করে।
KNN মডেল তৈরির উদাহরণ:
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.metrics import confusion_matrix, accuracy_score, precision_score, recall_score, f1_score
# ডেটাসেট লোড করা
iris = load_iris()
X = iris.data
y = iris.target
# ডেটা বিভক্ত করা (Train-Test Split)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# KNN মডেল তৈরি ও প্রশিক্ষণ
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
# ভবিষ্যদ্বাণী করা
y_pred = knn.predict(X_test)
২. Confusion Matrix ব্যবহার করা
Confusion Matrix মডেলের পারফরম্যান্স বিশ্লেষণের জন্য একটি গুরুত্বপূর্ণ টুল। এটি True Positives (TP), True Negatives (TN), False Positives (FP) এবং False Negatives (FN) দেখায়, যা মডেলের ভুল এবং সঠিক পূর্বানুমান বুঝতে সহায়তা করে।
Confusion Matrix উদাহরণ:
cm = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:\n", cm)
৩. Accuracy মেট্রিক ব্যবহার করা
Accuracy হল সঠিক পূর্বানুমানগুলির হার (TP + TN) ডেটাসেটের মোট ইনস্ট্যান্সের (ทั้งหมด) বিরুদ্ধে।
Accuracy উদাহরণ:
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
৪. Precision, Recall এবং F1-Score ব্যবহার করা
- Precision: কতটি পূর্বানুমানিত পজিটিভ কেস সঠিক ছিল।
- Recall: কতটি প্রকৃত পজিটিভ কেস সঠিকভাবে পূর্বানুমানিত হয়েছিল।
- F1-Score: Precision এবং Recall এর মধ্যে ভারসাম্য।
Precision, Recall এবং F1-Score উদাহরণ:
precision = precision_score(y_test, y_pred, average='macro')
recall = recall_score(y_test, y_pred, average='macro')
f1 = f1_score(y_test, y_pred, average='macro')
print("Precision:", precision)
print("Recall:", recall)
print("F1-Score:", f1)
৫. K-Value নির্বাচন
KNN মডেলের পারফরম্যান্স অনেকাংশে K (nearest neighbors) ভ্যালুর উপর নির্ভর করে। সাধারণত, খুব ছোট K মান (যেমন 1) মডেলকে খুব বেশি স্পেসিফিক হতে বাধ্য করে, যার ফলে overfitting হতে পারে, এবং খুব বড় K মান মডেলকে খুব বেশি সাধারণ করে ফেলতে পারে, যার ফলে underfitting হতে পারে। সঠিক K মান নির্বাচন করা মডেলের পারফরম্যান্সের জন্য গুরুত্বপূর্ণ।
K মান নির্বাচন (Cross-validation ব্যবহার করা):
from sklearn.model_selection import cross_val_score
# বিভিন্ন K মানে পারফরম্যান্স পরীক্ষা করা
k_values = range(1, 21)
mean_scores = []
for k in k_values:
knn = KNeighborsClassifier(n_neighbors=k)
scores = cross_val_score(knn, X, y, cv=5, scoring='accuracy')
mean_scores.append(scores.mean())
# K মানের জন্য পারফরম্যান্স গ্রাফ
import matplotlib.pyplot as plt
plt.plot(k_values, mean_scores)
plt.xlabel('K value')
plt.ylabel('Mean Cross-Validation Accuracy')
plt.title('KNN Performance for different K values')
plt.show()
৬. ROC Curve এবং AUC (Area Under Curve)
KNN মডেল বিশেষ করে যখন বিভিন্ন শ্রেণী থাকে, তখন Receiver Operating Characteristic (ROC) curve এবং AUC মান বিশ্লেষণ করা যেতে পারে। AUC মান 0 থেকে 1 এর মধ্যে থাকে, যেখানে 1 একটি পারফেক্ট মডেল এবং 0.5 হল একটি মডেল যা কেবলই এলোমেলো অনুমান করছে।
ROC Curve উদাহরণ:
from sklearn.metrics import roc_curve, auc
fpr, tpr, thresholds = roc_curve(y_test, y_pred, pos_label=1)
roc_auc = auc(fpr, tpr)
# ROC curve আঁকা
plt.figure()
plt.plot(fpr, tpr, color='blue', lw=2, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='gray', linestyle='--')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic (ROC) Curve')
plt.legend(loc="lower right")
plt.show()
KNN মডেলের পারফরম্যান্স বিশ্লেষণ – সারাংশ:
- Confusion Matrix: মডেলের পূর্বানুমান এবং প্রকৃত আউটপুটের মধ্যে সম্পর্ক প্রদর্শন করে।
- Accuracy: সঠিক পূর্বানুমানের মোট আউটপুটের তুলনায় হার।
- Precision, Recall, এবং F1-Score: মডেলের কার্যকারিতা এবং ভারসাম্য বিশ্লেষণ করতে ব্যবহৃত হয়।
- K মান নির্বাচন: KNN মডেলের পারফরম্যান্স K মানের উপর নির্ভরশীল, সঠিক K মান নির্বাচন গুরুত্বপূর্ণ।
- ROC Curve এবং AUC: শ্রেণীবিভাগের ক্ষেত্রে, কনফিউশন ম্যাট্রিক্সের পাশাপাশি ROC Curve এবং AUC ব্যবহার করে মডেলের পারফরম্যান্স মূল্যায়ন করা হয়।
এগুলি KNN মডেলের পারফরম্যান্স বিশ্লেষণ এবং সঠিকভাবে মডেল নির্বাচন বা হাইপারপ্যারামিটার টিউনিংয়ের জন্য গুরুত্বপূর্ণ টুল।
Read more