اعتبارسنجی متقابل 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
15%
به طور قابل توجهی واریانس رو کاهش میده، چون به تعداد بیشتری از دادهها برای آموزش مدل دسترسی داریم.
35%
واریانس خطای تخمین رو افزایش میده، چون هر fold دادههای کمتری داره و نمونههای تست محدودتری میشن.
13%
تاثیر زیادی روی واریانس نداره، چون تنها تعداد تکرارها تغییر میکنه.
37%
واریانس رو کاهش میده، اما به دلیل افزایش بیش از حد تعداد تکرارها، خطر 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
14%
مقایسه توزیع کلاسها توی هر Fold با توزیع کل کلاسها با استفاده از نمودار هیستوگرام یا میلهای
17%
محاسبه دقت (Accuracy) متوسط برای همه Foldها
14%
محاسبه انحراف استاندارد دقت، Precision، Recall و F1 score برای همه Foldها
56%
تخمین زمان اجرای مدل روی دادههای آموزشی
😎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
7%
هر بخش دادهها به صورت تصادفی انتخاب میشه
14%
اندازه پنجره آموزش و تست با گذشت زمان تغییر میکنه
72%
اندازه پنجره آموزش و تست ثابته و در طول زمان جابجا میشه
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
❓کوئیز شماره ۳۷:
برای استفاده از cross_val_predict توی sklearn، کدوم گزینه صحیحه؟
برای استفاده از cross_val_predict توی sklearn، کدوم گزینه صحیحه؟
Anonymous Quiz
14%
نتایجش با cross_val_score متفاوته، مگه اینکه همه مجموعههای آزمایشی اندازهی برابر داشته باشن.
61%
امکان استفاده از روشهای مختلف پیشبینی مثل predict_proba و decision_function رو فراهم میکنه.
25%
همیشه نتایج دقیقتری نسبت به cross_val_score ارائه میده.
😎6❤2👌2
در روش LPO، از مجموعه دادهای با N نمونه، P نمونه به صورت تصادفی حذف میشن و مدل روی N-P نمونه باقیمونده آموزش داده میشه و عملکرد مدل روی P نمونه حذفشده ارزیابی میشه.
فرض کنین مجموعه دادهای داریم با 5 نمونه (N=5) که عددهای 1 تا 5 رو نشون میده. میخوایم LPO رو با P=2 انجام بدیم.
1. انتخاب ترکیبات P نمونه برای تست: باید همه ترکیبات ممکن 2 نمونهای از 5 نمونه رو برای تست انتخاب کنیم. این ترکیبات عبارتند از: (1,2)، (1,3)، (1,4)، (1,5)، (2,3)، (2,4)، (2,5)، (3,4)، (3,5) و (4,5). پس 10 ترکیب داریم.
2. آموزش و تست مدل برای هر ترکیب: برای هر ترکیب، ما دو نمونه رو برای تست کنار میگذاریم و مدل رو روی 3 نمونه باقیمانده آموزش میدهیم. بعد عملکرد مدل رو روی دو نمونه حذف شده تست میکنیم.
- مثلاً برای ترکیب (1,2)، مدل روی نمونههای 3، 4، و 5 آموزش داده میشه و بعد عملکردش روی نمونههای 1 و 2 ارزیابی میشه.
3. محاسبه عملکرد کلی مدل: در نهایت، میانگین عملکرد مدل روی همه ترکیبات به عنوان ارزیابی کلی از دقت مدل در نظر گرفته میشه.
روش LOOCV حالت خاصیه از LPO که در اون P برابره با 1. در نتیجه توی هر دور از اعتبارسنجی، فقط یک نمونه حذف میشه و مدل روی N-1 نمونه باقیمانده آموزش میبیند.
مزیت این روش اینکه نیاز به تصمیمگیری در مورد تعداد فولدها نداره و از دادهها به بهترین شکل استفاده میکنه. اما توی مجموعه دادههای بزرگ بسیار زمانبره و گاهی اوقات میتونه به بیشبرازش منجر شه، مخصوصا اگه مدل پیچیده باشه.
1. انتخاب تک تک نمونهها برای تست: توی LOOCV، ما هر نمونه رو به نوبت به عنوان داده تست انتخاب میکنیم. بنابراین، پنج ترکیب داریم که هر کدوم شامل یه نمونه برای تست و 4 نمونه دیگه برای آموزشن. این ترکیبات عبارتند از: نمونه 1 برای تست و بقیه برای آموزش، نمونه 2 برای تست و بقیه برای آموزش، و همینطور تا نمونه 5.
2. آموزش و تست مدل برای هر ترکیب: برای هر ترکیب، ما یک نمونه رو برای تست کنار میگذاریم و مدل رو روی 4 نمونه باقیمانده آموزش میدیم. بعد عملکرد مدل رو روی نمونه حذف شده تست میکنیم.
مثلاً برای ترکیب اول، مدل روی نمونههای 2، 3، 4، و 5 آموزش داده میشن و عملکردش روی نمونه 1 ارزیابی میشه.
این فرایند برای هر کذوم از 5 ترکیب تکرار میشن.
3. محاسبه عملکرد کلی مدل: در نهایت، میانگین عملکرد مدل روی تمام ترکیبات به عنوان ارزیابی کلی از دقت مدل در نظر گرفته میشه.
#Machine_Learning
#Cross_Validation
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌6❤2👨💻1
❓کوئیز شماره ۳۸: توی اعتبارسنجی متقابل LPO، اگه P رو افزایش بدیم، کدوم گزینه صحیحه؟
Anonymous Quiz
17%
زمان محاسبات کمتر میشه
33%
تعداد ترکیبات ممکن برای انتخاب نمونههای تست کاهش پیدا میکنه
50%
زمان محاسبات بیشتر میشه
0%
تأثیری روی زمان محاسبات نداره
👍5❤2👏1
اعتبار سنجی متقابل برای ارزیابی عملکرد مدل با استفاده از ترکیبهای مختلف از پارامترها استفاده میشه. این کار میتونه با استفاده از Grid Search یا Random Search ترکیب شه.
برای مثال میشه از Grid Search برای پیدا کردن بهترین ترکیب از پارامترهای مدل استفاده کرد، بعد از Cross Validation برای ارزیابی عملکرد مدل روی ترکیبهای مختلف پارامترها استفاده کرد.
#Machine_Learning
#Cross_Validation
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌6👍1👨💻1
#Weekend
#Machine_Learning
#Cross_Validation
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3👏1
توی هر حوزهای برای استفاده از مفاهیم تئوری، نیاز به تعریف مسئله، انجام تمرین علمی و پروژه کاربردی هست. توی این وبینار بررسی میکنیم که چه مسائلی امکان تعریف در قالب تسک و اجرا با استفاده از ماشین لرنینگ رو دارن.
@DSLanders | دیاسلندرز
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍2👨💻1
#Machine_Learning
#Naive_Bayes
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👌2👨💻1
الگوریتم بیز ساده یه روش طبقهبندی مبتنی به اصل بیز هست و توی مواردی که مجموعه دادهها بزرگه، کاربرد داره. الگوریتم Naive Bayes فرض میکنه ویژگیهای مختلف توی دادهها مستقل از هم دیگه هستن و توی دستهی یادگیری با ناظر قرار داره.
قبل از بررسی الگوریتم بیز ساده، باید با اصل بیز آشنا شیم. اصل بیز رابطهای ریاضیه که احتمال وقوع یه رویداد رو بر اساس دانش قبلی از شرایط مرتبط با اون رویداد تعیین میکنه. فرمول اصل بیز رو داخل تصویر میتونین ببینین.
توی این مدل فرض میشه که ویژگیها دارای توزیع نرمال (گاوسی) هستن. این روش در مواقعی که ویژگیها ویژگیهای پیوسته هستن، مثل قد یا وزن، کاربرد داره.
این الگوریتم برای متغیرهای گسسته مثل شمارش کلمات در متن به کار میره و توی طبقهبندی متن و تحلیل احساسات بسیار محبوبه.
مناسب برای ویژگیهای دودویی (مثلا حضور یا عدم حضور یک ویژگی در یک نمونه). این الگوریتم در مواردی که ویژگیها به صورت "بودن" یا "نبودن" هستن، مفیده.
#Machine_Learning
#Naive_Bayes
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍3👌3
#Machine_Learning
#Naive_Bayes
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4👨💻1
مزایای Bernoulli Naïve Bayes شامل سادگی، کارآمدی و دقت بالا توی مجموعه دادههای کوچیکه. این الگوریتم به خوبی برای طبقهبندی متن کار میکنه، اما چون فرض استقلال ویژگیها رو داره، ممکنه نتایج نامناسبی تولید کنه و برای مسائل چند کلاسه مناسب نیست. همچنین اگه توی کلاسبندی دادهها عدم تعادل وجود داشته باشه، دقت کلی مدل کاهش پیدا میکنه.
مزایای استفاده از Multinomial Naïve Bayes عبارتند از کارآمدی، پیادهسازی ساده، مقاومت در برابر ویژگیهای غیرمرتبط و نتایج قابل تفسیر. این الگوریتم گزینهای عملی برای وظایف طبقهبندی متن مثل تشخیص هرزنامه، تحلیل احساسات و دستهبندی اسناده، جایی که ویژگیها اغلب بر اساس شمارش کلمات هستن.
#Machine_Learning
#Naive_Bayes
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2👌1👨💻1
❓کوئیز شماره ۳۹: توی کدوم مدل احتمال P(x_i|y) بر اساس تعداد دفعات وقوع ویژگی (x_i) توی کلاس y محاسبه میشه؟
Anonymous Quiz
58%
Bernoulli Naive Bayes
42%
Multinomial Naive Bayes
👍5❤2😎2👌1