آموزش دیتاساینس و ماشین‌لرنینگ
1.91K subscribers
161 photos
9 videos
134 links
🔴 آموزش مباحث حوزه دیتا شامل علم داده، یادگیری ماشین و تحلیل داده (رضا شکرزاد)

🌀 کانال اخبار و منابع هوش مصنوعی:
@DSLanders

🌀 مشاوره و ارتباط مستقیم:
https://t.iss.one/dslanders_admin

یوتیوب:
Youtube.com/@RezaShokrzad

دوره‌ها:
cafetadris.com/datascience
Download Telegram
👨‍🏫 Gaussian Naive Bayes

بیز ساده Gaussian یه روش دسته‌بندی مبتنی بر احتماله که فرض می‌کنه توزیع ویژگی‌ها توی داده‌ها به صورت نرماله. این به این معنیه که هر ویژگی داده‌های آموزشی توسط میانگین و واریانسش توصیف می‌شه.

برای هر کلاس، میانگین و واریانس هر ویژگی محاسبه می‌شه. بعد، با استفاده از این پارامترها، احتمال تعلق یک نمونه جدید به هر کلاس تعیین می‌شه. این احتمالات با استفاده از تابع چگالی احتمال نرمال محاسبه می‌شن.

برای درک بهتر، فرض کنین می‌خوایم بر اساس ویژگی‌هایی مثل قد و وزن، افراد رو به گروه‌های ورزشی مختلف طبقه‌بندی کنیم. اول باید میانگین و واریانس قد و وزن توی هر گروه ورزشی رو محاسبه کنیم. در ادامه برای طبقه‌بندی یک نفر جدید، احتمال تعلقش به هر گروه بر اساس ویژگی‌هایش محاسبه می‌شه.

یکی از مزایای اصلی بیز ساده Gaussian سادگی و کارآمدیش در مواجهه با داده‌های پیوسته‌ست. اما مثل بقیه مدل‌های بیز ساده، این روش هم فرض می‌کنه که ویژگی‌ها مستقل از هم هستن، که در بسیاری از مثال‌های دنیای واقعی کاربرد نداره. همچنین، عملکردش در مواجهه با داده‌هایی که توزیع نرمال ندارن، ممکنه کاهش پیدا کنه.

#Machine_Learning
#Naive_Bayes

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌62👍1👨‍💻1
کوئیز شماره ۴۰: کدوم گزینه یه پارامتر GaussianNB توی کتابخانه Scikit-Learn هست؟
Anonymous Quiz
33%
priors
19%
max_features
37%
n_estimators
12%
learning_rate
😎72🤔2👍1
👨‍🏫 چطور می‌تونیم عملکرد الگوریتم بیز ساده رو بهبود بدیم؟

بعضی از روش‌های متداول برای بهبود عملکرد طبقه‌بندی توی بیز ساده کاربردی نیستن. در ادامه روش‌های موثر برای این الگوریتم رو بررسی می‌کنیم.

🔵حذف ویژگی‌های مرتبط: ویژگی‌های بسیار مرتبط توی مدل دوبار شمارش می‌شن. شمارش دوباره منجر به محاسبه بیش از حد اهمیت این ویژگی‌ها می‌شه و در نتیجه، عملکرد بیز ساده کاهش پیدا می‌کنه.

🔵استفاده از احتمالات لگاریتمی: ضرب اعداد بسیار کوچک، به اعداد کوچکتر منجر می‌شه. برای جلوگیری از کار با اعداد بسیار کوچک، می‌تونیم توی فضای لگاریتم احتمالات کار کنیم.

🔵رفع مشکل احتمالات صفر: اگه داده‌های آموزشی توزیع متفاوتی نسبت به مجموعه تست داشته باشن، عملکرد بیز ساده ضعیف میشه. برای حل این مشکل، میشه از تکنیک Smoothing استفاده کرد.

