کرنل یک تابعه که اندازهگیری شباهت (یا همبستگی) بین دو نقطه داده در فضای ورودی رو فراهم میکنه. به زبان ساده، کرنل تکنیکیه برای تبدیل فضای ویژگیهای غیرخطی به فضایی که در اون جداسازی خطی امکانپذیره.
کرنل با محاسبه نقطهای (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
ماشین بردار پشتیبان ساختاریافته (Structured SVM) یک توسعه از مدلهای SVM استاندارده که برای پیشبینی خروجیهایی با ساختارهای پیچیده مثل دنبالهها، درختها یا گرافها به کار میره. به جای پیشبینی برچسبهای ساده، SVM ساختاریافته میتونه برای حل مسائلی استفاده شه که در اونها خروجیها دارای وابستگیهای درونی هستن.
برای مثال، در تشخیص دستور زبان در پردازش زبان طبیعی یا در تشخیص اشیاء در پردازش تصویر که هر عنصر در خروجی به عناصر دیگه وابستهست. SVM ساختاریافته از یک تابع هزینه استفاده میکنه که اختلاف بین خروجی پیشبینی شده و خروجی واقعی رو بر اساس ساختارشون اندازهگیری میکنه. در نتیجه امکان تعمیم مدل رو به مسائل پیچیدهتر از دستهبندی استاندارد فراهم میکنه.
#Machine_Learning
#SVM
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1🔥1
#Weekend
#Machine_Learning
#SVM
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥1
#Machine_Learning
#Decision_Tree
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🔥1
Audio
@DSLanders | دیاسلندرز
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥1
درخت تصمیم به عنوان یکی از قدرتمندترین الگوریتمهای یادگیری نظارتشده، در هر دو زمینه Classification و Regression کاربرد داره.
این الگوریتم برای تصمیمگیریها و پیشبینیها از ساختار درخت مانند استفاده میکنه و در الگوریتمهای پیچیدهتر مثل جنگل تصادفی برای آموزش روی زیرمجموعههای مختلف دادههای آموزشی استفاده میشه.
#Machine_Learning
#Decision_Tree
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🔥1
❓کوئیز شماره ۵۶: کدامیک از موارد زیر یک مثال از انواع هرس کردن در درختان تصمیم نیست؟
Anonymous Quiz
16%
هرس قبل از برازش: متوقف کردن رشد درخت قبل از رسیدن به حداکثر عمق ممکن.
19%
هرس پس از برازش: حذف بعضی از شاخههای درخت بعد از ایجاد کاملشون.
32%
هرس تصادفی: انتخاب شاخههایی برای حذف به صورت تصادفی.
32%
هرس مبتنی بر کاهش پیچیدگی هزینه: حذف شاخهها بر اساس معیارهای آماری مثل اعتبارسنجی متقابل.
😎7🤔1👌1
مفهوم Tree Bagging که به عنوان Bootstrap Aggregating هم شناخته میشه، یک روش یادگیری جمعی هست که در اون چندین مدل درخت تصمیم به طور مستقل از هم روی زیرمجموعههای مختلفی از دادهها آموزش میبینن و بعد نتایجشون ترکیب میشه.
هدف از این روش بهبود عملکرد و کاهش خطای مدل با کاهش واریانس پیشبینیهاست. Bagging به خصوص در جلوگیری از Overfitting موثره، چون با ترکیب پیشبینیهای چندین درخت، حساسیت مدل نسبت به نوسانات تصادفی دادههای آموزشی کاهش پیدا میکنه. جنگل تصادفی (Random Forest) یکی از معروفترین الگوریتمهاییه که از Tree Bagging استفاده میکنه.
#Machine_Learning
#Decision_Tree
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2👌2
یکی از مفاهیم کلیدی در طراحی و بهینهسازی درختان تصمیم، محاسبه و استفاده از "سود" (Gain) هست. سود در الگوریتم درخت تصمیم به معنی کاهش ناخالصیه که در نتیجه تقسیم یک گره بر اساس یک ویژگی خاص به دست میاد.
محاسبه بهره اطلاعاتی که از طریق تقسیم دادهها بر مبنای ویژگیهای خاص به دست میآید، به ما اجازه میده تا درک کنیم چقدر این تقسیم میتونه مفید باشه. این مقدار، که به عنوان بهره اطلاعاتی شناخته میشه، به صورت اختلاف بین انتروپی گره والد و میانگین وزندار انتروپیهای گرههای فرزندی که از تقسیم حاصل میشن، تعریف میشه.
بهره اطلاعاتی = انتروپی(والد) - [میانگین وزندار] * انتروپی(فرزندان)
که در این فرمول:
هر وقت مقدار بهره اطلاعاتی که از تقسیم دادهها بر اساس یک ویژگی خاص به دست میآید بیشتر باشه، نشون میده که ویژگی مورد نظر اطلاعات بیشتری رو برای تمایز قرار دادن بین دستههای مختلف فراهم میکنه.
به عبارت دیگه، ویژگیای که بهره اطلاعاتی بالاتری داره، در تقسیمبندی دادهها و ایجاد شاخههای مشخصتر و دقیقتر در درخت تصمیم، مؤثرتره. این موضوع به بهبود کیفیت مدلسازی و افزایش دقت پیشبینیهای مدل کمک میکنه.
برای محاسبه ناخالصی از معیارهای مختلفی استفاده میشه که شامل Entropy و شاخص Gini هست. این معیارها به ما کمک میکنن تا میزان ناخالصی (یا همگن نبودن) دادهها در یک گره از درخت رو محاسبه کنیم. هر چقدر دادهها ناهمگنتر باشن (یعنی توزیع کلاسها یکنواخت نباشه)، انتروپی بیشتره.
زمان ساخت یک درخت تصمیم، برای انتخاب ویژگیهایی که بر اساس اونها تقسیمبندی انجام میشه، از معیار سود استفاده میکنیم. ویژگیای که بیشترین سود رو داره (یعنی بیشترین کاهش در ناخالصی رو به دنبال داره) به عنوان ویژگی برای تقسیم در نظر گرفته میشه. این فرایند به صورت بازگشتی ادامه داره تا زمانی که تمامی دادهها به خوبی دستهبندی شن یا شرایط خاصی برای توقف فرایند برآورده شه.
#Machine_Learning
#Decision_Tree
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥1
❓کوئیز شماره ۵۷: اگه در محاسبه بهره اطلاعاتی برای یک گره در درخت تصمیم، انتروپی گرههای فرزندی بعد از تقسیم به شدت کاهش پیدا کنن، این نتیجه به چه معنیه؟
Anonymous Quiz
15%
ویژگی استفاده شده برای تقسیم ممکنه بیش از حد تخصصی باشه.
35%
ویژگی استفاده شده برای تقسیم بسیار کارآمده.
46%
تقسیم احتمالا به بیشبرازش منجر شده.
4%
تقسیم هیچ تأثیری روی ناخالصی دادهها نداره.
😎6🤔1👌1
سود اطلاعاتی، که با عنوان "Information Gain" شناخته میشه، میزان بهبود پیشبینیهایی هست که از انتخاب یک ویژگی خاص در یک گره از درخت تصمیم به دست میاد و نشون میده که با این انتخاب چقدر ناخالصی کاهش پیدا کرده. اما این شاخص گاهی اوقات به ویژگیهایی که تعداد مقادیر بالا دارن سوگیری میکنه، حتی اگر این ویژگیها اطلاعات چندان مفیدی برای مدل فراهم نکنن.
نسبت سود اطلاعاتی که بهش "Information Gain Ratio" گفته میشه، برای حل این مشکل توسعه داده شده. این معیار، سود اطلاعاتی رو تعدیل میکنه به طوری که تاثیر تعداد مقادیر ممکن هر ویژگی رو در نظر میگیره و از این طریق، گرایش به انتخاب ویژگیهای با تعداد زیاد مقادیر رو کاهش میده. در نتیجه نسبت سود اطلاعاتی باعث میشه که انتخاب ویژگیها در مدل سازی بیشتر بر اساس کارایی واقعیشون در تقسیمبندی دادهها باشه و کمتر تحت تاثیر تعداد زیاد مقادیر ویژگی قرار بگیره.
#Machine_Learning
#Decision_Tree
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👨💻2❤1