Hook — পাড়ার মানুষ দেখে বলো
নতুন একজন এলাকায় এলে আমরা তার পাশের ৫ জন প্রতিবেশীকে দেখি — যদি সবাই ছাত্র হয়, ধরে নেই সেও ছাত্র। KNN ঠিক এভাবেই কাজ করে — কাছের K জন “প্রতিবেশী” এর majority দেখে decision।
Concept — Lazy Learner
KNN এর কোনো training phase নেই — পুরো dataset মনে রাখে। নতুন point আসলে সব training point এর সাথে distance মেপে K nearest খুঁজে বের করে।
- Classification — K neighbours এর majority vote।
- Regression — K neighbours এর গড়।
Math — Distance Metric
Euclidean
d(a,b) = √Σ (aᵢ − bᵢ)²
Manhattan
d(a,b) = Σ |aᵢ − bᵢ|
Minkowski (general)
d(a,b) = (Σ |aᵢ − bᵢ|^p)^(1/p)
Real-world Use
- Recommendation — similar user/product খুঁজে বের করা।
- Handwriting recognition।
- Anomaly detection।
- Image similarity search।
Code — Sklearn KNN
knn_iris.py
from sklearn.datasets import load_iris
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
X, y = load_iris(return_X_y=True)
Xtr, Xte, ytr, yte = train_test_split(X, y, test_size=0.2, random_state=42)
scaler = StandardScaler().fit(Xtr)
Xtr_s, Xte_s = scaler.transform(Xtr), scaler.transform(Xte)
for k in [1, 3, 5, 7, 15]:
model = KNeighborsClassifier(n_neighbors=k).fit(Xtr_s, ytr)
acc = accuracy_score(yte, model.predict(Xte_s))
print(f"k={k} acc={acc:.3f}")Common Mistakes
সবচেয়ে বড় ভুল
Scaling না করা — বড় scale এর feature distance dominate করে।
- K=1 ব্যবহার — overfit।
- K অনেক বড় — underfit।
- বড় dataset এ KNN — predict slow হয়ে যায়।
- Categorical feature এ Euclidean — meaningless।
Practice Tasks
- Task 1: K=1 থেকে 30 পর্যন্ত accuracy plot করো — sweet spot বের করো।
- Task 2: Euclidean vs Manhattan তুলনা করো।
- Task 3: KNN regression দিয়ে boston housing predict করো।
Mini Project — Movie Recommender
MovieLens dataset এ user-rating matrix থেকে cosine similarity দিয়ে user-based KNN recommender বানাও। একজন user কে ৫টি movie recommend করো।
Summary
এক নজরে
KNN = কাছের প্রতিবেশী দেখে decision। Lazy, simple, scaling-sensitive।