Cross validation در یادگیری ماشین:چگونه به درستی یاد بگیریم!
در یادگیری ماشین (ML)، عملیات generalization معمولاً به توانایی الگوریتم در تاثیرگذاری در ورودی های مختلف اشاره دارد. یعنی مدل در مواجهه با ورودی های با توزیع یکسان کاهش عملکرد ندارد.
برای انسان generalization نرمال ترین چیز ممکن است. ما می توانیم به راحتی مثل آب خوردن طبقه بندی کنیم. به عنوان مثال، ما قطعاً یک سگ را می شناسیم حتی اگر قبلاً این نژاد را ندیده باشیم. با این وجود، ممکن است برای یک مدل MLکاملاً یک چالش جدی باشد. به همین دلیل است که بررسی توانایی الگوریتم برای generalizationیا همان کلی نگری یک کار مهم است که در ساخت مدل نیاز به توجه زیادی دارد.
برای این کار از Cross-Validation (CV) استفاده می کنیم.
در این گزارش به موارد زیر خواهیم پرداخت:
Cross validation چیست: تعریف، هدف استفاده و تکنیک ها
تکنیکهای مختلف CV: نگهداشتن، k-folds، Leave-one-out، Leave-p-out، k-foldمکرر، k-folds تودرتو، CVکامل
نحوه استفاده از این تکنیک ها: sklearn
Cross validation در یادگیری ماشین: sklearn، CatBoost
Cross validation در یادگیری عمیق: Keras، PyTorch، MxNet
بهترین شیوه ها و نکات: سری های زمانی، داده های پزشکی و مالی، تصاویر
Cross-Validationچیست؟
cross validationتکنیکی برای ارزیابی یک مدل یادگیری ماشین و آزمایش عملکرد آن است. CVمعمولاً در کارهای کاربردی ML استفاده می شود. این به مقایسه و انتخاب مدل های مناسب برای مسئله مدلسازی پیشبینی کمک کننده است.
درک CV آسان است، پیادهسازی آن آسان است، و مایل است بایاس کمتری داشته باشد نسبت به سایر روشهای مورد استفاده و برای شمارش امتیازهای موثر است. همه اینها cross valرا به ابزاری قدرتمند برای انتخاب بهترین مدل برای تبدیل می کند.
تکنیک های مختلفی وجود دارد که ممکن است برای اعتبارسنجی متقابل یک مدل استفاده شود. با این حال، همه آنها یک الگوریتم مشابه دارند:
1)مجموعه داده را به دو بخش تقسیم کنید: یکی برای آموزش، دیگری برای آزمایش
2)مدل را روی مجموعه آموزشی آموزش دهید
3)اعتبار سنجی مدل در مجموعه آزمایشی
مرحله 1-3 را چند بار تکرار کنید. این عدد به روش cvکه استفاده می کنید بستگی دارد.
همانطور که می دانید، تکنیک های CVزیادی وجود دارد. برخی از آنها معمولا استفاده می شوند، برخی دیگر فقط در تئوری کار می کنند. بیایید روشهای cv را که در این مقاله پوشش داده خواهد شد، ببینیم.
Hold-out
K-folds
Leave-one-out
Leave-p-out
Stratified K-folds
Repeated K-folds
Nested K-folds
Complete
Hold-out
cross validationHold-outساده ترین و رایج ترین تکنیک است. شاید ندانید که این روش شاید اصطلاحا hold out است اما مطمئناً هر روز از آن استفاده می کنید.
الگوریتم تکنیک Hold-out:
1)مجموعه داده را به دو بخش تقسیم کنید: مجموعه آموزشی و مجموعه تست. معمولاً 80 درصد مجموعه داده به مجموعه آموزشی و 20 درصد به مجموعه آزمایشی میرود، اما میتوانید هر تقسیمبندی را که مناسبتر باشد انتخاب کنید.
2)مدل را روی مجموعه آموزشی آموزش دهید
3)در مجموعه آزمایشی اعتبار سنجی کنید
4)نتیجه اعتبارسنجی را ذخیره کنید
ما معمولاً از روش نگهدارنده در مجموعه دادههای بزرگ استفاده میکنیم، زیرا فقط یک بار نیاز به آموزش مدل دارد.
اجرای hold outواقعاً آسان است. برای مثال، میتوانید این کار را با استفاده از sklearn.model_selection.train_test_splitانجام دهید.
?
با این حال، این روش یک نقطه ضعف بزرگ دارد.
به عنوان مثال، مجموعه داده ای که از نظر توزیع کاملاً یکنواخت نیست. اگر چنین است، ممکن است پس از splitدر یک نقطه ناهموار قرار بگیریم. به عنوان مثال، مجموعه آموزشی مجموعه تست را نشان نخواهد داد. هر دو مجموعه تمرین و تست ممکن است بسیار متفاوت باشند، یکی از آنها ممکن است آسان تر یا سخت تر باشد.
علاوه بر این، این واقعیت که ما مدل خود را فقط یک بار آزمایش می کنیم ممکن است یک چالش برای این روش باشد. با توجه به دلایل ذکر شده در بالا، ممکن است نتیجه به دست آمده با تکنیک Hold-outنادرست در نظر گرفته شود.
k-fold
K-Fold CV تکنیکی است که معایب روش hold out را به حداقل می رساند. k-Fold روش جدیدی برای تقسیم مجموعه داده معرفی می کند که به غلبه بر "تست فقط یک بار " کمک می کند.
الگوریتم تکنیک k-Fold:
1)تعدادی kرا انتخاب کنید . معمولاً 5 یا 10 است، اما میتوانید هر عددی را انتخاب کنید که کمتر از طول مجموعه داده باشد.
2)مجموعه داده را به kقسمت مساوی (در صورت امکان) تقسیم کنید (به آنها foldsگفته می شود)
3)
k – 1 folds را انتخاب کنید که مجموعه آموزشی خواهد بود. Fold باقی مانده مجموعه آزمایشی خواهد بود
4)مدل را روی مجموعه آموزشی آموزش دهید. در هر تکرار cv باید یک مدل جدید مستقل از مدل آموزش داده شده در تکرار قبلی آموزش دهید.
5)در مجموعه آزمایشی اعتبار سنجی کنید
6)نتیجه اعتبارسنجی را ذخیره کنید
7)مراحل 3-6 را تکرار کنید. هر بار از foldباقی مانده به عنوان مجموعه تست استفاده کنید. در پایان، شما باید مدل را روی هر فولد که دارید اعتبارسنجی کرده باشید.
8)برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله 6 به دست آوردید.
برای انجام اعتبارسنجی متقاطع k-Foldمی توانید از sklearn.model_selection.KFoldاستفاده کنید.
?
به طور کلی همیشه بهتر است به جای Hold-outاز تکنیک k-Fold استفاده کنید. از آنجایی که آموزش و آزمایش بر روی چندین بخش مختلف مجموعه داده انجام می شود مقایسه k-Fold نتیجه پایدارتر و قابل اعتمادتری به دست می دهد. اگر تعداد k را افزایش دهیم تا مدل را روی بسیاری از زیر مجموعههای مختلف مختلف آزمایش کنیم، میتوانیم امتیاز کلی را قویتر کنیم.
با این حال، روش k-Fold یک نقطه ضعف دارد. افزایش kمنجر به آموزش مدل های بیشتر می شود و فرآیند آموزش ممکن است واقعاً گران و زمان بر باشد.
Leave one out
اعتبار سنجی متقابل (LOOCV) یک مورد خاص از K-Fold CV است. تصور کنید که k برابر با nباشد که n تعداد نمونه های مجموعه داده است. چنین مورد k-Fold معادل تکنیک Leave-one-outاست.
الگوریتم تکنیک LOOCV:
1)یک نمونه از مجموعه داده را انتخاب کنید که مجموعه آزمایشی خواهد بود
2)
n – 1 نمونه باقیمانده مجموعه آموزشی خواهد بود
3)مدل را روی مجموعه آموزشی آموزش دهید. در هر تکرار، یک مدل جدید باید آموزش داده شود
4)در مجموعه آزمایشی اعتبار سنجی کنید
5)نتیجه اعتبارسنجی را ذخیره کنید
6)مراحل 1 تا 5را nبار تکرار کنید، همانطور که برای n نمونه، nمجموعه آموزشی و تست متفاوت داریم.
7)برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله 5 به دست آوردید.
برای LOOCV sklearnهمچنین دارای یک روش داخلی است. می توان آن را در کتابخانه model_selection - sklearn.model_selection.LeaveOneOut پیدا کرد.
?
بزرگترین مزیت Leave-one-outاین است که داده های زیادی را هدر نمی دهد. ما فقط از یک نمونه از کل مجموعه داده به عنوان یک مجموعه آزمایشی استفاده می کنیم، در حالی که بقیه مجموعه آموزشی است. اما وقتی با k-Fold CV مقایسه میشود، LOOCV نیاز به ساخت nمدل به جای k مدل دارد، وقتی میدانیم که nکه تعداد نمونههای مجموعه داده است بسیار بیشتر از kاست. این بدان معناست که LOOCV از نظر محاسباتی گرانتر از k-Fold است، ممکن است زمان زیادی برای اعتبارسنجی متقابل مدل با استفاده از LOOCVنیاز باشد.
بنابراین، جامعه علوم داده یک قاعده کلی بر اساس شواهد تجربی و تحقیقات مختلف دارد که نشان میدهد که روش 5 یا 10 فولد باید بر LOOCVترجیح داده شود.
Leave p out
P-out (LpOC) شبیه به leave one out CV است زیرا تمام مجموعه های آموزشی و آزمایشی ممکن را با استفاده از نمونه های p به عنوان مجموعه آزمایشی ایجاد می کند.
با این حال، شایان ذکر است که بر خلاف LOOCVو مجموعههای تست k-Fold برای LpOCاگر p بالاتر از 1 باشد، همپوشانی دارند.
الگوریتم تکنیک LpOC:
1)نمونه های pرا از مجموعه داده انتخاب کنید که مجموعه آزمایشی خواهد بود
2)
n - p نمونه باقیمانده مجموعه آموزشی خواهد بود
3)مدل را روی مجموعه آموزشی آموزش دهید. در هر تکرار، یک مدل جدید باید آموزش داده شود
4)در مجموعه آزمایشی اعتبار سنجی کنید
5)نتیجه اعتبارسنجی را ذخیره کنید
6)مراحل 2 تا 5 ? را تکرار کنید
7)برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله 5 به دست آوردید
میتوانید Leave-p-out CVرا با استفاده از sklearn – sklearn.model_selection.LeavePOutانجام دهید.
?
Stratified k-Fold
گاهی اوقات ممکن است با عدم تعادل زیادی در مقدار اصلی هدف در مجموعه داده مواجه شویم. به عنوان مثال، در مجموعه دادههای مربوط به قیمت ساعتهای مچی، ممکن است تعداد بیشتری از ساعتهای مچی قیمت بالایی داشته باشند. در مورد طبقهبندی، در مجموعه دادههای گربهها و سگها ممکن است تغییر زیادی به سمت طبقه سگ وجود داشته باشد.
K-Fold طبقه بندی شده نوعی از تکنیک استاندارد K-Fold CVاست که به گونه ای طراحی شده است که در چنین مواردی از عدم تعادل هدف بکارگرفته شود.
به صورت زیر عمل می کند. K-Foldطبقه بندی شده مجموعه داده را بر روی k فولد تقسیم می کند به طوری که هر فولد تقریباً دارای درصد مشابهی از نمونه های هر کلاس هدف به عنوان مجموعه کامل است. در مورد رگرسیون، Stratified k-Foldاطمینان حاصل می کند که میانگین مقدار هدف تقریباً در همه فولد ها برابر است.
الگوریتم تکنیک طبقه بندی k-fold:
1)تعدادی فولد را انتخاب کنید - k
2)مجموعه داده را به k تعداد تقسیم کنید. هر فولد باید تقریباً دارای درصد مشابهی از نمونههای هر کلاس هدف در مجموعه کامل باشد
3)
k – 1 folds را انتخاب کنید که مجموعه آموزشی خواهد بود. و باقیمانده مجموعه آزمایشی خواهد بود
4)مدل را روی مجموعه آموزشی آموزش دهید. در هر تکرار یک مدل جدید باید آموزش داده شود
5)در مجموعه آزمایشی اعتبار سنجی کنید
6)نتیجه اعتبارسنجی را ذخیره کنید
7)مراحل را 3 تا 6 را kبارتکرار کنید. هر بار از فولد باقی مانده به عنوان مجموعه تست استفاده کنید. در پایان، شما باید مدل را روی هر فولد که دارید اعتبارسنجی کرده باشید.
8)برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله 6 به دست آوردید.
همانطور که ممکن است متوجه شده باشید، الگوریتم تکنیک Stratified k-Fold شبیه به K-Foldsاستاندارد است. شما نیازی به کدنویسی اضافی ندارید زیرا این روش همه کارهای لازم را برای شما انجام می دهد.
Stratified k-Fold همچنین یک روش داخلی در sklearn دارد - sklearn.model_selection.StratifiedKFold.
?
k-foldمکرر:
اعتبارسنجی متقابل k-Foldمکرر یا CV نمونهبرداری تصادفی مکرر احتمالاً قویترین تکنیک از تمام تکنیکهای CV در این گزارش است. این یک تغییر از k-Fold است اما در مورد K-Folds تکراری kتعداد فولد ها نیست. تعداد دفعاتی است که ما مدل را آموزش خواهیم داد.
ایده کلی این است که در هر تکرار، نمونههایی را بهطور تصادفی از سرتاسر مجموعه داده به عنوان مجموعه آزمایشی انتخاب میکنیم. به عنوان مثال، اگر تصمیم بگیریم که 20٪ از مجموعه داده ها مجموعه آزمایشی ما باشد، 20٪ نمونه به طور تصادفی انتخاب می شوند و 80٪ بقیه به مجموعه آموزشی تبدیل می شوند.
الگوریتم تکنیک Repeated k-Fold:
1)kرا انتخاب کنید -k بار مدل آموزش داده می شود
2)تعدادی نمونه را انتخاب کنید که مجموعه آزمایشی خواهد بود
3)مجموعه داده را تقسیم کنید
4)روی مجموعه آموزشی تمرین کنید. در هر تکرار اعتبارسنجی متقاطع، یک مدل جدید باید آموزش داده شود
5)در مجموعه آزمایشی اعتبار سنجی کنید
6)نتیجه اعتبارسنجی را ذخیره کنید
7)مراحل را 3-6 راkبار تکرار کنید
8)برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله 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) را تنظیم کنید. این تضمین می کند که در هر تکرار فولد های مختلفی خواهید داشت.
?
K-Fold تو در تو
برخلاف سایر تکنیکهای CV، که برای ارزیابی کیفیت یک الگوریتم طراحی شدهاند، Nested k-Fold CV محبوبترین راه برای تنظیم پارامترهای یک الگوریتم است.
تصور کنید که ما یک پارامتر pداریم که معمولاً به الگوریتم پایه ای که ما در حال cross val آن هستیم بستگی دارد. به عنوان مثال، برای رگرسیون لجستیک، ممکن است پارامتر جریمه باشد که برای تعیین رفتار مورد استفاده در جریمه استفاده می شود.
الگوریتم تکنیک Nested k-Fold:
1)k را انتخاب کنید – تعداد فولد، به عنوان مثال، 10 - فرض کنیم این عدد را انتخاب کرده ایم
2)یک پارامتر pرا انتخاب کنید. فرض کنید الگوریتم ما رگرسیون لجستیک است و pپارامتر جریمه p = {'l1', 'l2', 'elasticnet', 'none'}
3)مجموعه داده را به 10 تا تقسیم کنید و یکی از آنها را برای آزمایش در نظر بگیریم.
4)یکی از فولدهای آموزشی را برای اعتبار سنجی رزرو کنید
5)برای هر مقدار pروی 8 فولد آموزشی باقیمانده آموزش دهید و روی فولد اعتبارسنجی ارزیابی کنید. اکنون 4 نوع اندازه گیری دارید
6)مراحل 4-5 را 9 بار تکرار کنید. برگردید ببینید که کدام فولد آموزشی، فولد اعتبارسنجی است. اکنون تعداد 9*4 بار اندازه گیری دارید
7)pرا انتخاب کنید که میانگین خطای آموزش را برای 9 فولد به حداقل برساند. از آن pبرای ارزیابی روی مجموعه تست استفاده کنید
8)از مرحله 2 تعداد10 بار تکرار کنید و از هرفولد به نوبت به عنوان فولد تست استفاده کنید
9)میانگین و انحراف معیار اندازه گیری ارزیابی را در 10 فولد تست ذخیره کنید
10)الگوریتمی که بهترین عملکرد را داشت، الگوریتمی بود که بهترین میانگین عملکرد خارج از نمونه را در 10 فولد آزمایشی داشت.
این تکنیک از نظر محاسباتی گران است زیرا در طول مراحل 1 تا 10 تعداد زیادی مدل باید آموزش و ارزیابی شوند. با این حال، Nested k-Fold CV معمولا استفاده می شود و ممکن است در چندین کار ML واقعاً مؤثر باشد.
متأسفانه، هیچ روش داخلی در sklearnوجود ندارد که بتواند CV Nested k-Fold را برای شما انجام دهد. این لحظه ای است که شما باید یا گوگل کنید و پیاده سازی شخصی را پیدا کنید یا خودتان آن را کدنویسی کنید.
Complete cross validation
CV کامل کم استفاده ترین تکنیک CV است. ایده کلی این است که ما یک عدد k - طول مجموعه آموزشی را انتخاب می کنیم و روی هر تقسیم ممکن شامل kنمونه در مجموعه آموزشی اعتبار سنجی می کنیم.
مقدار آن تقسیمها را میتوان به صورت ?محاسبه کرد که n طول مجموعه داده است. اگر kبالاتر از 2 باشد، باید مدل خود را چندین بار آموزش دهیم که همانطور که قبلاً متوجه شدیم زمان فرآیند گران قیمت و از نظر محاسباتی است.
به همین دلیل است که از CVکامل یا در تحقیقات نظری استفاده می شود و یا در صورت محاسبه فرمول که به حداقل رساندن محاسبات کمک می کند.
الگوریتم اعتبار سنجی cvکامل:
1)یک عدد kرا انتخاب کنید - طول مجموعه آموزشی
2)مجموعه داده را تقسیم کنید
3)روی مجموعه آموزشی تمرین کنید
4)در مجموعه آزمایشی اعتبار سنجی کنید
5)نتیجه اعتبارسنجی را ذخیره کنید
6)مراحل 2 تا 5را ? را تکرار کنید
7)برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله 5 به دست آوردید
اعتبار سنجی cross validation در یادگیری ماشین
بیشتر تکنیک های اعتبار سنجی ذکر شده در بالا به طور گسترده در ML استفاده می شود. مهم است که به خاطر داشته باشید که استفاده از تکنیک CV مناسب ممکن است در زمان شما صرفه جویی کند و به انتخاب بهترین مدل برای کار کمک کند.
این بدان معناست که اولاً، بهتر است همیشه مدل را cross validate کنید و ثانیاً باید یک روش CVمربوطه را انتخاب کنید. بنابراین، دانستن مزایا و معایب تکنیکهای اعتبارسنجی حیاتی است.
شایان ذکر است که اگر میخواهید مدل را اعتبار متقابل کنید، همیشه باید دفترچه راهنمای مدل را بررسی کنید زیرا برخی از الگوریتمهای ML، به عنوان مثال، CatBoostروشهای CV داخلی خود را دارند. ممکن است آنها را مربوط به کار مور نظر ML خود بیابید و به جای روش های sklearnاز آنها استفاده کنید.
به طور کلی، همانطور که ممکن است متوجه شده باشید، بسیاری از تکنیکهای CV دارای روشهای داخلی sklearn هستند. من به شدت توصیه می کنم از آنها استفاده کنید زیرا این روش ها در زمان زیادی برای کارهای پیچیده تر صرفه جویی می کنند.
Cross validationدر یادگیری عمیق
اعتبار سنجی متقابل در یادگیری عمیق (DL) ممکن است کمی مشکل باشد زیرا اکثر تکنیک های CVحداقل چند بار نیاز به آموزش مدل دارند.
در یادگیری عمیق، معمولاً به دلیل هزینههای مرتبط با آموزش مدلهای مختلف،ممکن است از CV اجتناب کنید. به جای انجام k-Fold یا سایر تکنیکهای CV، ممکن است از زیرمجموعهای تصادفی از دادههای آموزشی خود به عنوان نگهدارنده برای اهداف اعتبارسنجی استفاده کنید.
به عنوان مثال، کتابخانه یادگیری عمیق Kerasبه شما امکان می دهد یکی از دو پارامتر را برای تابع fitکه آموزش را انجام می دهد، ارسال کنید.
validation_split: درصدی از داده هایی که باید برای اعتبار سنجی نگهداری شوند
validation_data: چند عدد از (X, y) که باید برای اعتبارسنجی استفاده شود. این پارامتر پارامتر validation_split را نادیده می گیرد، به این معنی که شما می توانید تنها یکی از این پارامترها را در یک زمان استفاده کنید.
همین رویکرد در آموزش های رسمی سایر فریمورک های DLمانند PyTorch و MxNetاستفاده می شود. آنها همچنین پیشنهاد می کنند مجموعه داده را به سه بخش تقسیم کنید: آموزش، اعتبار سنجی و آزمایش.
آموزش – بخشی از مجموعه داده برای آموزش
اعتبار سنجی - بخشی از مجموعه داده برای اعتبارسنجی در حین آموزش
تست - بخشی از مجموعه داده برای اعتبار سنجی نهایی مدل
بهترین روش ها و نکات
شایان ذکر است که گاهی اوقات انجام اعتبارسنجی متقابل ممکن است کمی مشکل باشد.
به عنوان مثال، اشتباه منطقی هنگام تقسیم مجموعه داده بسیار آسان است که ممکن است منجر به یک CVغیرقابل اعتماد شود.
ممکن است نکاتی را بیابید که باید هنگام تایید متقابل یک مدل در زیر مد نظر داشته باشید:
· هنگام تقسیم داده ها منطقی باشید (آیا روش تقسیم منطقی است)
· از روش CVمناسب استفاده کنید (آیا این روش برای مورد استفاده من قابل اجرا است)
· هنگام کار با سری های زمانی، گذشته را تأیید نکنید (به اولین نکته مراجعه کنید)
· هنگام کار با داده های پزشکی یا مالی، به یاد داشته باشید که آن را بر اساس شخص تقسیم کنید. از داشتن داده برای یک نفر هم در آموزش و هم در مجموعه تست خودداری کنید زیرا ممکن است به عنوان نشت داده در نظر گرفته شود
· هنگام برش تکهها از تصاویر بزرگتر، به یاد داشته باشید که با شناسه تصویر بزرگ تقسیم کنید
البته، نکات از کار به کار متفاوت است و پوشش همه آنها تقریبا غیرممکن است. به همین دلیل است که انجام یک تجزیه و تحلیل داده های اکتشافی solid قبل از شروع اعتبارسنجی متقابل یک مدل همیشه بهترین روش است.
مطلب نهایی
اعتبار سنجی متقابل ابزار قدرتمندی است. هر دانشمند داده باید با آن آشنا باشد. در زندگی واقعی، شما نمی توانید پروژه را بدون تایید متقابل یک مدل به پایان برسانید.
به نظر من بهترین تکنیک های CV Nested k-Fold و استاندارد k-Foldهستند. من شخصاً از آنها در وظیفه تشخیص تقلب استفاده کردم. K-Foldتودرتو و همچنین GridSeachCV به من کمک کرد تا پارامترهای مدل خود را تنظیم کنم. از طرف دیگر، k-Foldبرای ارزیابی عملکرد مدل من استفاده شد.
در این مقاله، ما متوجه شدیم که اعتبارسنجی متقابل چیست، چه تکنیکهای CV در طبیعت وجود دارد و چگونه آنها را پیادهسازی کنیم. در آینده الگوریتم های MLقطعاً حتی بهتر از امروز عمل خواهند کرد. با این حال، اعتبار سنجی متقابل همیشه برای پشتیبان گیری از نتایج شما مورد نیاز است.
امیدواریم با این اطلاعات، مشکلی در تنظیم CVبرای پروژه بعدی یادگیری ماشینی خود نخواهید داشت!
منبع:
https://neptune.ai/blog/cross-validation-in-machine-learning-how-to-do-it-right