🔵 آموزش مجدد مدل: آموزش مجدد مدل با داده‌های جدید به شناسایی تغییرات یا انحرافات توی داده‌ها کمک می‌کنه و اطمینان می‌ده که عملکرد مدل با گذشت زمان کاهش پیدا نمی‌کنه.

🔵موازی‌سازی محاسبات احتمال: با توجه به فرض استقلال، احتمالات هر ویژگی به صورت مستقل محاسبه می‌شن. این کار به سرعت بخشیدن به محاسبات و مدیریت راحت‌تر دیتاست‌های بزرگ کمک می‌کنه.

🔵استفاده در دیتاست‌های کوچک: بیز ساده، به دلیل سادگی تابع فرضیه، برای آموزش نیاز به داده کمتری داره و کمتر با مشکل بیش‌برازش (overfitting) مواجه می‌شه.

🔵روش‌های ترکیبی (Ensemble Methods): اگرچه یادگیری ترکیبی عملکرد رو افزایش می‌ده، اما استفاده از بیز ساده توی روش‌های ترکیبی به دلیل واریانس پایین این مدل، خیلی مفید نیست.

🔵 استفاده به عنوان مدل تولیدی: بیز ساده، یه مدل مولده و میشه ازش برای ایجاد دیتاست‌های جدید بر اساس توزیع احتمالی داده‌های موجود استفاده کرد.

#Machine_Learning
#Naive_Bayes

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71👨‍💻1
💡مقایسه بیز ساده با لجستیک رگرسیون برای حل مسائل Classification

🔵بیز ساده بر اساس فرض استقلال بین ویژگی‌ها عمل می‌کنه، که این فرض توی خیلی از مسائل دنیای واقعی صادق نیست. بنابراین، اگه این فرض‌ توی یک مسئله برآورده نشه، مدل رگرسیون لجستیک کمتر دچار سوگیری میشه. در نتیجه زمانی که مقدار زیادی داده آموزشی موجوده، رگرسیون لجستیک عملکرد بهتری نسبت به بیز ساده داره.

🔵پیچیدگی زمانی بیز ساده از مرتبه O(log n) هست، در حالی که رگرسیون لجستیک پیچیدگی زمانی از مرتبه O(n) داره. بنابراین، برای n تعداد ویژگی‌، بیز ساده سریع‌تر همگرا میشه. در مواردی که مجموعه داده آموزشی کوچیکه، بیز ساده عملکرد بهتری نسبت به لجستیک رگرسیون داره.

#Machine_Learning
#Naive_Bayes

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8👌21👨‍💻1
👨‍🏫 کاربردها و مزایای Naive Bayes

🔵 کاربردهای نایو بیز

🔵طبقه‌بندی متن و پردازش زبان طبیعی

نایو بیز به طور گسترده‌ توی طبقه‌بندی متن مثل تشخیص ایمیل‌ اسپم و تجزیه و تحلیل احساسات محتوای شبکه‌های اجتماعی استفاده می‌شه. این روش به دلیل توانایی‌اش توی کار با ویژگی‌های متنی که اکثرا بسیار بزرگ و پراکنده هستن، محبوبه.

🔵تشخیص بیماری‌ها و تصمیم‌گیری‌های پزشکی

توی حوزه پزشکی، نایو بیز می‌تونه برای تشخیص بیماری‌ها و کمک به تصمیم‌گیری‌های بالینی استفاده شه. این مدل با در نظر گرفتن ویژگی‌های مختلف بیمار، پیش‌بینی‌های دقیقی ارائه می‌ده.

🔵سیستم‌های توصیه‌گر

نایو بیز توی ساخت سیستم‌های توصیه‌گر برای پیشنهاد محصولات یا خدمات به کاربران بر اساس علایق و رفتارهای گذشته‌شون به کار می‌ره. سرعت و کارایی بالا و سادگی مدل از دلایل دیگه استفاده نایو بیز توی سیستم‌های توصیه‌گره.

