
ترجمهی زهره غنی آبادی دانشجو ارشد هوش مصنوعی دانشگاه صنعتی مالک اشتر تهران
در یادگیری ماشینCross validation
منبع:
https://quera.ir/course/assignments/36947/problems/123242
# Cross-Validation in Machine Learning: How to Do It Right
آیا میخواهید چندین اجرا را به روشی خودکار مقایسه کنید؟
ابرداده خود را به نپتون وارد کنید و همه اجراها را در یک نمای مقایسه کاربر پسند ببینید.
بیشتر بدانید
اعتبار سنجی متقابل در یادگیری ماشینی: چگونه آن را به درستی انجام دهیم
10 دقیقه خواندن
نویسنده ولادیمیر لیاشنکو
به روز شده در 12 نوامبر 2021
در یادگیری ماشینی (ML)، تعمیم معمولاً به توانایی یک الگوریتم برای مؤثر بودن در ورودی های مختلف اشاره دارد. این بدان معنی است که مدل ML با کاهش عملکرد در ورودی های جدید از توزیع یکسان داده های آموزشی مواجه نمی شود.
برای انسان تعمیم طبیعی ترین چیز ممکن است. ما می توانیم در پرواز طبقه بندی کنیم. به عنوان مثال، ما قطعاً یک سگ را می شناسیم حتی اگر قبلاً این نژاد را ندیده باشیم. با این وجود، ممکن است برای یک مدل ML کاملاً یک چالش باشد. به همین دلیل است که بررسی توانایی الگوریتم برای تعمیم یک کار مهم است که در ساخت مدل نیاز به توجه زیادی دارد.
برای این کار از Cross-Validation (CV) استفاده می کنیم.
در این مقاله به موارد زیر خواهیم پرداخت:
اعتبار متقابل چیست: تعریف، هدف استفاده و تکنیک ها
تکنیکهای مختلف CV: نگهداشتن، k-folds، Leave-one-out، Leave-p-out، k-fold طبقهبندی شده، k-fold مکرر، k-folds تودرتو، CV کامل
نحوه استفاده از این تکنیک ها: sklearn
اعتبار سنجی متقابل در یادگیری ماشینی: sklearn، CatBoost
اعتبار سنجی متقابل در یادگیری عمیق: Keras، PyTorch، MxNet
بهترین شیوه ها و نکات: سری های زمانی، داده های پزشکی و مالی، تصاویر
Cross-Validation چیست؟
اعتبار سنجی متقابل تکنیکی برای ارزیابی یک مدل یادگیری ماشین و آزمایش عملکرد آن است. CV معمولاً در کارهای کاربردی ML استفاده می شود. این به مقایسه و انتخاب یک مدل مناسب برای مسئله مدلسازی پیشبینیکننده خاص کمک میکند.
درک CV آسان است، پیادهسازی آن آسان است، و تمایل به تعصب کمتری نسبت به سایر روشهای مورد استفاده برای شمارش امتیازهای کارایی مدل دارد. همه اینها اعتبارسنجی متقابل را به ابزاری قدرتمند برای انتخاب بهترین مدل برای کار خاص تبدیل می کند.
تکنیک های مختلفی وجود دارد که ممکن است برای اعتبارسنجی متقابل یک مدل استفاده شود. با این حال، همه آنها یک الگوریتم مشابه دارند:
مجموعه داده را به دو بخش تقسیم کنید: یکی برای آموزش، دیگری برای آزمایش
مدل را روی مجموعه آموزشی آموزش دهید
اعتبار مدل را در مجموعه آزمایشی تأیید کنید
1-3 مرحله را چند بار تکرار کنید. این عدد به روش رزومه ای که استفاده می کنید بستگی دارد
همانطور که می دانید، تکنیک های CV زیادی وجود دارد. برخی از آنها معمولا استفاده می شوند، برخی دیگر فقط در تئوری کار می کنند. بیایید روشهای اعتبارسنجی متقاطع را که در این مقاله پوشش داده خواهد شد، ببینیم.
نگه دارید
K-folds
ترک یک بیرون
ترک کردن
چین های K طبقه بندی شده
K-folds مکرر
چین های K تو در تو
کامل
نگه دارید
اعتبار سنجی متقابل Hold-out ساده ترین و رایج ترین تکنیک است. شاید ندانید که این روش نگهدارنده است اما مطمئناً هر روز از آن استفاده می کنید.
الگوریتم تکنیک Hold-out:
مجموعه داده را به دو بخش تقسیم کنید: مجموعه آموزشی و مجموعه تست. معمولاً 80 درصد مجموعه داده به مجموعه آموزشی و 20 درصد به مجموعه آزمایشی میرود، اما میتوانید هر تقسیمبندی را انتخاب کنید که مناسبتر باشد.
مدل را روی مجموعه آموزشی آموزش دهید
در مجموعه آزمایشی اعتبار سنجی کنید
نتیجه اعتبارسنجی را ذخیره کنید
خودشه.
ما معمولاً از روش نگهدارنده در مجموعه دادههای بزرگ استفاده میکنیم، زیرا فقط یک بار نیاز به آموزش مدل دارد.
اجرای نگهدارنده واقعاً آسان است. برای مثال، میتوانید این کار را با استفاده از sklearn.model_selection.train_test_split انجام دهید.
import numpy as np
from sklearn.model_selection import train_test_split
X, y = np.arange(10).reshape((5, 2)), range(5)
X_train, X_test, y_train, y_test = train_test_split(X, y,
با این حال، نگه داشتن یک نقطه ضعف بزرگ دارد.
به عنوان مثال، مجموعه داده ای که از نظر توزیع کاملاً یکنواخت نیست. اگر چنین است، ممکن است پس از تقسیم در یک نقطه ناهموار قرار بگیریم. به عنوان مثال، مجموعه آموزشی مجموعه تست را نشان نخواهد داد. هر دو مجموعه تمرین و تست ممکن است بسیار متفاوت باشند، یکی از آنها ممکن است آسان تر یا سخت تر باشد.
علاوه بر این، این واقعیت که ما مدل خود را فقط یک بار آزمایش می کنیم ممکن است یک گلوگاه برای این روش باشد. با توجه به دلایل ذکر شده در بالا، ممکن است نتیجه به دست آمده با تکنیک Hold-out نادرست در نظر گرفته شود
k-fold
K-Fold CV تکنیکی است که معایب روش نگهدارنده را به حداقل می رساند. k-Fold روش جدیدی را برای تقسیم مجموعه داده معرفی می کند که به غلبه بر "تست فقط یک بار گلوگاه" کمک می کند.
الگوریتم تکنیک k-Fold:
تعدادی چین را انتخاب کنید - k. معمولاً k 5 یا 10 است، اما میتوانید هر عددی را انتخاب کنید که کمتر از طول مجموعه داده باشد.
مجموعه داده را به k قسمت مساوی (در صورت امکان) تقسیم کنید (به آنها folds گفته می شود)
k – 1 folds را انتخاب کنید که مجموعه آموزشی خواهد بود. تای باقیمانده مجموعه آزمایشی خواهد بود
مدل را روی مجموعه آموزشی آموزش دهید. در هر تکرار اعتبارسنجی متقاطع، باید یک مدل جدید مستقل از مدل آموزش داده شده در تکرار قبلی آموزش دهید.
در مجموعه آزمایشی اعتبار سنجی کنید
نتیجه اعتبارسنجی را ذخیره کنید
مراحل 3 تا 6 هزار بار را تکرار کنید. هر بار از چین باقی مانده به عنوان مجموعه تست استفاده کنید. در پایان، شما باید مدل را روی هر فولد که دارید اعتبارسنجی کرده باشید.
برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله 6 به دست آوردید.
برای انجام اعتبارسنجی متقاطع k-Fold می توانید از sklearn.model_selection.KFold استفاده کنید
sklearn.model_selection import KFold
X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])
y = np.array([1, 2, 3, 4])
kf = KFold(n_splits=2)
for train_index, test_index in kf.split(X):
print("TRAIN:", train_index, "TEST:", test_index)
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index].
به طور کلی همیشه بهتر است به جای Hold-out از تکنیک k-Fold استفاده کنید. از آنجایی که آموزش و آزمایش بر روی چندین بخش مختلف مجموعه داده انجام می شود، به صورت مو به مو، مقایسه k-Fold نتیجه پایدارتر و قابل اعتمادتری به دست می دهد. اگر تعداد تاها را افزایش دهیم تا مدل را روی بسیاری از زیر مجموعههای مختلف مختلف آزمایش کنیم، میتوانیم امتیاز کلی را قویتر کنیم.
با این حال، روش k-Fold یک نقطه ضعف دارد. افزایش k منجر به آموزش مدل های بیشتر می شود و فرآیند آموزش ممکن است واقعاً گران و زمان بر باشد
Repeated k-Fold: تکرار k-fold
اعتبارسنجی متقابل k-Fold مکرر یا CV نمونهبرداریهای تصادفی مکرر احتمالاً قویترین تکنیکهای CV در این مقاله است. این یک تغییر از k-Fold است اما در مورد K-Folds تکراری k تعداد تاها نیست. تعداد دفعاتی است که ما مدل را آموزش خواهیم داد.
ایده کلی این است که در هر تکرار، نمونههایی را بهطور تصادفی از سرتاسر مجموعه داده به عنوان مجموعه آزمایشی انتخاب میکنیم. به عنوان مثال، اگر تصمیم بگیریم که 20٪ از مجموعه داده ها مجموعه آزمایشی ما باشد، 20٪ نمونه به طور تصادفی انتخاب می شوند و 80٪ بقیه به مجموعه آموزشی تبدیل می شوند.
الگوریتم تکنیک Repeated k-Fold:
k را انتخاب کنید - چند بار مدل آموزش داده می شود
تعدادی نمونه را انتخاب کنید که مجموعه آزمایشی خواهد بود
مجموعه داده را تقسیم کنید
روی مجموعه آموزشی تمرین کنید. در هر تکرار اعتبارسنجی متقاطع، یک مدل جدید باید آموزش داده شود
در مجموعه آزمایشی اعتبار سنجی کنید
نتیجه اعتبارسنجی را ذخیره کنید
مراحل را 3-6 هزار بار تکرار کنید
برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله 6 به دست آوردید.
K-Fold مکرر مزایای واضحی نسبت به استاندارد k-Fold CV دارد. اولا، نسبت تقسیم قطار/آزمایش به تعداد تکرارها بستگی ندارد. ثانیا، ما حتی می توانیم نسبت های منحصر به فردی را برای هر تکرار تنظیم کنیم. ثالثاً، انتخاب تصادفی نمونهها از مجموعه دادهها، Repeated k-Fold را برای سوگیری انتخاب قویتر میکند.
با این حال، برخی از معایب وجود دارد. k-Fold CV تضمین میکند که مدل روی همه نمونهها آزمایش میشود، در حالی که K-Fold تکراری بر اساس تصادفیسازی است که به این معنی است که برخی از نمونهها ممکن است هرگز برای قرار گرفتن در مجموعه آزمایش انتخاب نشوند. در همان زمان، برخی از نمونه ها ممکن است چندین بار انتخاب شوند.
Sklearn به شما در پیاده سازی Repeated k-Fold CV کمک می کند. فقط استفاده کن
sklearn.model_selection.RepeatedKFold. در اجرای sklearn این تکنیک باید تعداد فولدهایی که می خواهید داشته باشید (n_splits) و تعداد دفعاتی که تقسیم انجام می شود (n_repeats) را تنظیم کنید. این تضمین می کند که در هر تکرار چین های مختلفی خواهید داشت.
import numpy as np
from sklearn.model_selection import RepeatedKFold
X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])
y = np.array([0, 0, 1, 1])
rkf = RepeatedKFold(n_splits=2, n_repeats=2, random_state=42)
for train_index, test_index in rkf.split(X):
print("TRAIN:", train_index, "TEST:", test_index)
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
K-Fold تو در تو
برخلاف سایر تکنیکهای CV، که برای ارزیابی کیفیت یک الگوریتم طراحی شدهاند، Nested k-Fold CV محبوبترین راه برای تنظیم پارامترهای یک الگوریتم است.
تصور کنید که ما یک پارامتر p داریم که معمولاً به الگوریتم پایه ای که ما در حال تایید متقابل آن هستیم بستگی دارد. به عنوان مثال، برای رگرسیون لجستیک، ممکن است پارامتر جریمه باشد که برای تعیین هنجار مورد استفاده در جریمه استفاده می شود.
الگوریتم تکنیک Nested k-Fold:
k را انتخاب کنید - تعدادی تا، به عنوان مثال، 10 - فرض کنیم این عدد را انتخاب کرده ایم
یک پارامتر p را انتخاب کنید. فرض کنید الگوریتم ما رگرسیون لجستیک است و p پارامتر جریمه p = {'l1', 'l2', 'elasticnet', 'none'}
مجموعه داده را به 10 تا تقسیم کنید و یکی از آنها را برای آزمایش رزرو کنید
یکی از تاهای آموزشی را برای اعتبار سنجی رزرو کنید
برای هر مقدار p روی 8 فولد آموزشی باقیمانده آموزش دهید و روی فولد اعتبارسنجی ارزیابی کنید. اکنون 4 اندازه گیری دارید
مراحل 4-5 را 9 بار تکرار کنید. بچرخانید که کدام فولد آموزشی، فولد اعتبارسنجی است. اکنون اندازه گیری 9 * 4 دارید
p را انتخاب کنید که میانگین خطای تمرین را بیش از 9 برابر به حداقل برساند. از آن p برای ارزیابی روی مجموعه تست استفاده کنید
از مرحله 2 10 بار تکرار کنید و از هر تا به نوبت به عنوان تای تست استفاده کنید
میانگین و انحراف معیار اندازه گیری ارزیابی را در 10 برابر تست ذخیره کنید
الگوریتمی که بهترین عملکرد را داشت، الگوریتمی بود که بهترین میانگین عملکرد خارج از نمونه را در 10 لایه آزمایشی داشت.
این تکنیک از نظر محاسباتی گران است زیرا در طول مراحل 1 تا 10 تعداد زیادی مدل باید آموزش و ارزیابی شوند. با این حال، Nested k-Fold CV معمولا استفاده می شود و ممکن است در چندین کار ML واقعاً مؤثر باشد.
متأسفانه، هیچ روش داخلی در sklearn وجود ندارد که بتواند CV Nested k-Fold را برای شما انجام دهد. این لحظه ای است که شما باید یا گوگل کنید و پیاده سازی شخصی را پیدا کنید یا خودتان آن را کدنویسی کنید.
اعتبار متقاطع کامل
CV کامل کم استفاده ترین تکنیک CV است. ایده کلی این است که ما یک عدد k - طول مجموعه آموزشی را انتخاب می کنیم و روی هر تقسیم ممکن حاوی k نمونه در مجموعه آموزشی اعتبار سنجی می کنیم.
مقدار آن تقسیمها را میتوان به صورت Сnk محاسبه کرد که n طول مجموعه داده است. اگر k بالاتر از 2 باشد، باید مدل خود را چندین بار آموزش دهیم که همانطور که قبلاً متوجه شدیم زمان فرآیند گران قیمت و از نظر محاسباتی است.
به همین دلیل است که از CV کامل یا در تحقیقات نظری استفاده می شود و یا در صورت وجود فرمول مؤثری که به حداقل رساندن محاسبات کمک می کند.
الگوریتم اعتبار سنجی متقاطع کامل:
یک عدد k - طول مجموعه تمرینی را انتخاب کنید
مجموعه داده را تقسیم کنید
روی مجموعه آموزشی تمرین کنید
در مجموعه آزمایشی اعتبار سنجی کنید
نتیجه اعتبارسنجی را ذخیره کنید
مراحل 2 تا 5 Сnk را تکرار کنید
برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله 5 به دست آوردید
بیشتر تکنیک های اعتبار سنجی متقابل ذکر شده در بالا به طور گسترده در ML استفاده می شود. مهم است که به خاطر داشته باشید که استفاده از تکنیک CV مناسب ممکن است در زمان شما صرفه جویی کند و به انتخاب بهترین مدل برای کار کمک کند.
این بدان معناست که اولاً، بهتر است همیشه مدل را تأیید متقابل کنید و ثانیاً باید یک روش CV مربوطه را انتخاب کنید. بنابراین، دانستن مزایا و معایب تکنیکهای اعتبارسنجی متقابل حیاتی است.
شایان ذکر است که اگر میخواهید مدل را اعتبار متقابل کنید، همیشه باید دفترچه راهنمای مدل را بررسی کنید زیرا برخی از الگوریتمهای ML، به عنوان مثال، CatBoost روشهای CV داخلی خود را دارند. ممکن است آنها را مربوط به وظیفه ML خود بیابید و به جای روش های داخلی sklearn از آنها استفاده کنید.
به طور کلی، همانطور که ممکن است متوجه شده باشید، بسیاری از تکنیکهای CV دارای روشهای داخلی sklearn هستند. من به شدت توصیه می کنم از آنها استفاده کنید زیرا این روش ها در زمان زیادی برای کارهای پیچیده تر صرفه جویی می کنند.
اعتبار متقابل در یادگیری عمیق
اعتبار سنجی متقابل در یادگیری عمیق (DL) ممکن است کمی مشکل باشد زیرا اکثر تکنیک های CV حداقل چند بار نیاز به آموزش مدل دارند.
در یادگیری عمیق، معمولاً به دلیل هزینههای مرتبط با آموزش مدلهای مختلف، از CV اجتناب میکنید. به جای انجام k-Fold یا سایر تکنیکهای CV، ممکن است از زیرمجموعهای تصادفی از دادههای آموزشی خود به عنوان نگهدارنده برای اهداف اعتبارسنجی استفاده کنید.
به عنوان مثال، کتابخانه یادگیری عمیق Keras به شما امکان می دهد یکی از دو پارامتر را برای تابع fit که آموزش را انجام می دهد، ارسال کنید.
validation_split: درصدی از داده هایی که باید برای اعتبار سنجی نگهداری شوند
validation_data: چند عدد از (X, y) که باید برای اعتبارسنجی استفاده شود. این پارامتر پارامتر validation_split را نادیده می گیرد، به این معنی که شما می توانید تنها یکی از این پارامترها را در یک زمان استفاده کنید.
همین رویکرد در آموزش های رسمی سایر فریمورک های DL مانند PyTorch و MxNet استفاده می شود. آنها همچنین پیشنهاد می کنند مجموعه داده را به سه بخش تقسیم کنید: آموزش، اعتبار سنجی و آزمایش.
آموزش - بخشی از مجموعه داده برای آموزش
اعتبارسنجی - بخشی از مجموعه داده برای تأیید اعتبار در حین آموزش
تست - بخشی از مجموعه داده برای اعتبار سنجی نهایی مدل
با این حال، اگر مجموعه داده کوچک است (شامل صدها نمونه) می توانید از اعتبارسنجی متقاطع در وظایف DL استفاده کنید. در این مورد، یادگیری یک مدل پیچیده ممکن است یک کار بی ربط باشد، بنابراین مطمئن شوید که کار را بیشتر پیچیده نکنید.
بهترین روش ها و نکات
شایان ذکر است که گاهی اوقات انجام اعتبارسنجی متقابل ممکن است کمی مشکل باشد.
به عنوان مثال، اشتباه منطقی هنگام تقسیم مجموعه داده بسیار آسان است که ممکن است منجر به یک CV غیرقابل اعتماد شود.
ممکن است نکاتی را بیابید که باید هنگام تایید متقابل یک مدل در زیر مد نظر داشته باشید:
هنگام تقسیم داده ها منطقی باشید (آیا روش تقسیم منطقی است)
از روش CV مناسب استفاده کنید (آیا این روش برای مورد استفاده من قابل اجرا است)
هنگام کار با سری های زمانی، گذشته را تأیید نکنید (به اولین نکته مراجعه کنید)
هنگام کار با داده های پزشکی یا مالی، به یاد داشته باشید که آن را بر اساس شخص تقسیم کنید. از داشتن داده برای یک نفر هم در آموزش و هم در مجموعه تست خودداری کنید زیرا ممکن است به عنوان نشت داده در نظر گرفته شود
هنگام برش تکهها از تصاویر بزرگتر، به یاد داشته باشید که با شناسه تصویر بزرگ تقسیم کنید
البته، نکات از کار به کار متفاوت است و پوشش همه آنها تقریبا غیرممکن است. به همین دلیل است که انجام یک تجزیه و تحلیل داده های اکتشافی جامد قبل از شروع اعتبارسنجی متقابل یک مدل همیشه بهترین روش است.
افکار نهایی
اعتبار سنجی متقابل ابزار قدرتمندی است. هر دانشمند داده باید با آن آشنا باشد. در زندگی واقعی، شما نمی توانید پروژه را بدون تایید متقابل یک مدل به پایان برسانید.
به نظر من بهترین تکنیک های CV Nested k-Fold و استاندارد k-Fold هستند. من شخصاً از آنها در وظیفه تشخیص تقلب استفاده کردم. K-Fold تودرتو و همچنین GridSeachCV به من کمک کرد تا پارامترهای مدل خود را تنظیم کنم. از طرف دیگر، k-Fold برای ارزیابی عملکرد مدل من استفاده شد.
در این مقاله، ما متوجه شدیم که اعتبارسنجی متقابل چیست، چه تکنیکهای CV در طبیعت وجود دارد و چگونه آنها را پیادهسازی کنیم. در آینده الگوریتم های ML قطعاً حتی بهتر از امروز عمل خواهند کرد. با این حال، اعتبار سنجی متقابل همیشه برای پشتیبان گیری از نتایج شما مورد نیاز است.
امیدواریم با این اطلاعات، مشکلی در تنظیم CV برای پروژه بعدی یادگیری ماشینی خود نخواهید داشت!
منابع
https://www.geeksforgeeks.org/cross-validation-machine-learning/
https://machinelearningmastery.com/k-fold-cross-validation/
https://towardsdatascience.com/cross-validation-in-machine-learning-72924a69872f
https://towardsdatascience.com/why-and-how-to-do-cross-validation-for-machine-learning-d5bd7e60c189
https://scikit-learn.org/stable/modules/cross_validation.html
ولادیمیر لیاشنکو
جوان مشتاق هوش مصنوعی که به EdTech و Computer Vision در پزشکی علاقه دارد. من می خواهم با کمک به سایر افراد برای مطالعه، کشف فرصت های جدید و پیگیری سلامت خود از طریق فناوری های پیشرفته، دنیا را به مکانی بهتر تبدیل کنم.
من را دنبال کنید
بعدی را بخوانید
راهنمای نهایی برای ارزیابی و انتخاب مدلها در یادگیری ماشین
10 دقیقه خواندن | نویسنده سامدریتا قوش | به روز شده در 16 جولای 2021
در سطح بالا، یادگیری ماشین ترکیبی از آمار و محاسبات است. محور یادگیری ماشینی حول مفهوم الگوریتمها یا مدلهایی است که در واقع تخمینهای آماری روی استروئیدها هستند.
با این حال، هر مدل مفروض بسته به توزیع داده محدودیتهای متعددی دارد. هیچ یک از آنها نمی توانند کاملاً دقیق باشند زیرا آنها فقط تخمین هستند (حتی اگر روی استروئیدها باشند). این محدودیت ها عموماً با نام سوگیری و واریانس شناخته می شوند.
یک مدل با سوگیری زیاد با توجه نکردن به نکات آموزشی بیش از حد ساده می شود (به عنوان مثال: در رگرسیون خطی، صرف نظر از توزیع داده ها، مدل همیشه یک رابطه خطی را در نظر می گیرد).
یک مدل با واریانس بالا با تعمیم ندادن به نقاط آزمایشی که قبلاً ندیده است، خود را به داده های آموزشی محدود می کند (به عنوان مثال: جنگل تصادفی با حداکثر عمق = هیچ).
این مسئله زمانی به وجود می آید که محدودیت ها ظریف باشند، مانند زمانی که باید بین یک الگوریتم جنگل تصادفی و یک الگوریتم تقویت گرادیان یا بین دو تغییر الگوریتم درخت تصمیم یکسان، یکی را انتخاب کنیم. هر دو تمایل به واریانس بالا و سوگیری کم دارند.
اینجاست که انتخاب مدل و ارزیابی مدل مطرح می شود!
در این مقاله در مورد:
انتخاب مدل و ارزیابی مدل چیست؟
روشهای انتخاب مدل مؤثر (نمونهگیری مجدد و رویکردهای احتمالی)
روش های رایج ارزیابی مدل
معاوضه های مهم مدل یادگیری ماشین
https://neptune.ai/blog/the-ultimate-guide-to-evaluation-and-selection-of-models-in-machine-learning