الگوریتم K-نزدیک‌ترین همسایه (K-Nearest Neighbors یا K-NN) یکی از ساده‌ترین و در عین حال قدرتمندترین الگوریتم‌های طبقه‌بندی (Classification) در یادگیری ماشین نظارت‌شده است. این الگوریتم به‌عنوان یک روش یادگیری تنبل (Lazy Learning) شناخته می‌شود، زیرا هیچ مدل صریحی در مرحله آموزش ایجاد نمی‌کند، بلکه کل مجموعه داده آموزشی را برای ارزیابی نمونه‌های جدید ذخیره می‌کند.

۱. درک مفهومی الگوریتم K-NN

K-NN بر اساس این فرض ساده عمل می‌کند که نقاط داده‌ای که در فضای ویژگی به یکدیگر نزدیک‌ترند، شباهت بیشتری به هم دارند و بنابراین احتمالاً به یک کلاس تعلق دارند.

برای طبقه‌بندی یک نمونه جدید (تست)، K-NN مراحل زیر را طی می‌کند:

  1. انتخاب K: ابتدا باید تعیین کنیم که چند همسایه (K) باید در نظر گرفته شوند.
  2. محاسبه فاصله: فاصله نمونه جدید تا همه نمونه‌های موجود در مجموعه داده آموزشی محاسبه می‌شود. (معمولاً از فاصله اقلیدسی استفاده می‌شود.)
  3. یافتن نزدیک‌ترین‌ها: K مورد از نزدیک‌ترین نمونه‌ها (همسایگان) به نقطه تست انتخاب می‌شوند.
  4. تصمیم‌گیری (رأی‌گیری): کلاس نمونه جدید بر اساس رأی‌گیری اکثریت از این K همسایه تعیین می‌شود. به عبارتی، نمونه جدید به کلاسی اختصاص داده می‌شود که بیشترین فراوانی را در بین K همسایه داشته باشد.

۲. K-NN در نرم‌افزار Weka (IBk)

در نرم‌افزار Weka، الگوریتم K-NN تحت عنوان IBk (به معنی Instance-Based K) در ماژول طبقه‌بندی (Classify) قرار دارد.

برای اجرای این الگوریتم، باید مطمئن باشید که مجموعه داده شما دارای یک ویژگی هدف (Target Attribute) برای طبقه‌بندی باشد.

مراحل پیاده‌سازی SimpleKMeans در Weka Explorer

برای اجرای IBk در Weka، مراحل زیر را دنبال کنید:

گام ۱: آماده‌سازی داده‌ها (Preprocess)

  1. نرم‌افزار Weka Explorer را باز کنید.
  2. در تب Preprocess، مجموعه داده خود (با فرمت ARFF یا CSV) را بارگذاری کنید.
  3. اطمینان حاصل کنید که ویژگی (ستون) کلاس به‌درستی شناسایی شده باشد.

گام ۲: انتخاب طبقه‌بند (Classify)

  1. به تب Classify بروید.
  2. در قسمت Classifier، روی دکمه Choose کلیک کنید.

گام ۳: تنظیم پارامترها و گزینه K

  1. روی نام الگوریتم (IBk) کلیک کنید تا پنجره تنظیم پارامترها باز شود.
  2. KNN (K-Nearest Neighbors): این پارامتر مهم‌ترین بخش است و مقدار K را تعیین می‌کند. باید آن را روی عدد دلخواه تنظیم کنید (مثلاً ۳، ۵ یا ۷).
  • توجه: Weka به‌طور پیش‌فرض از روشی برای یافتن بهترین K استفاده می‌کند که می‌تواند زمان‌بر باشد. اگر می‌خواهید K ثابت باشد، مطمئن شوید که تنظیمات مربوط به جستجوی K خاموش شده‌اند (یا مقدار KNN را مشخص کنید).
  1. distanceFuction: معیار فاصله را انتخاب کنید (معمولاً فاصله Euclidean).

گام ۴: تعیین حالت آزمایش (Test Options)

  1. در قسمت Test options، نحوه ارزیابی مدل خود را مشخص کنید. رایج‌ترین گزینه‌ها:
  • Cross-validation: برای ارزیابی عمومی‌تر مدل (مثلاً ۱۰-فولده).
  • Percentage split: تقسیم داده‌ها به مجموعه آموزش و تست (مثلاً ۶۶٪ آموزش و ۳۴٪ تست).
  1. در نهایت، روی دکمه Start کلیک کنید.

۳. تفسیر خروجی K-NN در وکا

پس از اجرای الگوریتم، Weka خروجی زیر را نمایش می‌دهد که برای ارزیابی عملکرد مدل حیاتی است:

  1. Classification Accuracy:
  • Correctly Classified Instances: تعداد و درصد نمونه‌هایی که به‌درستی طبقه‌بندی شده‌اند (دقت یا Accuracy).
  • Incorrectly Classified Instances: تعداد و درصد نمونه‌هایی که به‌اشتباه طبقه‌بندی شده‌اند.
  1. Confusion Matrix: ماتریس درهم‌ریختگی، عملکرد مدل را برای هر کلاس به‌صورت جداگانه نشان می‌دهد و به شما کمک می‌کند تا خطاهای نوع اول (False Positives) و نوع دوم (False Negatives) را تحلیل کنید.
  2. Detailed Accuracy by Class: معیارهای تفکیکی مانند Precision، Recall (حساسیت)، F-Measure و ROC Area برای هر کلاس ارائه می‌شوند.

اهمیت انتخاب K

انتخاب مقدار K در الگوریتم K-NN بسیار مهم است:

  • K کوچک (مثلاً ۱): مدل بیش از حد به داده‌های آموزشی وابسته می‌شود و حساسیت زیادی به نویز (Overfitting) پیدا می‌کند.
  • K بزرگ: طبقه‌بندی به سمت رأی‌گیری از نقاط دورتر متمایل می‌شود که باعث «هموار شدن» بیش از حد مرزهای تصمیم‌گیری و کاهش واریانس می‌شود (Underfitting).

بهترین K معمولاً با روش‌های اعتبارسنجی متقاطع (Cross-validation) تعیین می‌شود.

کلیدواژه ها : اجرای الگوریتم K-نزدیکترین-همسایه-K-Nearest-Neighbors-K-NN-Weka IBk-الگوریتم یادگیری تنبل-Lazy Learning-طبقه‌بندی داده‌ها-Classification Weka-انتخاب مقدار K-یادگیری نظارت‌شده