🔵 مزایای نایو بیز

🔵سادگی و سرعت بالا

یکی از بزرگ‌ترین مزایای نایو بیز، سادگی و سرعت آموزش و پیش‌بینیش هست. این مدل به راحتی قابل پیاده‌سازیه و به منابع کمتری نسبت به سایر مدل‌های پیچیده‌تر نیاز داره.

🔵کارایی خوب با داده‌های بزرگ

نایو بیز توی مواجهه با مجموعه‌های داده‌ی بزرگ و دارای ابعاد بالا عملکرد خوبی داره. این قابلیتش اونو را برای کاربردهایی مثل طبقه‌بندی متن و تجزیه و تحلیل داده‌های بزرگ مفید می‌کنه.

🔵مقاومت در برابر داده‌های گم‌شده

نایو بیز می‌تونه توی شرایطی که بخشی از داده‌ها گم شده یا ناقصه، همچنان عملکرد خوبی داشته باشه. این ویژگی اونو برای کاربردهای دنیای واقعی که اغلب با داده‌های ناکامل مواجه هستیم، ایده‌آل می‌کنه.

🔵انعطاف‌پذیری

نایو بیز به خوبی می‌تونه با تغییرات توی مجموعه داده‌ها سازگار شه. این انعطاف‌پذیری به محققان و مهندسان اجازه می‌ده که مدل‌ها رو به سرعت به‌روزرسانی کنن.

🔵نیاز کم به داده‌های آموزشی، توانایی مدیریت داده‌های پیوسته و گسسته، مقیاس‌پذیری و عدم حساسیت به ویژگی‌های نامربوط از بقیه مزایای این الگوریتم هستن و نایو بیز رو گزینه‌ای قدرتمند و انعطاف‌پذیر برای حل مسائل مختلف می‌کنن.

#Machine_Learning
#Naive_Bayes

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61👌1👨‍💻1
کوئیز شماره ۴۲: چطور میشه توضیح داد که نایو بیز تا چه حد در برابر ویژگی‌های نامربوط مقاومه و این موضوع چه تأثیری روی عملکرد کلیش داره؟
Anonymous Quiz
26%
مقاومت کامل، بدون تأثیر منفی بر دقت
46%
مقاومت متوسط، با کاهش جزئی در دقت
14%
حساسیت بالا، با کاهش قابل توجه در دقت
14%
حساسیت نسبی، با تغییرات پیچیده در عملکرد
😎6👌21
💡تفاوت بین طبقه‌بندی کننده‌های مولد و تشخیص دهنده چیه؟ نمونه‌هایی از هرکدوم، کدوم الگوریتم‌ها میشن؟

🔵طبقه‌بندی‌کننده‌های مولد (Generative Classifier) به صورت صریح توزیع واقعی هر کلاس رو مدل می‌کنن. این مدل توزیع احتمال مشترک رو که به صورت P(x, y) = P(y) * P(x|y) هست، یاد می‌گیره. هر دو P(y) و P(x|y) رو میشه از داده‌ها با محاسبه فراوانی کلاس‌ها به دست آورد. بعضی از نمونه‌های مدل‌های مولد عبارتند از:
- نایو بیز
- شبکه‌های بیزی
- میدان‌های تصادفی مارکوف

🔵طبقه‌بندی‌کننده‌های تشخیص دهنده (Discriminative Classifier) مرز تصمیم بین کلاس‌ها رو با یادگیری توزیع احتمال شرطی P(y|x) از مجموعه داده‌ها مدل می‌کنن. بعضی از نمونه‌های این نوع طبقه‌بندی کننده‌ها عبارتند از:
- رگرسیون لجستیک
- ماشین بردار پشتیبان
- شبکه‌های عصبی سنتی
- KNN

#Machine_Learning
#Naive_Bayes

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌81👍1👨‍💻1
👨‍🏫 بررسی بیز ساده در sklearn با یک مثال واقعی

