آموزش رایگان صفر تا صد یادگیری ماشین (Machine Learning) به زبان ساده
-
خوش آمدید به یادگیری ماشین!
-
میانگین، میانه و مد در یادگیری ماشین
-
انحراف معیار (Standard Deviation) در یادگیری ماشین
-
صدک (Percentile) در یادگیری ماشین
-
توزیع دادهها در یادگیری ماشین
-
توزیع نرمال دادهها در یادگیری ماشین
-
نمودار پراکندگی (Scatter Plot) در یادگیری ماشین
-
رگرسیون خطی در یادگیری ماشینی
-
رگرسیون چندجملهای در یادگیری ماشین
-
رگرسیون چندگانه در یادگیری ماشین
-
روش Train/Test در یادگیری ماشین
-
درخت تصمیمگیری در یادگیری ماشین
-
ماتریس سردرگمی (Confusion Matrix) در یادگیری ماشین
-
خوشهبندی سلسلهمراتبی (Hierarchical Clustering) در یادگیری ماشین
-
رگرسیون لجستیک در یادگیری ماشین
-
Grid Search در یادگیری ماشین
-
پردازش دادههای دستهای (Categorical Data) در یادگیری ماشین
-
خوشهبندی K-Means در یادگیری ماشین
-
یادگیری Bootstrap Aggregation (Bagging) در یادگیری ماشین
-
کراس والیدیشن (Cross Validation) در یادگیری ماشین
-
منحنی AUC - ROC در یادگیری ماشین
-
الگوریتم K-Nearest Neighbors (KNN) در یادگیری ماشین
الگوریتم K-Nearest Neighbors (KNN) در یادگیری ماشین
مقدمهای بر KNN
الگوریتم K-nearest neighbors (KNN) یکی از سادهترین و قدرتمندترین الگوریتمهای یادگیری ماشین است که برای طبقهبندی (Classification) و رگرسیون (Regression) استفاده میشود.
✅ ویژگی اصلی KNN: این الگوریتم بر اساس شباهت دادههای جدید به دادههای قبلی، پیشبینی انجام میدهد. به عبارت ساده، هر داده جدید را به نزدیکترین گروه از دادههای قبلی اختصاص میدهد.
✅ مثال روزمره: فرض کنید به شهری جدید نقل مکان کردهاید و میخواهید یک رستوران خوب پیدا کنید. شما به چند نفر از محلیها (همسایگان) میگویید:
“بهترین رستورانی که میشناسید کدام است؟”
اگر ۵ نفر از ۷ نفر یک رستوران خاص را پیشنهاد دهند، احتمالاً همان رستوران انتخاب خوبی است!
💡 در KNN، “K” نشاندهنده تعداد همسایگانی است که در تصمیمگیری شرکت میکنند. هرچه K بزرگتر باشد، تصمیمگیری پایدارتر، اما ممکن است جزئیات محلی از بین برود.
دKNN چگونه کار میکند؟ 🔄
مراحل اجرای KNN به سادگی عبارتند از:
1️⃣ مشخص کردن مقدار K: تعیین میکنیم چند همسایه (نقاط دادهای) برای تصمیمگیری بررسی شوند.
2️⃣ محاسبه فاصله: فاصله نقطه جدید تا تمام نقاط دادهای موجود را اندازهگیری میکنیم (معمولاً از فاصله اقلیدسی استفاده میشود).
3️⃣ انتخاب نزدیکترین K همسایه: نزدیکترین نقاط به داده جدید را انتخاب میکنیم.
4️⃣ رایگیری برای طبقهبندی یا میانگینگیری برای رگرسیون:
- در طبقهبندی: بر اساس بیشترین تعداد رای (دستهای که بیشترین همسایه در آن قرار دارد) داده جدید را برچسبگذاری میکنیم.
- در رگرسیون: مقدار میانگین همسایگان را به عنوان مقدار پیشبینیشده برمیداریم.
مثال تصویری KNN 📊
فرض کنید مجموعهای از نقاط دادهای داریم که دو دسته آبی و قرمز هستند.
🔵 نقاط آبی → کلاس 1
🔴 نقاط قرمز → کلاس 2
حالا یک نقطه جدید (ستاره سبز) داریم. برای طبقهبندی آن:
✅ اگر K = 3 باشد: سه نزدیکترین همسایه را بررسی میکنیم (مثلاً ۲ قرمز و ۱ آبی) → داده جدید قرمز دستهبندی میشود.
✅ اگر K = 7 باشد: هفت همسایه بررسی میشود (مثلاً ۴ آبی و ۳ قرمز) → داده جدید آبی دستهبندی میشود.
این نشان میدهد مقدار K انتخابی، تأثیر زیادی بر نتیجه دارد! 🔥
کدنویسی KNN در پایتون 🐍
حالا یک مثال عملی با استفاده از Scikit-Learn مینویسیم. میخواهیم یک مجموعه داده ساده را با KNN آموزش دهیم.
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# 1. بارگذاری مجموعه داده
iris = load_iris()
X = iris.data # ویژگیها
y = iris.target # برچسبها
# 2. تقسیم دادهها به مجموعه آموزش و تست
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 3. انتخاب مدل KNN با K=5
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train) # آموزش مدل
# 4. پیشبینی و ارزیابی مدل
y_pred = knn.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"دقت مدل KNN: {accuracy * 100:.2f}%")
✅ در این کد:
- دادههای Iris بارگذاری شدهاند.
- دادهها به مجموعه آموزش (80%) و تست (20%) تقسیم شدهاند.
- مدل KNN با K=5 آموزش داده شده است.
- دقت مدل اندازهگیری شده است.
انتخاب مقدار مناسب K 🤔
انتخاب مقدار K خیلی مهم است!
📌 اگر K خیلی کوچک باشد (مثلاً 1 یا 2) → مدل حساس به نویز خواهد بود و ممکن است بیشبرازش (Overfitting) کند.
📌 اگر K خیلی بزرگ باشد → مدل اطلاعات جزئی را از دست میدهد و ممکن است کمبرازش (Underfitting) کند.
🔹 روش مناسب برای انتخاب K: تست مقادیر مختلف و پیدا کردن بهترین مقدار از طریق Cross Validation.
مزایا و معایب الگوریتم KNN 🚀⚠️
✅ مزایا:
✔️ ساده و قابل فهم
✔️ نیازی به یادگیری مدل ندارد (Lazy Learning)
✔️ برای دادههایی با توزیع پیچیده خوب عمل میکند
❌ معایب:
❌ محاسبات زیاد برای دادههای بزرگ
❌ حساس به نویز و ویژگیهای بیربط
❌ نیاز به انتخاب مقدار مناسب K
جمعبندی 🎯
- KNN یک الگوریتم یادگیری ماشین مبتنی بر همسایگی است که دادهها را بر اساس نزدیکترین نقاط مشابه دستهبندی میکند.
- مقدار K تأثیر زیادی روی عملکرد مدل دارد و باید به درستی انتخاب شود.
- برای اجرای KNN در پایتون از کتابخانه Scikit-learn استفاده میکنیم.
- این الگوریتم برای دادههای کوچک و کاربردهای ساده بسیار مناسب است.