#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
❓کوئیز شماره ۵۰: در SVM، تابع هسته (Kernel) چه نقشی برای تعیین مرز تصمیم داره؟
Anonymous Quiz
68%
تبدیل دادهها به فضای ویژگی با بعد بالاتر برای ایجاد قابلیت جداسازی غیرخطی.
5%
کاهش پیچیدگی محاسباتی در مدلهای با حجم دادههای زیاد.
18%
افزایش دقت طبقهبندی در دادههای با پیچیدگی بالا.
8%
استفاده از تکنیکهای آماری برای بهبود مدلسازی دادههای خطی و غیرخطی
😎6👍3❤1🤔1👌1
ماشین بردار پشتیبان (SVM) میتونه فاصله بین نمونههای آزمایش و مرز تصمیم رو به عنوان خروجی ارائه بده. این فاصله رو میشه به عنوان یک نمره اطمینان (confidence score) در نظر گرفت، اما نمیشه از این نمره به طور مستقیم برای تبدیل به احتمال کلاس استفاده کرد (احتمالی نشون میده که مدل چقدر مطمئنه که یک داده خاص به یک کلاس مشخص تعلق داره).
اما اگه در زمان ساخت مدل SVM از کتابخانه Scikit-Learn گزینه probability=True تنظیم شه، بعد از آموزش، مدل احتمالات رو با استفاده از رگرسیون لجستیک روی امتیازات SVM تنظیم میکنه.
با استفاده از این پارامتر، میشه ()predict_proba و ()predict_log_proba رو به مدل SVM اضافه کرد. این امکان، کاربرد SVM رو توی مسائلی که نیاز به محاسبه احتمال دارن، ممکنه میکنه.
svm = SVC(probability=True, random_state=42)
svm.fit(X_train, y_train)
probabilities = svm.predict_proba(X_test)
#Machine_Learning
#SVM
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3👨💻1
الگوریتم Support Vector Machine برای تشخیص الگوها در دادههای پیچیده و ایجاد حد تصمیم برای جدا کردن دستههای مختلف ایجاد شده. یکی از پارامترهای SVM، حاشیه (Margin) هست که نقش مهمی در کارایی این الگوریتم داره.
#Machine_Learning
#SVM
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8👌3👨💻1
❓کوئیز شماره ۵۱: در SVM، ما به دنبال به حداکثر رساندن Margin بین نقاط داده و hyperplane هستیم. تابع هزینهای که به حداکثر رساندن Margin کمک میکنه ______ نام داره.
Anonymous Quiz
22%
Categorical cross-entropy loss
27%
Binary cross-entropy loss
27%
hinge loss
24%
هیچ کدام
😎8👍2👏1
متغیر Slack در SVM به مدل این امکان رو میده که دادههای آموزشی رو بهتر یاد بگیره، حتی اگه دستهبندی کاملاً جداپذیر نباشه. زمانی که دادهها در فضای ویژگی جدا ناپذیرن، متغیرهای Slack به مدل اجازه میدن که یک تعادل بین دقت طبقهبندی و خطای مجاز داشته باشه. در نتیجه اگه یک نمونه به اشتباه در دسته نادرست قرار بگیره، مقدار متغیر Slack افزایش پیدا میکنه. این متغیرها به عبارت دیگه نشوندهنده انعطاف مدل در مقابل دادههای پیچیده و نویزی هستن.
#Machine_Learning
#SVM
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1👨💻1
کرنل یک تابعه که اندازهگیری شباهت (یا همبستگی) بین دو نقطه داده در فضای ورودی رو فراهم میکنه. به زبان ساده، کرنل تکنیکیه برای تبدیل فضای ویژگیهای غیرخطی به فضایی که در اون جداسازی خطی امکانپذیره.
کرنل با محاسبه نقطهای (dot product) بین دو نقطه داده در فضای ویژگی، به ما کمک میکنه تا درک کنیم که چطور دادههای مختلف نسبت به هم قرار گرفتن. این کار باعث میشه تا الگوریتم SVM بتونه مرزهای تصمیمگیری پیچیدهتری رو در فضاهای با بعد بالاتر تعریف کنه.
انتخاب کرنل مناسب بسیار مهمه چون باید بر اساس نوع دادهها، میزان پیچیدگی مسئله، و محدودیتهای محاسباتی صورت بگیره. برای مثال، کرنل RBF در بسیاری از موارد خوب عمل میکنه اما ممکنه در مواردی که دادهها به شدت پیچیده نیستن، کرنل خطی کافی باشه.
برای بهینهسازی عملکرد SVM، تنظیم پارامترهای کرنل اهمیت بالایی دارد. برای مثال، در کرنل RBF، پارامترهایی مانند
gamma
و C
باید به دقت تنظیم شن تا از overfitting یا underfitting جلوگیری شه. در سطح پیشرفته، کرنلها میتونن برای مسائل خاص مثل شناسایی الگوها، تجزیه و تحلیل متن، و پردازش تصویر به کار برن. همچنین توسعه کرنلهای سفارشی برای موارد خاص هم ممکنه که به درک عمیقتری از دادهها و مسئله نیاز داره.
#Machine_Learning
#SVM
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🤔1👨💻1
❓کوئیز شماره ۵۲: در SVM با استفاده از کرنل RBF، اگر پارامتر gamma بسیار زیاد شه، چه اتفاقی برای مرز تصمیمگیری مدل میافته؟
Anonymous Quiz
18%
مرز تصمیمگیری به صورت Soft Margin تعریف میشه
15%
مرز تصمیمگیری به صورت Soft Margin تعریف میشه
8%
تأثیری نداره
59%
مدل دچار overfitting میشه
👍6😎2🤔1
تابع کرنل به ما امکان میده دادهها رو به فضایی با ابعاد بالاتر تبدیل کنیم، در حالی که ترفند کرنل (Kernel Trick) این تبدیل رو بدون نیاز به محاسبات پیچیده ممکن میکنه.
زمانیکه تعداد ابعاد بالا میره، محاسبات بیش از حد پیچیده و پرهزینه میشن. در چنین مواردی، Kernel Trick به ما امکان میده در فضای ویژگی اصلی عمل کنیم بدون اینکه مختصات دادهها رو در فضای بعدی بالاتر محاسبه کنیم و روشی کارآمدتر و کم هزینهتر برای تبدیل دادهها به فضاهای با بعد بالاتر هست.
#Machine_Learning
#SVM
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8👨💻2👌1
تابع هسته در SVM به ما امکان میده تا دادهها رو از فضای ویژگی اولیه به یک فضای ویژگی با ابعاد بیشتر (معمولاً با بعد بینهایت) تبدیل کنیم، در اینجا به بررسی انواع مختلف توابع Kernel در SVM میپردازیم:
تابع هسته چندجملهای به ما امکان میده تا ویژگیهای دادهها رو در درجات مختلف چندجملهای بررسی کنیم. این تابع برای دادههایی که ویژگیهاشون روابط پیچیده و درجهدار هستن، مناسبه.
این تابع به شکل گستردهای برای مواردی که الگو دقیق و یا توزیع دادهها مشخص نیست، استفاده میشه. این تابع میتونه دادهها رو در فضایی با بعد بینهایت نمایش بده.
تابع هسته سیگموئید معمولاً برای شبکههای عصبی استفاده میشه و میتونه برای تبدیل فضای ویژگی اولیه به فضای ویژگیهایی که شباهت به نورونهای عصبی دارن به کار برده شه.
تابع هسته خطی سادهترین تابع هسته است که فقط میزان شباهت یا همپوشانی دو ویژگی رو اندازهگیری میکنه و برای دادههایی که از قبل قابل جداسازی با یک مرز خطی هستن، مناسبه.
این تابع هسته، مثل تابع سیگموئید، برای شبیهسازی نورونهای عصبی استفاده میشه و میتونه روابط پیچیده بین دادهها رو نشان بده.
برای دادههایی که به صورت گرافیکی هستن، مثل شبکههای اجتماعی یا ساختار مولکولها، میتونه مفید باشه.
برای دادههایی که به صورت رشتههایی از کاراکترها هستن، مثل دیانای یا متن، کاربرد داره.
این تابع هسته برای دادههایی که دارای ساختار درختی هستن، مثل ساختارهای زبانی یا سلسله مراتب فایلها، مناسبه.
انتخاب تابع هسته مناسب برای یک مسئله خاص، میتونه تأثیر زیادی روی کارایی مدل SVM داشته باشه. به همین دلیل، لازمه تا با استفاده از روشهای مختلف اعتبارسنجی مثل اعتبارسنجی متقابل، توابع هسته مختلف رو آزمایش و بهترین تابع رو برای دادهها انتخاب کرد. در تصویر، اعمال چهار نوع اصلی توابع Kernel روی دیتاست Iris قابل مشاهده است.
#Machine_Learning
#SVM
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👌4❤2