توی این کد انواع مختلف طبقه‌بندی‌کننده‌های نایو بایز رو روی یک دیتاست پیاده سازی و عملکرد‌ها رو مقایسه کردیم. این کد برای هر مدل بیز ساده، دقت (accuracy) رو محاسبه می‌کنه و بهترین مدل رو بر اساس بالاترین دقت انتخاب می‌کنه.

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.naive_bayes import GaussianNB, MultinomialNB, BernoulliNB
from sklearn.metrics import accuracy_score

data = load_iris()
X = data.data
y = data.target

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

models = {
"GaussianNB": GaussianNB(),
"MultinomialNB": MultinomialNB(),
"BernoulliNB": BernoulliNB()
}

for name, model in models.items():
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"{name} Accuracy: {accuracy}")

best_model = max(models, key=lambda k: models[k].score(X_test, y_test))
print(f"Best Model: {best_model}")

🔜GaussianNB Accuracy: 0.97
MultinomialNB Accuracy: 0.95
BernoulliNB Accuracy: 0.28
Best Model: GaussianNB

🔵از این خروجی نتیجه می‌گیریم که GaussianNB با فرض توزیع نرمال برای ویژگی‌های دیتاست، یک فرض مناسب بوده. این طبقه‌بندی‌کننده معمولاً توی داده‌های پیوسته که توزیع نرمال دارن، خوب عمل می‌کنه. MultinomialNB بیشتر برای داده‌هایی که ویژگی‌هاشون به صورت شمارشی هستن، مثل تعداد کلمات یک متن، طراحی شده. علی‌رغم اینکه دیتاست ایریس ویژگی‌های پیوسته داره، این مدل همچنان عملکرد خوبی نشون داده. BernoulliNB با دقت بسیار پایین عملکرد ضعیفی داشته چون این مدل برای داده‌های دودویی (مثل وجود یا عدم وجود چیزی یا 0 و 1) مناسبه. دیتاست ایریس ویژگی‌های پیوسته داره و این مدل برای چنین نوع داده‌هایی مناسب نیست.

#Machine_Learning
#Naive_Bayes

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74👌2👏1
کوئیز شماره ۴۳: کدوم یک از پارامترهای زیر در مدلی که از sklearn.naive_bayes import GaussianNB ساخته میشه، وجود نداره؟
Anonymous Quiz
26%
var_smoothing
20%
priors
31%
alpha
23%
class_prior
😎7👍3🤔1
💡مهم‌ترین پارامترهای انواع مدل‌های بیز ساده در sklearn

🔵 GaussianNB

🔵پارامتر priors یک آرایه از احتمالات قبلی برای هر کلاسه. اگه این مقدار تعیین نشه، GaussianNB احتمالات رو بر اساس توزیع نرمال محاسبه می‌کنه.

🔵پارامتر var_smoothing برای جلوگیری از صفر شدن واریانس‌ها استفاده می‌شه و مقدار کمی به واریانس‌ها اضافه می‌کنه. این مقدار معمولاً بین 0.01 تا 0.1 تعیین میشه.

🔵 MultinomialNB

🔵پارامتر alpha مقداری به همه ویژگی‌ها اضافه می‌کنه تا جلوی وابستگی شدید به داده‌های خاص گرفته شه.

🔵پارامتر fit_prior تعیین می‌کنه که آیا احتمالات قبلی باید از داده‌ها یاد گرفته شه یا نه. اگر false باشه، توزیع یکنواخت برای احتمالات قبلی استفاده می‌شه. مقدار پیش فرض این پارامتر True هست.

🔵پارامتر class_prior مشابه با پارامتر priors توی GaussianNB، احتمالات قبلی برای هر کلاس رو تعیین می‌کنه.

🔵 BernoulliNB

