#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
با استفاده از Stratified Cross-Validation میتونیم Cross-Validation رو روی دیتاستهایی که تعداد کلاس زیادی دارن اجرا کنیم؛ اما اعتبار سنجی متقاطع طبقه بندی شده به تغییرات کوچیک توی دیتاست حساسه و از نظر محاسباتی گرونه.
#Machine_Learning
#Cross_Validation
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5👌3❤2👨💻1
برای بررسی دادههای سری زمانی نمیتونیم از K-Fold CV و Stratified CV استفاده کنیم چون حفظ ترتیب این نوع دادهها و نشت نکردن اطلاعات مربوط به آینده به فرآیند آموزش مدل ضروریه و این دو روش دادهها رو بدون توجه به ترتیب زمانی تقسیمبندی میکنن. در نتیجه روشهایی مثل اعتبارسنجی متقاطع سری زمانی (Time Series Cross-Validation) مطرح میشن که وابستگی زمانی رو حفظ میکنن.
اعتبارسنجی متقاطع سری زمانی (Time-series Cross-Validation) به بررسی دادههایی که بر پایه زمان ثبت شدن، میپردازه. این دادهها میتونن شامل دمای هوا طی چندین سال یا قیمت سهام توی بازههای زمانی مختلف باشن.
توی این روش، دادهها به ترتیب زمانی تقسیم میشن. توی هر دور از اعتبارسنجی، یه بخش جدید به دادههای تست اضافه میشه و مدل روی بخشهای قبلی آموزش دیده. این روش برای دادههایی مناسبه که در اونها ترتیب زمانی مهمه و نشون دهنده روند یا فصله. Sequential CV از اطلاعات زمانی به خوبی استفاده و از نشت دادههای آینده جلوگیری میکنه.
توی این روش مفهومی به نام پنجره یا Window مطرح میشه و اندازه پنجره آموزش و تست ثابته و این پنجرهها در طول زمان حرکت میکنن. برای زمانیکه دادههای کافی برای آموزش وجود داره و نیاز به ارزیابی دقیق توی بازههای زمانی خاص هست، استفاده میشه. این روش به خوبی اطلاعات تاریخی رو با دادههای جدیدتر ترکیب میکنه و برای مطالعه تاثیر تغییرات زمانی روی عملکرد مدل مناسبه.
توی این روش، پنجره آموزش با گذشت زمان گسترش پیدا میکنه و بزرگتر میشه و توی هر دور از اعتبارسنجی، دادههای بیشتری به مجموعه آموزش اضافه میشن. این روش برای مدلهایی که به دادههای بیشتر برای یادگیری بهتر نیاز دارن، مناسبه و به مرور زمان، مدل تجربه بیشتری کسب میکنه و میتونه پیشبینیهای دقیقتری ارائه بده.
#Machine_Learning
#Cross_Validation
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👌2👨💻2👍1
❓کوئیز شماره ۳۶: توی اعتبارسنجی متقاطع سری زمانی با پنجره زمانی ثابت، دادهها چطور تقسیم میشن؟
Anonymous Quiz
10%
هر بخش دادهها به صورت تصادفی انتخاب میشه
13%
اندازه پنجره آموزش و تست با گذشت زمان تغییر میکنه
70%
اندازه پنجره آموزش و تست ثابته و در طول زمان جابجا میشه
7%
فقط یک داده توی هر Fold اضافه میشه
😎7❤2👌1
روشهای اعتبارسنجی متقابل K-Fold، Stratified و TimeSeries عمدتاً توی مدلهای یادگیری نظارت شده به کار میرن، چون برای ارزیابی، نیاز به دادههای برچسب دار دارن. اما نسخههای تغییریافته این روشها میتونن برای مدلهای یادگیری بدون نظارت هم استفاده شن.
برای مثال، اعتبارسنجی متقابل K-Fold میتونه توی یادگیری بدون نظارت برای ارزیابی وضعیت خوشهبندیها استفاده شه. اما روشهای Stratified و TimeSeries به دلیل تمرکز روی حفظ تعادل کلاسها یا ترتیب زمانی، بیشتر به مدلهای نظارت شده و دادههای برچسبدار وابسته هستن.
#Machine_Learning
#Cross_Validation
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌6👍3❤1👨💻1
کلاس
KFold
از sklearn.model_selection
برای شروع فرآیند اعتبارسنجی متقابل استفاده میشه. میتونین تعداد تقسیمها (n_splits
) رو مشخص کنین که به طور پیشفرض 5 هست و حداقل باید 2 باشه. میشه تصمیم گرفت که قبل از تقسیم دادهها، اونها رو بر زد (shuffle=False
به طور پیشفرض). روش KFold
به دلیل سادگی و اینکه مدلمحور نیست، بسیار کاربردیه و برای انواع گستردهای از مجموعه دادهها و مدلها قابل استفادهست. random_state
کنترل کننده ترتیب شاخصهاست برای زمانیکه shuffle
فعاله.from sklearn.model_selection import KFold
kf = KFold(n_splits=5, shuffle=False, random_state=None)
برای مقداردهی اولیه این فرآیند از کلاس
StratifiedKFold
توی sklearn.model_selection
استفاده میشه. مثل `KFold`، میشه تعداد تقسیمها رو مشخص کرد و مقدارش حداقل باید 2 باشه. همچنین، میشه تصمیم گرفت که آیا قبل از تقسیم، دادهها بر زده بشن یا نه. from sklearn.model_selection import StratifiedKFold
skf = StratifiedKFold(n_splits=5, shuffle=False, random_state=None)
برای دادههای سری زمانی از کلاس
TimeSeriesSplit
توی sklearn.model_selection
استفاده میشه. این کلاس به صورت ویژه برای دادههای زمانی طراحی شده.import numpy as np
from sklearn.model_selection import TimeSeriesSplit
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
X = np.array([[1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4]])
y = np.array([1, 2, 3, 4, 5, 6])
tscv = TimeSeriesSplit(n_splits=3)
model = LinearRegression()
# TimeSeries Cross-Validation
for train_index, test_index in tscv.split(X):
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
model.fit(X_train, y_train)
predictions = model.predict(X_test)
mse = mean_squared_error(y_test, predictions)
print(f"Train indices: {train_index}, Test indices: {test_index}, MSE: {mse}")
برای استفاده پیشرفتهتر،
sklearn
قابلیت cross_validate
رو ارائه میده که امکان ارزیابی چندین معیار رو ممکن میکنه و یه دیکشنری شامل زمانهای آموزش، زمانهای امتیازدهی و نمرات تست رو برمیگردونه. این تابع زمانی مفیده که بخواین یه مدل رو همزمان با استفاده از معیارهای مختلف ارزیابی کنین.#Machine_Learning
#Cross_Validation
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍3👨💻1