هیچ قانون مشخصی برای انتخاب یک k استاندارد وجود نداره. این مقدار بسته به دیتاست متفاوته اما به طور کلی، هدف اصلی حفظ k در حدیه که:
- کوچک باشه تا نمونههای سایر کلاسها رو حذف کنه اما
- به اندازه کافی بزرگ باشه تا هرگونه نویز توی دادهها رو به حداقل برسونه.
یک راه برای جستجوی مقدار بهینه این پارامتر، Elbow method هست که شامل ایجاد یک حلقه for هست که مدلهای مختلف KNN رو با مقادیر k مختلف آموزش میده، و بعد از مدلی که بالاترین دقت رو داره، استفاده میکنه.
#Machine_Learning
#KNN
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3👨💻1
توی K نزدیکترین همسایه، بیشترین هزینه محاسباتی برای فاز پیشبینی هست، جایی که الگوریتم باید K نزدیکترین همسایه به یک نقطه داده جدید رو شناسایی کنه.
الگوریتم K-NN باید برای هر نقطهای که مورد بررسی قرار میگیره، فاصلهاش رو با تمام n نقطه دیگه دادهها حساب کنه و برای این محاسبه، باید از تمام d ویژگیهای هر نقطه عبور کنه (O(n * d))، در نتیجه پیچیدگی محاسباتی زیادی داره.
#Machine_Learning
#KNN
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👌2👏1
❓کوئیز شماره ۴۵: کدوم یک از الگوریتمهای یادگیری ماشین زیر میتونه برای جایگزین کردن مقادیر گمشده هم توی متغیرهای Categorical و هم توی متغیرهای پیوسته استفاده شه؟
Anonymous Quiz
71%
K-NN
10%
Linear Regression
19%
Logistic Regression
👍6😎4🔥1
الگوریتم k-Means یه الگوریتم خوشهبندیه که سعی میکنه مجموعهای از نقاط رو به k مجموعه تقسیم کنه؛ به طوری که نقاط هر خوشه نزدیک به هم باشن و بدون نظارته.
الگوریتم KNN یه الگوریتم طبقهبندی (یا رگرسیون) هست که برای تعیین طبقهبندی یه نقطه، طبقهبندی k نزدیکترین نقطه رو ترکیب میکنه. باناظره چون سعی میکنه یه نقطه رو بر اساس طبقهبندی شناخته شده سایر نقاط طبقهبندی کنه.
#Machine_Learning
#KNN
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌9❤1👏1
درخت KD (درخت K-بعدی) ساختارهای داده پیچیدهای هست که برای سازماندهی و جستجوی کارآمد دادههای چند بعدی به کار میره.
الگوریتم درخت KD فضای داده رو با استفاده از صفحات hyperplanes که عمود بر محورهای مختصات هستن، تقسیم میکنه و یک ساختار درختی دودویی ایجاد میکنه. ساختار درختهای KD بسیار مناسب و مؤثر برای مرتبسازی و دستهبندی اطلاعات در فضاهای گسترده و چندبعدیه.
الگوریتم درخت KD توی کتابخانههای پایتونی مثل Scikit-learn پیادهسازی شده، که به کاربران ابزارهای قدرتمندی رو برای بهینهسازی عملیات جستجوی نزدیکترین همسایه در ابعاد و ویژگیهای مختلف دیتاست میده.
کاربرد در KNN
توی KNN، درختهای K-بعدی برای کاهش زمان جستجو توی فضای چندبعدی استفاده میشن. به جای بررسی تک تک نقاط، این الگوریتم میتونه با پیمایش درخت، سریعتر نقاط نزدیک رو پیدا کنه.
پیچیدگیها و بهینهسازیها
درختهای K-بعدی میتونن نامتعادل بشن. استفاده از الگوریتمهای متعادل کننده مثل درختهای AVL یا Red-Black میتونن مفید باشن. همچنین انتخاب تعداد همسایهها (K) تأثیر زیادی روی دقت پیشبینی داره.
from sklearn.neighbors import KDTree, KNeighborsClassifier
import numpy as np
X = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]])
y = np.array([0, 1, 0, 1, 0])
knn = KNeighborsClassifier(n_neighbors=3, algorithm='kd_tree')
knn.fit(X, y)
# Predicting the label for a new point using KNN
query_point = np.array([[2, 3]])
prediction = knn.predict(query_point)
print("KNN prediction for the new point: ", prediction)
# Creating an independent KD Tree using the data
kdtree = KDTree(X, leaf_size=30, metric='euclidean')
# Searching for the 3 nearest neighbors using the KD Tree
dist, ind = kdtree.query(query_point, k=3)
print("Nearest neighbors using KD Tree:")
print("Distances: ", dist)
print("Indices: ", ind)
Nearest neighbors using KD Tree:
Distances: [[1.41421356 1.41421356 4.24264069]]
Indices: [[0 1 2]]
#Machine_Learning
#KNN
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌7👨💻2❤1👍1
❓کوئیز شماره ۴۶: توی جستجوی نزدیکترین همسایه با استفاده از درخت K-بعدی، در چه شرایطی به شاخه متفاوتی از درخت برمیگردیم؟
Anonymous Quiz
61%
زمانیکه فاصله نقطه جستجو از مرز تقسیم کمتر از فاصله فعلی باشه
14%
فقط زمانی که در نقطه میانی درخت هستیم
14%
فقط اگه نقطه جستجو توی یک بعد خاص باشه
11%
همیشه به هر دو شاخه سرکشی میکنیم
👏5❤2😎2
زمان استفاده از الگوریتم KNN، ضروریه دادهها نرمالسازی شن تا مطمئن شیم هیچ کدوم از ویژگیها به دلیل تفاوتهای مقیاس از اهمیت بیشتر یا کمتری برخوردار نشدن. برای نرمالسازی میشه از دو روش رایج Min-Max Normalization و Z-score normalization استفاده کرد.
#Machine_Learning
#KNN
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9👏3👌1
#Machine_Learning
#KNN
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1👨💻1
❓کوئیز شماره ۴۷: معایب استفاده از الگوریتم K نزدیکترین همسایه (KNN) کدوم گزینه میشه؟
Anonymous Quiz
2%
با افزایش تعداد ابعاد، پیدا کردن نزدیکترین همسایههای معنادار سخت میشه.
13%
مصرف زیاد منابع محاسباتی، به ویژه برای دیتاستهای بزرگ، و نیاز به حافظه زیاد برای ذخیره کل دیتاست.
13%
حساسیت به انتخاب K و معیار فاصله.
72%
تمام موارد بالا
😎7👍3👏1
الگوریتم KNN رو میشه مستقیماً با مفهوم Bias-Variance tradeoff مرتبط دونست. Bias به میزان خطایی اشاره داره که توی مدل رخ میده، و پراکندگی (Variance) به میزان حساسیت مدل نسبت به تغییرات توی دیتاست آموزشی اشاره داره.
توی KNN، مقدار K نقش مهمی برای تعادل Bias-Variance tradeoff داره. اگه K خیلی کوچک باشه (مثلاً 1 یا 2)، مدل ممکنه به شدت نسبت به دادههای آموزشی حساس شه و پراکندگی بالایی داشته باشه؛ در نتیجه overfitting رخ بده.
از طرف دیگه مقدار بزرگ K، باعث میشه مدل نمیتونه الگوهای پیچیده دیتاست رو یاد بگیره، عملکرد ضعیفی داشته باشه و underfitting رخ بده. بنابراین، انتخاب K متعادل میتونه به تعادل Bias-Variance tradeoff کمک کنه.
#Machine_Learning
#KNN
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌9❤3👨💻1
#Machine_Learning
#KNN
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2👨💻1
❓کوئیز شماره ۴۸: کدوم گزینهدر مورد انتخاب مقدار K توی الگوریتم KNN صحیحه؟
Anonymous Quiz
5%
باید برابر با تعداد ویژگیهای مجموعه داده باشه.
26%
باید به صورت جذر تعداد نمونهها در مجموعه دادههای آموزش انتخاب شه.
10%
باید برابر با تعداد نمونههای آموزشی مجموعه داده باشه.
59%
باید به صورت تصادفی انتخاب شه.
👏5👌3😎2❤1
بله، این الگوریتم ممکنه تحت تأثیر مشکل ابعاد بالا قرار بگیره. این مشکل به چالشهایی اشاره داره که زمان افزایش تعداد ویژگیها یا ابعاد فضای ویژگیها رخ میده.
با افزایش ابعاد، دادهها توی فضای بزرگتری پراکنده میشن و فاصله معنادار بین نقاط کمتر میشه، که در نتیجه منجر به کاهش کارایی KNN میشه چون این الگوریتم بر مبنای محاسبه فاصله بین نقاط عمل میکنه.
همچنین، محاسبه فاصله توی ابعاد بالا میتونه بسیار وقتگیر و پرهزینه باشه. به همین دلیل، گاهی اوقات نیازه تا از روشهای کاهش بُعد مثل PCA یا انتخاب ویژگی استفاده شه تا فقط ابعاد مرتبط و مؤثر دادهها حفظ شه.
#Machine_Learning
#KNN
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2👨💻1
برای پیادهسازی KNN در Scikit-learn، اول باید کلاس
KNeighborsClassifier
رو از ماژول sklearn.neighbors
وارد کنیم. این کلاس امکان استفاده از الگوریتم KNN رو فراهم میکنه.KNeighborsClassifier
رو وارد کنیم.- n_neighbors: تعیین تعداد همسایههای در نظر گرفته شده.
- weights: تعیین نحوه وزندهی به همسایهها ('uniform' یا 'distance').
- metric: انتخاب معیار فاصله برای محاسبه همسایگی.
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
iris = load_iris()
X = iris.data
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
predictions = knn.predict(X_test)
accuracy = accuracy_score(y_test, predictions)
print(f'دقت مدل: {accuracy}')
#Machine_Learning
#KNN
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1👌1👨💻1
❓کوئیز شماره ۴۹: توی استفاده از KNeighborsClassifier, در چه شرایطی باید مقدار پارامتر algorithm رو از auto (که حالت پیش فرضه) به kd_tree یا ball_tree تغییر داد؟
Anonymous Quiz
50%
زمان کار با دادههای بسیار بزرگ
19%
زمانی که تعداد ویژگیها (features) کمه
19%
فقط در مواردی که سرعت محاسبات اهمیت داره
13%
زمانی که دادهها غیر عددی هستن
❤6👌2😎2
یه نکته مهم برای استفاده از KNeighborsClassifier توی Scikit-learn اینکه اگه دادههای ورودی به صورت sparse (پراکنده) باشن، به طور خودکار الگوریتم برای محاسبه همسایههای نزدیک از روش brute force استفاده میکنه.
یعنی تنظیمات پیشفرض الگوریتم برای انتخاب بهترین روش محاسبه همسایههای نزدیک، مثل auto, ball_tree, kd_tree در صورتی که دادهها sparse باشن، نادیده گرفته میشن و به جاش از روش brute force استفاده میشه. این موضوع میتونه روی عملکرد و سرعت مدل تأثیر بگذاره.
#Machine_Learning
#KNN
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2👏1
#Weekend
#Machine_Learning
#KNN
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2👏2
دنیای دادهها جذابه و دونستن علم داده، توانایی تحلیل داده، یا بازاریابی مبتنی بر داده، میتونه شما رو برای فرصتهای شغلی زیادی مناسب کنه.
فارغ از رشته و پیش زمینهتون، میتونین با استفاده از دورههای رضا شکرزاد این مسیر رو شروع کنین و از سطح مقدماتی تا پیشرفته پیش برین.
❗️دانشجویان دوره علم داده ۱ میتونن با پرداخت اختلاف هزینه، دوره جامع رو تهیه کنن.
#Courses
@DSLanders | دیاسلندرز
Please open Telegram to view this post
VIEW IN TELEGRAM
👏7❤2👍1🔥1
#Machine_Learning
#SVM
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍5👏2
مرز تصمیم، سطحیه که دادهها رو در فضای ویژگی به دو یا چند کلاس تقسیم میکنه. این مرز میتونه خطی یا غیرخطی باشه. تعیین مرز تصمیم صحیح برای دقت بالای مدل حیاتیه. مرزهای تصمیم نادرست میتونن منجر به بیشبرازش یا کمبرازش شن.
#Machine_Learning
#SVM
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4👨💻1