🔵پارامتر binarize یک آستانه تعیین می‌کنه که بر اساسش ویژگی‌ها به 0 یا 1 تبدیل می‌شن و برای داده‌هایی که به صورت دودویی نیستن ولی می‌خوایم به این شکل تبدیل شن، مفیده.

🔵پارامترهای alpha ،fit_prior و class_prior توی این مدل مشابه با نحوه عملکردشون توی مدل MultinomialNB، کاربرد دارن.

#Machine_Learning
#Naive_Bayes

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10👌21👏1
پست‌های هفته‌ای که گذشت رو این‌جا پیدا کنین!

🔺 آموزشی

🔵تعریف و انواع بیز ساده
👉🔗 https://t.iss.one/data_ml/137

🔵Multinomial & Bernoulli Naive Bayes
https://t.iss.one/data_ml/139

🔵Gaussian Naive Bayes
👉🔗 https://t.iss.one/data_ml/142

🔵نحوه بهبود عملکرد الگوریتم بیز ساده
👉🔗 https://t.iss.one/data_ml/144

🔵کاربردها و مزایای Naive Bayes
👉🔗 https://t.iss.one/data_ml/147

🔵بررسی بیز ساده در sklearn با یک مثال واقعی
👉🔗 https://t.iss.one/data_ml/150


🔺 کوئیز

🔵کوئیز شماره ۳۹: نحوه محاسبه احتمال در MultinomialNB
👉🔗 https://t.iss.one/data_ml/140

🔵کوئیز شماره ۴۰: پارامتر GaussianNB در sklearn
👉🔗 https://t.iss.one/data_ml/143

🔵کوئیز شماره ۴۱: تکنیک Laplace Smoothing
👉🔗 https://t.iss.one/data_ml/145

🔵کوئیز شماره ۴۲: میزان مقاوت نایو بیز در برابر ویژگی‌های نامربوط
👉🔗 https://t.iss.one/data_ml/148

🔵کوئیز شماره ۴۳: پارامتر GaussianNB در sklearn پارت ۲
👉🔗 https://t.iss.one/data_ml/151

🔺 نکته

🔵مدل‌هایی که فقط Classification انجام میدن
👉🔗 https://t.iss.one/data_ml/138

🔵مقایسه انواع روش‌های Naive Bayes
👉🔗 https://t.iss.one/data_ml/141

🔵مقایسه بیز ساده با لجستیک رگرسیون
👉🔗 https://t.iss.one/data_ml/146

🔵تفاوت بین طبقه‌بندی کننده‌های مولد و تشخیص دهنده
👉🔗 https://t.iss.one/data_ml/149

🔵مهم‌ترین پارامترهای انواع مدل‌های بیز ساده در sklearn
👉🔗 https://t.iss.one/data_ml/152

#Weekend
#Machine_Learning
#Naive_Bayes

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👏61🔥1
Audio
🟡 توضیحات وبینار رایگان بررسی ماشین لرنینگ برای هر موضوع

🔺 سرفصل‌ها

🔵معرفی تسک‌های قابل اجرا با ML
🔵معرفی مدل‌های کلاسیک
🔵معرفی معماری‌های شبکه عصبی مصنوعی
🔵روش‌های ارزیابی عملکرد مدل
🔵بررسی به روزترین روش‌های ML
🔵نحوه و ترتیب یادگیری مدل‌های معرفی شده

📆 یکشنبه، ۱۷ دی ساعت ۱۹

🟢 رایگان ثبت‌نام کنین:‌
👉📎 https://ctdrs.ir/cr15198

@DSLanders | دی‌اس‌لندرز
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71🔥1
👩‍🎓 برنامه آموزشی هفته: الگوریم K نزدیک ترین همسایه یا KNN

🟠شنبه: تعریف KNN و بررسی نقش K

🔵یک‌شنبه: پیچیدگی محاسباتی KNN

🟢دوشنبه: بررسی ساختار K-Dimensional Trees در KNN

🔴سه‌شنبه: چالش‌ها و معایب KNN

