#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
❓کوئیز شماره ۵۳: در توابع هسته در SVM، مسئله دوگانه (dual problem) چیه؟
Anonymous Quiz
35%
مسئلهای که به دنبال حداکثر کردن مارجین بین کلاسهاست.
24%
مسئلهای معادل با مسئله SVM اصلی اما با فرمی راحتتر برای بهینهسازی.
24%
مسئلهای که به دنبال کمینه کردن خطاهای دستهبندیه.
18%
مسئلهای که به دنبال کمینه کردن پیچیدگی محاسباتی SVM هست.
😎6👍2🤔2
پارامتر C در کتابخانه sklearn نقش مهمی برای تعیین حاشیه و نحوه در نظر گرفتن نویز دادههاست. در کد زیر پارامتر C به عنوان penalty در نظر گرفته شده. Kernel در اینجا linear انتخاب شده چون در حال کار با حاشیههای خطی هستیم. تصویر پست نتیجه اجرای کد زیره:
import matplotlib.pyplot as plt
import numpy as np
from sklearn import svm
np.random.seed(0)
X = np.r_[np.random.randn(20, 2) - [2, 2], np.random.randn(20, 2) + [2, 2]]
Y = [0] * 20 + [1] * 20
fig, axes = plt.subplots(1, 2, figsize=(10, 5))
for i, (name, penalty) in enumerate([("unreg", 1), ("reg", 0.05)]):
clf = svm.SVC(kernel="linear", C=penalty)
clf.fit(X, Y)
w = clf.coef_[0]
a = -w[0] / w[1]
xx = np.linspace(-5, 5)
yy = a * xx - (clf.intercept_[0]) / w[1]
margin = 1 / np.sqrt(np.sum(clf.coef_**2))
yy_down = yy - np.sqrt(1 + a**2) * margin
yy_up = yy + np.sqrt(1 + a**2) * margin
axes[i].plot(xx, yy, "k-")
axes[i].plot(xx, yy_down, "k--")
axes[i].plot(xx, yy_up, "k--")
axes[i].scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], s=80, facecolors="none", zorder=10, edgecolors="k")
axes[i].scatter(X[:, 0], X[:, 1], c=Y, zorder=10, edgecolors="k")
axes[i].set_xlim(-4.8, 4.2)
axes[i].set_ylim(-6, 6)
axes[i].set_title(f"C = {penalty}")
plt.tight_layout()
plt.show()
#Machine_Learning
#SVM
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2👨💻2
❓کوئیز شماره ۵۴: در یک مسئله طبقهبندی با دادههای نامتعادل، استفاده از حاشیه در SVM چطور میتونه به بهبود عملکرد مدل کمک کنه؟
Anonymous Quiz
32%
حاشیه میتونه با تنظیم نادیده گرفتن کلاسهای اقلیت، به متعادلسازی تأثیر کلاسها کمک کنه.
48%
با تنظیم پارامتر class_weight میشه حاشیه رو تعدیل کرد تا کلاسهای اقلیت به طور مناسب نمایندگی شن.
4%
حاشیهها تنها در مسائل طبقهبندی متعادل مهم هستن و در مسائل نامتعادل تأثیری ندارن.
16%
استفاده از حاشیه باعث میشه که مدل کاملاً روی کلاسهای اکثریت تمرکز کنه و اقلیتها رو نادیده بگیره.
👍5😎4❤1
قضیه مرسر (Mercer's Theorem) یک نتیجه نظری در ریاضیاته که اساس کار هستهها (kernels) در SVM رو تشکیل میده. قضیه مرسر میگه اگه یک تابع هستهای خاصیت خوبی مثل مثبت بودن و تقارن داشته باشه، میتونیم ازش به عنوان یک ابزار برای مقایسه نقاط داده در یک فضای پیچیده و بزرگتر استفاده کنیم.
در SVM از قضیه مرسر برای تبدیل دادهها به فضای ویژگی با بعد بالاتر استفاده میشه تا در اون فضا امکان جداسازی خطی دادهها فراهم شه، حتی اگه دادهها در فضای ورودی اصلی به صورت خطی جدا نشدنی باشن.
#Machine_Learning
#SVM
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👌3🔥1
در SVM، هدف پیدا کردن یک صفحه (یا هایپرپلین) هست که دادههای دو کلاس مختلف رو از هم جدا کنه. کرنل یک تابعه که برای محاسبه شباهت بین دو نقطه در فضای ویژگی استفاده میشه. کرنلها به ما این امکان رو میدن که مسائل غیر خطی رو با تبدیل دادهها به یک فضای ویژگی با ابعاد بیشتر به صورت خطی قابل جداسازی کنیم.
کتابخانه sklearn چندین کرنل مختلف رو پیادهسازی میکنه:
هر کرنل پارامترهای خاص خود را دارد که باید به درستی تنظیم شن تا مدل به خوبی عمل کنه.
C
یا پارامتر تنظیم، که نشوندهنده میزان اهمیت طبقهبندی نادرسته.-
degree
: درجه کرنل چندجملهای-
gamma
: تعیینکننده میزان تاثیر یک نمونه واحد-
coef0
: مستقل از کرنل، که در تابع کرنل چندجملهای استفاده میشهgamma
در اینجا هم مثل کرنل چندجملهای، تعیینکننده میزان تاثیر یک نمونه واحده.gamma
و coef0
که براساس تعریف گفته شده عمل میکنن.انتخاب کرنل و تنظیم پارامترهاش بر اساس نوع دادهها و مسئلهای که میخوایم حل کنیم، متفاوته. به طور کلی، میتونیم از روشهای ارزیابی متقاطع (Cross Validation) و جستجوی شبکهای (Grid Search) برای پیدا کردن بهترین ترکیب کرنل و پارامترهاش استفاده کنیم. مثال کد SVM با کرنل RBF در sklearn:
from sklearn.svm import SVC
model = SVC(kernel='rbf', gamma=0.1, C=1)
model.fit(X_train, y_train)
#Machine_Learning
#SVM
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1👨💻1
❓کوئیز شماره ۵۵: در کرنل polynomial کتابخانه sklearn، پارامتر coef0 چه نقشی داره؟
Anonymous Quiz
15%
میزان تأثیر نمونههای دور رو تعیین میکنه.
30%
درجه کرنل چندجملهای رو تنظیم میکنه.
44%
ضریب جمله ثابت در تابع کرنل رو تنظیم میکنه.
11%
میزان رگولاریزاسیون مدل رو تنظیم میکنه.
❤5👍2👏2🤔1