الگوریتم KNN (نزدیکترین همسایهها)
آموزش الگوریتم KNN: فاصله اقلیدسی، انتخاب K، رأیگیری همسایهها و مزایا/معایب
KNN چیست؟
K-Nearest Neighbors (KNN) سادهترین و شهودیترین دستهبند: نمونه جدید را به کلاس اکثریت K همسایه نزدیکش نسبت میدهد.
مثل اینکه به محلله جدید بگویی: «همسایههایت بیشتر معلماند، پس احتمالاً تو هم معلمی!»
چگونه کار میکند؟
- فاصله نمونه جدید تا همه نمونههای آموزش محاسبه میشود
- K نمونه نزدیکتر انتخاب میشوند
- کلاس اکثریت بین آنها، پیشبینی ماست
فاصله اقلیدسی
معروفترین فاصله در KNN:
d = √((x₁-y₁)² + (x₂-y₂)² + ...)
فاصلههای دیگر: منهتن (مجموع قدرمطلق)، مینکوفسکی، کسینوسی (برای متن).
انتخاب K
- K کوچک (مثل ۱): حساس به نویز، مرز تصمیم ناهموار، Overfitting
- K بزرگ (مثل ۱۰۰): سادهنگر، مرز نرم، Underfitting
- قاعده: K فرد (برای جلوگیری از تساوی رأی) و معمولاً √n
بهترین K را با اعتبارسنجی متقابل پیدا کنید.
پیادهسازی
from sklearn.neighbors import KNeighborsClassifier
model = KNeighborsClassifier(n_neighbors=5)
model.fit(X_train, y_train)
preds = model.predict(X_test)
نکته مهم: مقیاسبندی!
KNN با فاصله کار میکند؛ اگر ویژگیها هممقیاس نباشند، ویژگی با اعداد بزرگ همهچیز را تعیین میکند. همیشه قبل از KNN مقیاسبندی کنید!
مزایا و معایب
| مزایا | معایب |
|---|---|
| ساده و شهودی | کند در پیشبینی (همه فاصلهها!) |
| بدون فرض درباره داده | حساس به مقیاس و ابعاد |
| برای داده کوچک خوب | حساس به داده نامتوازن |
جمعبندی
- KNN = رأیگیری K همسایه نزدیک
- K را با آزمایش انتخاب کنید (فرد و معمولاً √n)
- حتماً مقیاسبندی کنید
این مبحث بخشی از دوره آموزش کامل ماشین لرنینگ است.