🟠چهارشنبه: کاربردها و مزایا KNN

🔵پنج‌شنبه: KNN در Scikit Learn

🟢جمعه: جمع بندی

#Machine_Learning
#KNN

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12👌2👨‍💻1
👨‍🏫 تعریف KNN و بررسی نقش K

الگوریتم یادگیری باناظر K-Nearest Neighbor(KNN) یا K نزدیک‌ترین همسایه، برای حل مسائل طبقه‌بندی و رگرسیون به کار می‌ره. این الگوریتم بر اساس این فرضیه‌ست که داده‌های مشابه توی فضای ویژگی نزدیک به هم دیگه قرار دارن.

🔵 تعریف KNN

الگوریتم KNN به دلیل غیر پارامتریک بودنش، یعنی اینکه هیچ فرضی راجع به توزیع داده‌ها نمی‌کنه (بر خلاف الگوریتم‌های دیگه مثل GaussianNB که توزیع نرمال داده‌ها رو فرض می‌کنن)، توی مسائل واقعی بسیار قابل استفاده‌ست. KNN یه الگوریتم مبتنی بر برداره و نزدیک‌ترین همسایه‌ها بر اساس روش‌های محاسبه فاصله، مثل فاصله اقلیدسی انتخاب می‌شن.

این الگوریتم می‌تونه هم با داده‌های عددی و هم با داده‌های Categorical کار کنه، که این ویژگی KNN رو به گزینه‌ای انعطاف‌پذیر برای انواع مختلف مجموعه‌های داده تبدیل می‌کنه. K-NN نسبت به بقیه الگوریتم‌ها به نویز و داده‌های خارج از محدوده (outliers) کمتر حساسه.

🔵 بینش پشت KNN

توی تصویر، یه نمودار دو بعدی و داده‌هایی با دو طبقه‌بندی نشون داده شدن. دسته اول با رنگ قرمز، دسته دوم رنگ آبی و یه داده جدید (new data point) که هنوز به هیچ کدوم از دسته‌ها اختصاص داده نشده وجود داره.

براساس الگوریتم KNN، برای طبقه‌بندی داده جدید، ما به دنبال نزدیک‌ترین همسایگان به این نقطه توی فضای ویژگی هستیم. برای مثال، اگه K رو برابر 3 در نظر بگیریم، سه تا از نزدیک‌ترین همسایه‌ها به نقطه جدید رو در نظر می‌گیریم و براساس فاصله این سه همسایه، نقطه جدید رو طبقه‌بندی می‌کنیم.

🔵 نقش K در KNN

مقدار K توی K-NN بسیار مهمه و تعداد همسایه‌ها رو تعیین می‌کنه و انتخابش باید بر اساس داده‌های ورودی صورت بگیره. اگه داده‌های ورودی دارای نویز یا outliers بالایی باشن، انتخاب مقدار بالاتر برای K بهتره. توصیه میشه مقدار K به صورت عدد فرد انتخاب شه و روش‌های اعتبارسنجی متقابل توی انتخاب بهترین مقدار K موثرن.

#Machine_Learning
#KNN

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
11👌2👨‍💻1
کوئیز شماره ۴۴: الگوریتم _______ روش یادگیری تنبل (lazy learner) داره. چون تابع تمیزدهنده (Discriminative function) رو از داده‌های آموزشی یادنمی‌گیره.
Anonymous Quiz
71%
KNN
29%
K-means
👍6😎4👏1
💡در K-NN چطور مقدار بهینه انتخاب میشه؟

هیچ قانون مشخصی برای انتخاب یک k استاندارد وجود نداره. این مقدار بسته به دیتاست متفاوته اما به طور کلی، هدف اصلی حفظ k در حدیه که:

- کوچک باشه تا نمونه‌های سایر کلاس‌ها رو حذف کنه اما
- به اندازه کافی بزرگ باشه تا هرگونه نویز توی داده‌ها رو به حداقل برسونه.

