👨🏫 ترکیب رگولاریزاسیون L1 و L2
تکنیک ترکیب L1 Regularization و L2 Regularization، که گاهی به عنوان Elastic Net هم شناخته میشه، یه تکنیک پیشرفته در یادگیری ماشینه که برای جلوگیری از overfitting (بیشبرازش) در مدلهای پیچیده استفاده میشه. این روش با اضافه کردن دو جمله جریمه به تابع هزینه مدل، مزایای L1 و L2 رو ترکیب میکنه.
🔵 جملههای جریمه در Elastic Net
در این روش، جمله جریمه شامل دو بخشه: یک بخش براساس L1 (مجموع مطلق ضرایب) و بخش دیگر براساس L2 (مجموع مربع ضرایب). فرمول Elastic Net ترکیبی از این دو جریمهست و به این شکله:
Elastic Net = α * sum(|w|) + β * sum(w²)
در اینجا، α و β ضرایبی هستن که میزان تأثیر L1 و L2 رو تعیین میکنن.
🔵 تأثیر Elastic Net
این تکنیک به حفظ تعادل بین ویژگیهای با اهمیت (که L1 ممکنه حذف کنه) و جلوگیری از وابستگی شدید به ویژگیهای خاص (مشکلی که در L2 ممکنه پیش بیاد) کمک میکنه. همچنین، میتونه در موقعیتهایی که ویژگیها با هم همبستگی دارن، مفید باشه.
🔵 نحوه انتخاب α و β
انتخاب این ضرایب باید با دقت انجام بشه. مقدارهای بالای α ممکنه باعث ایجاد Sparsity (صفر شدن بعضی ضرایب) بشه، در حالی که مقدارهای بالای β ممکنه باعث کاهش تأثیر این Sparsity بشه. تعادل بین این دو بخش برای به دست آوردن بهترین عملکرد مدل ضروریه.
🔵 کاربردها و محدودیتها
این تکنیک در مدلهای پیچیده با تعداد زیادی ویژگی، به ویژه زمانی که تعدادی از ویژگیها با هم همبستگی دارن، کاربرد داره. اما، تنظیم دقیق پارامترها میتونه چالشبرانگیز باشه.
🔵 پارامترهای alpha و l1_ratio در کد Elastic Net
🔵 نقش alpha: این پارامتر میزان کلی جریمهای که به مدل اعمال میشه رو تعیین میکنه. هرچی
انتخاب
🔵 نقش l1_ratio: این پارامتر تعیین میکنه که چه میزان از جریمه کلی به L1 (رگرسیون لاسو) اختصاص داره و چه میزان به L2 (رگرسیون ریج).
با تنظیم
#Machine_Learning
#Regularization
@Data_ML | دیتاساینس و ماشین لرنینگ
تکنیک ترکیب L1 Regularization و L2 Regularization، که گاهی به عنوان Elastic Net هم شناخته میشه، یه تکنیک پیشرفته در یادگیری ماشینه که برای جلوگیری از overfitting (بیشبرازش) در مدلهای پیچیده استفاده میشه. این روش با اضافه کردن دو جمله جریمه به تابع هزینه مدل، مزایای L1 و L2 رو ترکیب میکنه.
در این روش، جمله جریمه شامل دو بخشه: یک بخش براساس L1 (مجموع مطلق ضرایب) و بخش دیگر براساس L2 (مجموع مربع ضرایب). فرمول Elastic Net ترکیبی از این دو جریمهست و به این شکله:
Elastic Net = α * sum(|w|) + β * sum(w²)
در اینجا، α و β ضرایبی هستن که میزان تأثیر L1 و L2 رو تعیین میکنن.
این تکنیک به حفظ تعادل بین ویژگیهای با اهمیت (که L1 ممکنه حذف کنه) و جلوگیری از وابستگی شدید به ویژگیهای خاص (مشکلی که در L2 ممکنه پیش بیاد) کمک میکنه. همچنین، میتونه در موقعیتهایی که ویژگیها با هم همبستگی دارن، مفید باشه.
انتخاب این ضرایب باید با دقت انجام بشه. مقدارهای بالای α ممکنه باعث ایجاد Sparsity (صفر شدن بعضی ضرایب) بشه، در حالی که مقدارهای بالای β ممکنه باعث کاهش تأثیر این Sparsity بشه. تعادل بین این دو بخش برای به دست آوردن بهترین عملکرد مدل ضروریه.
این تکنیک در مدلهای پیچیده با تعداد زیادی ویژگی، به ویژه زمانی که تعدادی از ویژگیها با هم همبستگی دارن، کاربرد داره. اما، تنظیم دقیق پارامترها میتونه چالشبرانگیز باشه.
alpha = 1.0
l1_ratio = 0.5
elastic_net_reg = ElasticNet(alpha=alpha, l1_ratio=l1_ratio, random_state=42)
alpha
بزرگتر باشه، جریمه بیشتری به ضرایب اعمال میشه و بنابراین، مدل سادهتر میشه. انتخاب
alpha = 1.0
به این معناست که جریمهای متوسط به مدل اعمال شه. این مقدار معمولاً به عنوان یک نقطه شروع خوب در نظر گرفته میشه، اما ممکنه برای هر مجموعه دادهای بهینه نباشه. تنظیم دقیق alpha
بر اساس دادهها به بهبود عملکرد مدل کمک میکنه.با تنظیم
l1_ratio
بر روی 0.5، ما به طور مساوی جریمه رو بین L1 و L2 تقسیم میکنیم. این انتخاب نشون دهنده تعادل بین تأثیرات L1 و L2 هست و برای موقعیتهایی که هر دو نوع جریمه ممکنه مفید باشن، مناسبه.#Machine_Learning
#Regularization
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌9❤2🔥1👨💻1
❓کوئیز شماره ۲۹: چطور میتونیم بهترین ترکیب از alpha و l1_ratio رو در Elastic Net انتخاب کنیم؟
Anonymous Quiz
36%
با استفاده از آزمون و خطا
54%
با انجام Cross-Validation
4%
با انتخاب تصادفی
6%
با استفاده از فرمولهای ریاضی مشخص
👌8😎2❤1👏1
افزایش داده یا Data Augmentation یه تکنیک مهم برای افزایش اندازه مجموعه داده آموزشیه و با ایجاد نسخههای جدید و کمی متفاوت از دادههای موجود انجام میشه. هدف اینکه مدل یادگیری ماشین در برابر تغییرات جزئی توی دادهها مقاومتر شه و عملکردش بهبود پیدا کنه.
#Data_Augmentation
#Machine_Learning
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍2👌2👨💻2
❓کوئیز شماره ۳۰: کدوم کتابخونه زیر برای افزایش داده (Data Augmentation) کاربرد نداره؟
Anonymous Quiz
18%
Pytorch
23%
Augmentor
23%
Albumentations
38%
NumPy
❤6👍2😎2
#Data_Augmentation
#Machine_Learning
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌7❤2👍1
توی فرآیند آموزش مدل، مفهوم انتخاب ویژگی (Feature Selection) اهمیت زیادی داره. این فرآیند با انتخاب باارزشترین و کارآمدترین Featureها، دقت و قابلیت تفسیرپذیری مدل رو افرایش میده.
#Machine_Learning
#Feature_Selection
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9👌1👨💻1
❓کوئیز شماره ۳۱: تاثیر واریانس در Feature Selection
چرا حذف ویژگیها با واریانس کم مهمه؟ کدوم متد در scikit-learn برای حذف ویژگیها با واریانس کم استفاده میشه؟
چرا حذف ویژگیها با واریانس کم مهمه؟ کدوم متد در scikit-learn برای حذف ویژگیها با واریانس کم استفاده میشه؟
Anonymous Quiz
5%
افزایش سرعت آموزش مدل، SelectKBest
21%
بهبود دقت پیشبینی مدل، VarianceThreshold
14%
جلوگیری از بیشبرازش، SelectKBest
60%
همه موارد بالا، VarianceThreshold
😎5❤3👌1
#Machine_Learning
#Feature_Selection
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3👌1
همونطور که توی پستهای قبل گفتیم، روشهای تنظیم توی یادگیری ماشین رو میشه به طور کلی به دو دسته تقسیم کرد: راهکارهای مبتنی به ویژگیها و راهکارهای مبتنی به مدل. توی این پست میخوایم راهکارهای مبتنی به مدل رو بیشتر بررسی کنیم.
یکی از روشهای تنظیم توی درخت تصمیم، هرس کردن (Pruning) درخته. هرس کردن شامل حذف بعضی از شاخهها یا گرههای درخت به منظور جلوگیری از بیشبرازشه. یک روش متداول برای هرس کردن، کنترل عمق درخته. با محدود کردن عمق درخت، از پیچیدگی بیش از حد مدل و یادگیری جزئیات نامربوط به دادههای آموزشی جلوگیری میشه.
توی شبکههای عصبی، یکی از روشهای تنظیم مدل، اعمال محدودیت روی وزنهای شبکهست. این کار معمولاً از طریق اضافه کردن یه جمله تنظیمکننده (Regularization Term) به تابع هزینه انجام میشه که روزهای گذشته درموردشون آموزش دادیم. دو روش محبوب تنظیم وزنها، L1 و L2 هستن که به ترتیب باعث ایجاد وزنهای کمتر و محدود کردن اندازه وزنهاست.
توی ماشینهای بردار پشتیبان (SVM)، پارامتر C نقش مهم تنظیم مدل رو به عهده داره. این پارامتر میزان جریمه خطاهای دستهبندی رو تعیین میکنه. مقدار کمتر C باعث میشه که مدل تا حدی انعطافپذیر باشه و بیشبرازش کمتری داشته باشه، در حالی که مقدار بیشتر C به مدل اجازه میده که به دادههای آموزشی بیشتر توجه کنه، اما در نتیجه ممکنه بیشبرازش اتفاق بیوفته.
توی مدلهای رگرسیون، گاهی اوقات کاهش تعداد ویژگیها (Feature Reduction) به عنوان یک روش تنظیم مدل به کار میره. این روش شامل حذف ویژگیهای کم اهمیت یا ترکیب ویژگیهای مرتبط باهمه تا پیچیدگی مدل کم و عملکردش روی دادههای جدید بهتر شه.
#Machine_Learning
#Regularization
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8👌2❤1👨💻1
❓کوئیز شماره ۳۲: کدوم روش هرس به صورت رایج در الگوریتمهای درخت تصمیم استفاده میشه؟
Anonymous Quiz
40%
هرس پیشبینی محور (Predictive Pruning)
29%
هرس پسین (Post-pruning)
25%
هرس تصادفی (Random Pruning)
5%
هرس بر اساس زمان (Time-based Pruning)
👍7❤2🤔1
#Weekend
#Machine_Learning
#Regularization
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👨💻3👌2
#Machine_Learning
#Cross_Validation
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👌2🔥1
اعتبارسنجی متقابل (Cross Validation) یه روش مهم برای تخمین دقت مدلهای یادگیری ماشینه و کمک میکنه تا درک بهتری از این داشته باشیم که مدل چطور روی دادههای دیده نشده عمل میکنه. Cross Validation برای جلوگیری از overfitting و بهبود تعمیم پذیری اهمیت زیادی داره. در ادامه انواع مختلفش رو بررسی میکنیم:
توی این روش، دادهها به k بخش تقسیم میشن. هر بخش یک بار به عنوان داده تست استفاده میشه و k-1 بار دیگر به عنوان داده آموزش. برای مثال اگه k=5، دادهها به 5 بخش تقسیم میشن و هر بخش یه بار به عنوان داده تست و 4 بار به عنوان داده آموزش استفاده میشه. این روش برای دادههایی با توزیع یکنواخت و زمانی که حجم دادهها نه خیلی کم و نه خیلی زیاده، مناسبه.
توی این روش، دادهها به نحوی تقسیم میشن که هر بخش توزیعی شبیه به توزیع کلی دادهها داره. این روش برای حفظ تناسب نمونهها توی دستههای مختلف مفیده. یعنی تضمین میکنه که هر بخش از دادهها نمایندهای از کل دادهها باشن، مخصوصا در مورد ویژگیهای مهم و تاثیرگذار. این روش برای دادههای دستهبندی شده و زمانی که نمونههای مختلف در دستهها به صورت نامتوازن توزیع شدن مناسبه.
این روش برای دادههای سری زمانی استفاده میشه، جایی که ترتیب زمانی دادهها مهمه. توی این روش دادهها بر اساس ترتیب زمانی تقسیم میشن تا تأثیر زمان روی دادهها حفظ بشه و برای پیشبینی مالی یا هواشناسی کاربرد داره.
#Machine_Learning
#Cross_Validation
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2👨💻1
❓کوئیز شماره ۳۳: اعتبارسنجی متقاطع چطور از بیشبرازش جلوگیری میکنه؟
Anonymous Quiz
12%
با افزایش تعداد ویژگیهای داده
10%
با کاهش حجم دادههای آموزش
63%
با استفاده متناوب از بخشهای مختلف داده به عنوان داده تست
15%
با افزایش تعداد دورههای (iteration) آموزش
❤6😎4👌1
زمان استفاده از CV، نرخ خطای مجموعه اعتبارسنجی میتونه متغیر باشه. در نتیجه پیشبینی دقت مدل روی دادههای جدید میتونه دقیق نباشه. این مشکل زمانی که با دیتاست نامتوازن یا محدود مواجه هستیم بیشتر نمود پیدا میکنه.
توی هر دوره از فرایند CV، فقط بخشی از دادهها برای آموزش مدل به کار برده میشه. یعنی مدل فرصت استفاده از تمام دادههای موجود رو نداره. این مسئله مخصوصا زمانی که دادهها محدود هستن، به نتایج کمتر دقیق و کاهش توانایی تعمیمپذیری مدل منجر میشه.
در اصل میشه گفت ویژگیهای منحر بفرد Cross Validation در شرایطی میتونن جزو معایب این روش هم باشن و اینکه این روش مفید باشه یا ناکارآمد کاملا بستگی به شرایط دادهها داره.
#Machine_Learning
#Cross_Validation
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌9❤2👍1👨💻1
اعتبارسنجی متقابل k-برابر (k-fold Cross-Validation) یکی از انواع اعتبار سنجی متقابله و زمانی که مقدار دادههای موجود محدودن، بسیار مفیده و کاربرد داره. این روش به ما امکان میده تا ارزیابی دقیقتر و بدون سوگیری از مدلهای پیچیده داشته باشیم و به درک بهتر از تواناییها و محدودیتهای مدلهای مورد استفاده کمک میکنه.
تقسیم دادهها: در مرحله اول، دادهها به k بخش تقسیم میشن.
آموزش و آزمایش: برای هر تکرار، k-1 بخش برای آموزش و 1 بخش برای آزمایش استفاده میشه.
تکرار: این فرآیند برای هر یک از kها تکرار میشه.
انتخاب مقدار k بسیار مهمه و به طور مستقیم روی عملکرد مدل تأثیر داره و معمولا از مقادیر 5 یا 10 برای k استفاده میشه. زمانیکه با دادههای نامتوازن روبرو هستیم، استفاده از تکنیکهای خاص (مثل Stratified K-Fold، Resampling، Data Augmentation) برای حفظ توازن توی هر بخش ضروریه. این روشها به ما کمک میکنن تا یکنواختی و دقت بیشتری در طول فرایند اعتبارسنجی متقابل داشته باشیم و نتایج قابل اعتمادتری بگیریم.
استفاده از k-fold برای تنظیم پارامترهای مدل (hyperparameter tuning)، این امکان رو میده که بهترین ترکیب پارامترها رو برای مدل پیدا کنیم. این کار با انجام آزمایشهای متعدد و مقایسه نتایج حاصل از هر کدوم انجام میشه. همچنین، k-fold امکان مقایسه عملکرد چندین مدل مختلف رو ممکن میکنه که در نتیجه میشه بهینهترین مدل رو انتخاب کرد.
#Machine_Learning
#Cross_Validation
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤4👌2👍1
❓کوئیز شماره ۳۴: استفاده از k بسیار بزرگ توی k-fold Cross-Validation چه تاثیری روی تخمین واریانس خطای مدل (میزان تغییر خطای مدل با تغییر دادهها) داره؟
Anonymous Quiz
17%
به طور قابل توجهی واریانس رو کاهش میده، چون به تعداد بیشتری از دادهها برای آموزش مدل دسترسی داریم.
34%
واریانس خطای تخمین رو افزایش میده، چون هر fold دادههای کمتری داره و نمونههای تست محدودتری میشن.
13%
تاثیر زیادی روی واریانس نداره، چون تنها تعداد تکرارها تغییر میکنه.
36%
واریانس رو کاهش میده، اما به دلیل افزایش بیش از حد تعداد تکرارها، خطر overfitting وجود داره.
❤7🤔3😎3
KFold
هست. KFold
فقط روش تقسیمبندی دادهها رو ارائه میده و خودش هیچ محاسبهای درباره مدل نمیکنه.from sklearn.model_selection import KFold
cross_val_score
هست. این تابع، دادهها و روش تقسیمبندی (مثل KFold
) رو به عنوان ورودی دریافت میکنه و امتیاز مدل رو بر اساس اعتبارسنجی متقابل محاسبه میکنه.from sklearn.model_selection import cross_val_score
#Machine_Learning
#Cross_Validation
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍1👨💻1
اعتبار سنجی متقاطع طبقه بندی شده (Stratified Cross-Validation) روشیه که در اون دادهها به صورتی تقسیم میشن تا از توزیع یکنواخت کلاسها توی هر بخش اطمینان حاصل شه. هدف از این روش، ارزیابی عملکرد مدل توی شرایطی نزدیک به دادههای واقعی و جلوگیری از ایجاد bias ناشی از تقسیم نامناسب دادههاست.
توی K-Fold CV، دادهها به صورت تصادفی و بدون در نظر گرفتن توزیع کلاسهای هدف به K گروه (Fold) تقسیم میشن. یعنی توی هر گروه، توزیع کلاسها ممکنه با توزیع کلی کلاسها توی دادههای اصلی متفاوت باشه. در نتیجه منجر به ارزیابیهایی میشه که نمایندهی دقیق توزیع واقعی کلاسها نیستن، مخصوصا اگه دادهها نامتوازن باشن.
توی Stratified CV توزیع کلاسهای هدف متناسب با توزیع کلی اونها توی کل مجموعه دادهست. در نتیجه هر گروه نمایندهای واقعیتر از دادههای اصلیه و اطمینان میده که هر کلاس به نسبت مشابهی توی هر بخش آموزش و تست حضور داره.
این روش هم مثل K-Fold میتونه برای تنظیم پارامترهای مدل و پیدا کردن بهترین ترکیب پارامترها استفاده شه. با ترکیب Stratified CV با سایر روشها مثل Bootstrapping دقت بیشتری توی ارزیابیها حاصل میشه. Stratified CV زمانبره و نیاز به دادههای با کیفیت داره.
در سمت چپ نموداری از توزیع کلاسهای هدف نشون داده شده که دو کلاس مرد و زن رو با نمودار میلهای نشون میده و توی این نمودارها توزیع نامتناسب (imbalanced distribution) به وضوح دیده میشه.
در سمت راست پنج گروه از دادهها یا Fold وجود داره. هر Fold شامل نمونههایی از دادههاست که در اونها توزیع کلاسهای مرد و زن به نحویه که با توزیع کلی کلاسها در دادههای اصلی مطابقت داره و نسبت تعداد مردان به زنان نزدیک به نسبت کلی دادههاست.
#Machine_Learning
#Cross_Validation
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2👌1
❓کوئیز شماره ۳۵: کدوم گزینه برای ارزیابی نتایج Stratified Cross-Validation، انجام نمیشه؟
Anonymous Quiz
16%
مقایسه توزیع کلاسها توی هر Fold با توزیع کل کلاسها با استفاده از نمودار هیستوگرام یا میلهای
16%
محاسبه دقت (Accuracy) متوسط برای همه Foldها
14%
محاسبه انحراف استاندارد دقت، Precision، Recall و F1 score برای همه Foldها
54%
تخمین زمان اجرای مدل روی دادههای آموزشی
😎8❤2👌1