یک راه برای جستجوی مقدار بهینه این پارامتر، Elbow method هست که شامل ایجاد یک حلقه for هست که مدل‌های مختلف KNN رو با مقادیر k مختلف آموزش می‌ده، و بعد از مدلی که بالاترین دقت رو داره، استفاده می‌کنه.

#Machine_Learning
#KNN

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍93👨‍💻1
👨‍🏫 پیچیدگی محاسباتی KNN

توی K نزدیک‌ترین همسایه، بیشترین هزینه محاسباتی برای فاز پیش‌بینی هست، جایی که الگوریتم باید K نزدیک‌ترین همسایه‌ به یک نقطه داده جدید رو شناسایی کنه.

الگوریتم K-NN باید برای هر نقطه‌ای که مورد بررسی قرار می‌گیره، فاصله‌اش رو با تمام n نقطه دیگه داده‌ها حساب کنه و برای این محاسبه، باید از تمام d ویژگی‌های هر نقطه عبور کنه (O(n * d))، در نتیجه پیچیدگی محاسباتی زیادی داره.

🔵 عوامل پیچیدگی محاسباتی KNN

🔵تعداد نمونه‌ها (N): با افزایش تعداد داده‌ها، زمان لازم برای پیدا کردن K همسایه نزدیک بیشتر میشه.

🔵تعداد ویژگی‌ها (D): با افزایش تعداد ویژگی‌ها، محاسبه فاصله بین نمونه‌ها پیچیده‌تر و زمان‌برتر میشه.

🔵مقدار K: انتخاب K تاثیر زیادی روی دقت و پیچیدگی محاسباتی داره. مقدار بزرگ‌تر K می‌تونه به کاهش نویز کمک کنه اما ممکنه منجر به ایجاد مدل‌های کم دقت‌تر میشه.

🔵 بهینه‌سازی پیچیدگی محاسباتی

🔵استفاده از الگوریتم‌های KD-Tree یا Ball Tree: این روش‌ها به کاهش تعداد محاسبات لازم برای پیدا کردن K همسایه نزدیک کمک می‌کنن.

🔵کاهش ابعاد: استفاده از تکنیک‌های کاهش ابعاد مثل PCA (تحلیل مؤلفه‌های اصلی) می‌تونه تعداد ویژگی‌های داده‌ها رو کاهش بده و در نتیجه زمان محاسباتی رو کم کنه.

🔵انتخاب هوشمندانه‌ی K: استفاده از روش‌های مختلف برای تعیین بهترین مقدار K می‌تونه به بهبود دقت و کاهش پیچیدگی محاسباتی کمک کنه.

🔵توی داده‌های بزرگ و پیچیده، K نزدیک‌ترین همسایه می‌تونه به شدت کند عمل کنه. توی این موارد، استفاده از تکنیک‌های پردازش موازی و توزیع‌شده، مانند Apache Spark یا Hadoop، به افزایش کارایی کمک می‌کنه.

#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 و KNN

الگوریتم k-Means یه الگوریتم خوشه‌بندیه که سعی می‌کنه مجموعه‌ای از نقاط رو به k مجموعه تقسیم کنه؛ به طوری که نقاط هر خوشه نزدیک به هم باشن و بدون نظارته.

الگوریتم KNN یه الگوریتم طبقه‌بندی (یا رگرسیون) هست که برای تعیین طبقه‌بندی یه نقطه، طبقه‌بندی k نزدیک‌ترین نقطه رو ترکیب می‌کنه. باناظره چون سعی می‌کنه یه نقطه رو بر اساس طبقه‌بندی شناخته شده سایر نقاط طبقه‌بندی کنه.

#Machine_Learning
#KNN

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌91👏1
👨‍🏫 بررسی ساختار K-Dimensional Trees در KNN

درخت 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)

🔜KNN prediction for the new point: [0]
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👨‍💻21👍1