cross validation

اعتبار سنجی متقابل در یادگیری ماشینی : چگونه آن را به درستی انجام دهیمدر یادگیری ماشینی واژه تعمیم, به توانایی یک الگوریتم برای مؤثر بودن در ورودی های مختلف اشاره دارد. به این معناست که مدل یادگیری ماشین با کاهش عملکرد در ورودی های جدید از توزیع یکسان داده های آموزشی مواجه نمی شود. برای انسان واژه تعمیم یه چیز طبیعی است. مثلا ما می توانیم در پرواز طبقه بندی کنیم. یا اینکه، ما قطعاً یک سگ را می شناسیم حتی اگر هیچوقت این نژاد را ندیده باشیم. ممکن است این برای یک مدل یادگیری ماشین یک چالش باشد. به همین دلیل است که بررسی توانایی الگوریتم برای تعمیم یک کار مهم است که در ساخت مدل نیاز به توجه زیادی دارد.برای این کار از اعتبار سنجی استفاده میکنیم.در این مقاله این موارد را بررسی میکنیم:اعتبار متقابل چیست, تعریف, هدف استفاده و تکنیک ها تکنیک‌های مختلف اعتبارسنجی : hold-out ، k-folds، Leave-one-out، Leave-p-out،k-fold طبقه‌بندی شده، k-fold مکرر k-folds , اعتبارسنجی تودرتو، کاملنحوه استفاده از این تکنیک ها: sklearn(اسکلره کردن)اعتبار سنجی متقابل در یادگیری ماشینی: sklearn، CatBoostاعتبار سنجی متقابل در یادگیری عمیق: Keras، Pytorch، M xNetبهترین شیوه ها و نکات: سری های زمانی، داده های پزشکی و مالی، تصاویراعتبار سنجی چیست؟ اعتبار سنجی متقابل تکنیکی است برای ارزیابی یک مدل یادگیری ماشین و آزمایش عملکرد آن .اعتبارسنجی معمولاً در کارهای کاربردی یادگیری ماشین استفاده می شود. این روش به مقایسه و انتخاب یک مدل مناسب برای مسئله مدل‌سازی پیش‌بینی‌کننده خاص کمک می‌کند. درک مدل اعتبارسنجی و پیاده‌سازی آن آسان است و نسبت به سایر روش‌های مورد استفاده برای شمارش امتیازهای کارایی مدل، سوگیری کمتری دارد. همه اینها اعتبارسنجی متقابل را به ابزاری قدرتمند برای انتخاب بهترین مدل برای کار خاص تبدیل می کند. تکنیک های مختلفی وجود دارد که ممکن است برای اعتبارسنجی متقابل یک مدل استفاده شود. با این حال، همه آنها از یک الگوریتم مشابه استفاده می کنند : در این روش مجموعه داده را به دو بخش تقسیم کنید : یکی برای آموزش، دیگری برای آزمایش مدل را روی مجموعه آموزشی آموزش دهید اعتبار مدل را در مجموعه آزمایشی تأیید کنید.این سه مرحله را چند بار تکرار کنید. این عدد به روش رزومه ای که استفاده می کنید بستگی دارد. همانطور که می دانید، تکنیک های اعتبارسنجی متقابل زیادی وجود دارد. برخی از آنها معمولا استفاده می شوند، برخی دیگر فقط در تئوری کار می کنند. در اینجا میخواهیم روش‌های اعتبارسنجی متقاطع را که در این مقاله در مورد آن صحبت میشود، ببینیم: نگه داشتن . K دسته , کنارگذاشتن , ترک کردن , k دسته طبقه بندی شده , K دسته مکرر , K دسته تودرتو ,کامل . نگه داشتن : این نوع اعتبار سنجی متقابل ساده ترین و رایج ترین تکنیک است. این روش یک نگهدارنده است اما مطمئناً هر روز از آن استفاده می کنید.الگوریتم این تکنیک به صورت زیر است: مجموعه داده را به دو بخش تقسیم کنید: مجموعه آموزشی و مجموعه تست. معمولاً 80 درصد مجموعه داده به مجموعه آموزشی و 20 درصد به مجموعه آزمایشی می‌رود، اما می‌توانید هر تقسیم‌بندی را انتخاب کنید که مناسب‌تر باشد. مدل را روی مجموعه آموزشی آموزش دهید.در مجموعه آزمایشی اعتبار سنجی کنید نتیجه اعتبارسنجی را ذخیره کنید. ما معمولاً از روش نگهدارنده در مجموعه داده‌های بزرگ استفاده می‌کنیم زیرا فقط یک بار نیاز به آموزش مدل دارد.?اجرای نگهدارنده واقعاً آسان است. می‌توانید این کار را با استفاده از کد sklearn.model_selection.train_test_split انجام دهید این کار داده ها را به دوقسمت آموزشی و آزمایشی تقسیم میکند.import numpy as npfrom sklearn.model_selection import train_test_splitX, y = np.arange(10).reshape((5, 2)), range(5)X_train, X_test, y_train, y_test = train_test_split(X, y,test_size=0.2 , random_state=111)با این حال، نگه داشتن یک نقطه ضعف بزرگ دارد.به عنوان مثال، اگر مجموعه داده ای از نظر توزیع کاملاً یکنواخت نیست ممکن است پس از تقسیم در یک نقطه ناهموار قرار بگیریم. به عنوان مثال، مجموعه آموزشی مجموعه تست را نشان نخواهد داد. هر دو مجموعه تمرین و تست ممکن است بسیار متفاوت باشند، یکی از آنها ممکن است آسان تر یا سخت تر باشد.علاوه بر این، این واقعیت که ما مدل خود را فقط یک بار آزمایش می کنیم ممکن است یک گلوگاه برای این روش باشد. با توجه به دلایلی که قبلا ذکر شد، نتیجه به دست آمده با تکنیک نگه داشتن ممکن است نادرست در نظر گرفته شود.اعتبار سنجی k دسته : تعدادی دسته را انتخاب کنید.معمولاً 5 یا 10 دسته ، اما می‌توانید هرعددی را انتخاب کنید که کمتر از طول مجموعه داده باشد. مجموعه داده را به k قسمت مساوی (در صورت امکان) تقسیم کنید (به آنها دسته گفته می شود . k-1 دسته را انتخاب کنید که مجموعه آموزشی خواهد بود. تای باقیمانده مجموعه آزمایشی خواهد بودمدل را روی مجموعه آموزشی آموزش دهید. در هر تکرار اعتبارسنجی متقاطع، باید یک مدل جدید مستقل از مدل آموزش داده شده در تکرار قبلی آموزش دهید.در مجموعه آزمایشی اعتبار سنجی کنید. نتیجه اعتبارسنجی را ذخیره کنیداین مراحل هزار بار تکرار کنید. هر بار از دسته باقی مانده به عنوان مجموعه تست استفاده کنید. در پایان، شما باید مدل را روی هر دسته که دارید اعتبارسنجی کرده باشید. برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله اخر به دست آوردیدبرای انجام اعتبارسنجی متقاطع k دسته می توانید از دستور sklearn.model_selection.KFold استفاده کنید.import numpy as npfrom sklearn.model_selection import KFoldX = 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]بهتر است همیشه به جای تکنیک نگه داشتن از تکنیک k دسته استفاده کنید. از آنجایی که آموزش و آزمایش بر روی چندین بخش مختلف مجموعه داده انجام می شود، به صورت مو به مو، مقایسه k دسته نتیجه پایدارتر و قابل اعتمادتری به دست می دهد. اگر تعداد k ها را افزایش دهیم تا مدل را روی بسیاری از زیر مجموعه‌های مختلف آزمایش کنیم، می‌توانیم امتیاز کلی را قوی‌تر کنیم. با این حال، روش k دسته یک نقطه ضعف دارد. افزایش k منجر به آموزش مدل های بیشتر می شود و فرآیند آموزش ممکن است واقعاً گران و زمان بر باشد. تکنیکLeave-one-out : اعتبار سنجی متقابل یک مورد قوی تر از اعتبارسنجی متقاطع است. تصور کنید که k برابر با n باشد که n تعداد نمونه های مجموعه داده است. چنین موردی معادل تکنیک Leave-one-out است. الگوریتم تکنیک اعتبارسنجی متقابل : یک نمونه از مجموعه داده را انتخاب کنید که مجموعه آزمایشی خواهد بود . n – 1 نمونه باقیمانده مجموعه آموزشی خواهد بود مدل را روی مجموعه آموزشی آموزش دهید. در هر تکرار، یک مدل جدید باید آموزش داده شود در مجموعه آزمایشی اعتبار سنجی کنید . نتیجه اعتبارسنجی را ذخیره کنید .این مراحل را n بار تکرار کنید، به این ترتیب برای n نمونه، n مجموعه آموزشی و تست متفاوت داریم. برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله آخر به دست آوردید. اعتبارسنجی sklearn دارای یک روش داخلی است. می توان آن را در کتابخانه model_selection - sklearn.model_selection.LeaveOneOut پیدا کرد.import numpy as npfrom sklearn.model_selection import LeaveOneOutX = np.array([[1, 2], [3, 4]])y = np.array([1, 2])loo = LeaveOneOut()for train_index, test_index in loo.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 دسته مقایسه می‌شود، اعتبارسنجی متقابل نیاز به ساخت n مدل به جای k مدل دارد، وقتی می‌دانیم که n که مخفف تعداد نمونه‌های مجموعه داده است بسیار بیشتر از k است. این بدان معناست که اعتبارسنجی متقابل از نظر محاسباتی گرانتر از kدسته است، ممکن است زمان زیادی برای اعتبارسنجی متقابل مدل با استفاده از اعتبارسنجی متقابل نیاز باشد.بنابراین،یک قاعده کلی بر اساس شواهد تجربی و تحقیقات مختلف دارد که نشان می‌دهد اعتبارسنجی متقاطع 5 یا 10 برابر باید بر اعتبارسنجی متقابل ترجیح داده شود.اعتبار سنجی متقاطع ترک p : اعتبار سنجی متقاطع ترک p شبیه به ترک یک خروجی اعتبارسنجی است زیرا تمام مجموعه های آموزشی و آزمایشی ممکن را با استفاده از نمونه های p به عنوان مجموعه آزمایشی ایجاد می کند. تمام موارد ذکر شده در مورد اعتبارسنجی متقابل و برای اعتبارسنجی متقاطع ترک p درست است. با این حال، بر خلاف اعتبارسنجی متقابل و مجموعه‌های تستk دسته برای اعتبار سنجی متقاطع ترک p , اگر p بالاتر از 1 باشد، همپوشانی دارند. الگوریتم این تکنیک به صورت زیر است : نمونه های p را از مجموعه داده انتخاب کنید که مجموعه آزمایشی خواهد بود n-p نمونه باقیمانده مجموعه آموزشی خواهد بود . مدل را روی مجموعه آموزشی آموزش دهید. در هر تکرار، یک مدل جدید باید آموزش داده شود .در مجموعه آزمایشی اعتبار سنجی کنید نتیجه اعتبارسنجی را ذخیره کنید . این مراحل را n بار را تکرار کنید . برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله آخر است را به دست آوردید.میتوانید اعتبارسنجی ترک p را با استفاده از دستور sklearn – sklearn.model_selection.LeavePOut. به دست آوریدimport numpy as npfrom sklearn.model_selection import LeavePOutX = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])y = np.array([1, 2, 3, 4])lpo = LeavePOut(2)for train_index, test_index in lpo.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]اعتبار سنجی متقاطع ترک pتمام معایب اعتبارسنجی متقابل را دارد اما با این وجود به اندازه اعتبارسنجی متقابل قوی است .طبقه بندی k دسته : گاهی اوقات ممکن است با عدم تعادل زیادی در مقدار هدف در مجموعه داده مواجه شویم. به عنوان مثال، در مجموعه داده‌های مربوط به قیمت ساعت‌های مچی، ممکن است تعداد بیشتری از ساعت‌های مچی قیمت بالایی داشته باشند. در مورد طبقه‌بندی، در مجموعه داده‌های گربه‌ها و سگ‌ها ممکن است تغییر زیادی به سمت طبقه سگ وجود داشته باشد.روش k دسته طبقه بندی شده نوعی از تکنیک استاندارد اعتبارسنجی k دسته است که به گونه ای طراحی شده است که در چنین مواردی از عدم تعادل هدف موثر باشدk دسته طبقه بندی شده مجموعه داده را روی k تقسیم می کند به طوری که هر دسته تقریباً دارای درصد مشابهی از نمونه های هر کلاس هدف به عنوان مجموعه کامل است. در مورد رگرسیون، طبقه بندی k دسته اطمینان حاصل می کند که میانگین مقدار هدف تقریباً در همه دسته ها برابر است. الگوریتم این تکنیک به صورت زیر است :K دسته را انتخاب کنید . مجموعه داده را به k برابر تقسیم کنید. هر دسته باید تقریباً دارای درصد مشابهی از نمونه‌های هر کلاس هدف در مجموعه کامل باشد .k-1 دسته را انتخاب کنید که مجموعه آموزشی خواهد بود. تای باقیمانده مجموعه آزمایشی خواهد بود. مدل را روی مجموعه آموزشی آموزش دهید. در هر تکرار یک مدل جدید باید آموزش داده شود.در مجموعه آزمایشی اعتبار سنجی کنید .نتیجه اعتبارسنجی را ذخیره کنید این مراحل را هزار بار تکرار کنید. هر بار از دسته باقی مانده به عنوان مجموعه تست استفاده کنید. در پایان، شما باید مدل را روی هر دسته که دارید اعتبارسنجی کرده باشید.برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحلهآخر را به دست آوردید. الگوریتم تکنیک طبقه بندی k دسته مشابه kدسته استاندارد است. شما نیازی به کدنویسی اضافی ندارید زیرا این روش همه کارهای لازم را برای شما انجام می دهد.این تکنیک یک روش داخلی در sklearn دارد sklearn.model_selection.StratifiedKFoldimport numpy as npfrom sklearn.model_selection import StratifiedKFoldX = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])y = np.array([0, 0, 1, 1])skf = StratifiedKFold(n_splits=2)for train_index, test_index in skf.split(X, y):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 دسته برای تکنیک طبقه بندی k دسته نیز صادق است. هنگام انتخاب بین روش های مختلف اعتبارسنجی، مطمئن شوید که از روش مناسب استفاده می کنید. به عنوان مثال، ممکن است فکر کنید که مدل شما عملکرد بدی دارد، صرفاً به این دلیل که از اعتبارسنجی k دسته برای اعتبارسنجی مدلی استفاده می‌کنید که بر روی مجموعه داده با عدم تعادل کلاس آموزش داده شده است. برای جلوگیری از آن، همیشه باید یک تجزیه و تحلیل داده های اکتشافی مناسب روی داده های خود انجام دهید.اعتبارسنجی متقابل kدسته مکرر : اعتبارسنجی متقابل k دسته مکرر یا اعتبارسنجی نمونه‌برداری تصادفی فرعی مکرر احتمالاً قوی‌ترین تکنیک از تمام تکنیک‌های اعتبارسنجی در این مقاله است. این یک تغییر از k دسته است اما در مورد k دسته های تکراری k تعداد تاها نیست. تعداد دفعاتی است که ما مدل را آموزش خواهیم داد. ایده کلی این است که در هر تکرار، نمونه‌هایی را به‌طور تصادفی از سرتاسر مجموعه داده به عنوان مجموعه آزمایشی انتخاب می‌کنیم. به عنوان مثال، اگر تصمیم بگیریم که 20٪ از مجموعه داده ها مجموعه آزمایشی ما باشد، 20٪ نمونه به طور تصادفی انتخاب می شوند و 80٪ بقیه به مجموعه آموزشی تبدیل می شوند. تکنیک این الگوریتم به صورت زیر است: k را انتخاب کنید - چند بار مدل آموزش داده می شودتعدادی نمونه را انتخاب کنید که مجموعه آزمایشی خواهد بود . مجموعه داده را تقسیم کنیدروی مجموعه آموزشی تمرین کنید. در هر تکرار اعتبارسنجی متقاطع، یک مدل جدید باید آموزش داده شود در مجموعه آزمایشی اعتبار سنجی کنید نتیجه اعتبارسنجی را ذخیره کنید این مراحل را هزار بار تکرار کنید برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله آخر به دست آوردید است. K دسته مکرر مزایای واضحی نسبت به استاندارد اعتبارسنجی k دسته دارد. اولا، نسبت تقسیم آموزش / آزمایش به تعداد تکرارها بستگی ندارد. ثانیا، ما حتی می توانیم نسبت های منحصر به فردی را برای هر تکرار تنظیم کنیم. ثالثاً، انتخاب تصادفی نمونه‌ها از مجموعه داده‌ها، K دسته مکرر را برای سوگیری انتخاب قوی‌تر می‌کند با این حال، برخی از معایب وجود دارد. اعتبارسنجی k دسته تضمین می‌کند که مدل روی همه نمونه‌ها آزمایش می‌شود، در حالی که K دسته تکراری بر اساس تصادفی‌سازی است به این معنی است که برخی از نمونه‌ها ممکن است هرگز برای قرار گرفتن در مجموعه آزمایش انتخاب نشوند. در همان زمان، برخی از نمونه ها ممکن است چندین بار انتخاب شوند.Sklearn به شما در پیاده سازی اعتبارسنجی K دسته مکرر کمک می کند. فقط از sklearn.model_selection.RepeatedKFold استفاده کنید. در اجرای sklearn این تکنیک باید تعداد دسته هایی که می خواهید داشته باشید و تعداد دفعاتی که تقسیم انجام می شود را تنظیم کنید. این تضمین می کند که در هر تکرار دسته های مختلفی خواهید داشت.import numpy as npfrom sklearn.model_selection import RepeatedKFoldX = 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 دسته تو در تو : برخلاف سایر تکنیک‌های اعتبارسنجی، که برای ارزیابی کیفیت یک الگوریتم طراحی شده‌اند،اعتبار سنجی k دسته تو در تو محبوب‌ترین راه برای تنظیم پارامترهای یک الگوریتم است. تصور کنید که ما یک پارامتر p داریم که معمولاً به الگوریتم پایه ای که ما در حال تایید متقابل آن هستیم بستگی دارد. به عنوان مثال، برای رگرسیون لجستیک، ممکن است پارامتر جریمه باشد که برای تعیین هنجار مورد استفاده در جریمه استفاده می شود.الگوریتم این تکنیک به صورت زیر است: k را انتخاب کنید - تعدادی دسته، مثلا 10 تا , فرض کنیم که این عدد را انتخاب کرده ایم یک پارامتر p را انتخاب کنید. فرض کنید الگوریتم ما رگرسیون لجستیک است و p پارامتر جریمه p = {'l1', 'l2', 'elasticnet', 'none'} است. مجموعه داده را به 10 تا تقسیم کنید و یکی از آنها را برای آزمایش رزرو کنید یکی از kهای آموزشی را برای اعتبار سنجی رزرو کنید برای هر مقدار p، 8 کای آموزشی باقیمانده را آموزش دهید و روی دسته اعتبارسنجی ارزیابی کنید. اکنون 4 اندازه گیری داریداین مراحل را 9 بار تکرار کنید. بچرخانید که کدام دسته آموزشی، دسته اعتبارسنجی است. اکنون اندازه گیری 9 * 4 دارید, p را انتخاب کنید که میانگین خطای تمرین را بیش از 9 برابر به حداقل برساند. از آن p برای ارزیابی روی مجموعه تست استفاده کنید این مرحله را10 بار تکرار کنید و از هر k به نوبت به عنوان تk تست استفاده کنید میانگین و انحراف معیار اندازه گیری ارزیابی را در 10 برابر تست ذخیره کنید. الگوریتمی که بهترین عملکرد را داشت، الگوریتمی بود که بهترین میانگین عملکرد خارج از نمونه را در 10 لایه آزمایشی داشت. این تکنیک از نظر محاسباتی گران است زیرا در طول این مراحل تعداد زیادی مدل باید آموزش و ارزیابی شوند. با این حال، اعتبارسنجی k دسته تو در تو معمولا استفاده می شود و ممکن است در چندین کار یادگیری ماشین واقعاً مؤثر باشد. متأسفانه، هیچ روش داخلی در sklearn وجود ندارد که بتواند اعتبارسنجی k دسته تو در تو را برای شما انجام دهد. این لحظه ای است که شما باید یا ازگوگل استفاده کنید و پیاده سازی شخصی را پیدا کنید یا خودتان آن را کدنویسی کنید.اعتبار متقاطع کامل : اعتبارسنجی کامل کم استفاده ترین تکنیک اعتبارسنجی است. ایده کلی این است که ما یک عدد k - طول مجموعه آموزشی را انتخاب می کنیم و روی هر تقسیم ممکن حاوی k نمونه در مجموعه آموزشی اعتبار سنجی می کنیم.مقدار آن تقسیم‌ها را می‌توان به صورت cnk محاسبه کرد که n طول مجموعه داده است. اگر k بالاتر از 2 باشد، باید مدل خود را چندین بار آموزش دهیم که همانطور که قبلاً متوجه شدیم یک زمان فرآیند گران قیمت و از نظر محاسباتی است. به همین دلیل است که اعتبارسنجی کامل یا در تحقیقات نظری و یا در صورت وجود فرمول موثری که به حداقل رساندن محاسبات کمک می کند، استفاده می شود. الگوریتم اعتبار سنجی متقاطع کامل به صورت زیر است :یک عدد k را انتخاب کنید - طول مجموعه آموزشی , مجموعه داده را تقسیم کنید , روی مجموعه آموزشی تمرین کنید , در مجموعه آزمایشی اعتبار سنجی کنید , نتیجه اعتبارسنجی را ذخیره کنیداین مراحل را cnk بار تکرار کنید , برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در این مرحله به دست آوردید است.اعتبار سنجی متقابل در یادگیری ماشینی : بیشتر تکنیک های اعتبار سنجی متقابل ذکر شده در بالا به طور گسترده در یادگیری ماشینی استفاده می شود. مهم است که به خاطر داشته باشید که استفاده از تکنیک اعتبار سنجی مناسب ممکن است در زمان شما صرفه جویی کند و به انتخاب بهترین مدل برای کار کمک کند. این بدان معناست که اولاً بهتر است همیشه مدل را تأیید متقابل کنید و ثانیاً باید یک روش اعتبار سنجی مربوطه را انتخاب کنید. بنابراین، دانستن مزایا و معایب تکنیک‌های اعتبارسنجی متقابل حیاتی است. شایان ذکر است که اگر می‌خواهید مدل را اعتبار متقابل کنید، همیشه باید دفترچه راهنمای مدل را بررسی کنید زیرا برخی از الگوریتم‌های یادگیری ماشینی ، به عنوان مثال، CatBoost روش‌های اعتبارسنجی داخلی خود را دارند. ممکن است آنها را برای کار یادگیری ماشینی خود مرتبط بیابید و به جای روش های داخلی sklearn از آنها استفاده کنید. به طور کلی، همانطور که ممکن است متوجه شده باشید، بسیاری از تکنیک‌های اعتبارسنجی دارای روش‌های داخلی sklearn هستند. من به شدت توصیه می کنم از آنها استفاده کنید زیرا این روش ها در زمان زیادی برای کارهای پیچیده تر صرفه جویی می کنند.اعتبار متقابل در یادگیری عمیق : اعتبار سنجی متقابل در یادگیری عمیق ممکن است کمی مشکل باشد زیرا اکثر تکنیک های اعتبار سنجی حداقل چند بار نیاز به آموزش مدل دارند. در یادگیری عمیق، معمولاً به دلیل هزینه‌های مرتبط با آموزش مدل‌های مختلف، از اعتبار سنجی اجتناب می‌کنید. به جای انجام k دسته یا سایر تکنیک های اعتبار سنجی ، ممکن است از یک زیرمجموعه تصادفی از داده های آموزشی خود به عنوان نگهدارنده برای اهداف اعتبار سنجی استفاده کنید. به عنوان مثال، کتابخانه یادگیری عمیق Keras به شما امکان می دهد یکی از دو پارامتر را برای تابع مناسب که آموزش را انجام می دهد، ارسال کنید.شکافتن اعتبار : درصدی از داده هایی که باید برای اعتبار سنجی نگهداری شوندداده اعتبار : چند عدد از (x,y) که باید برای اعتبارسنجی استفاده شود. این پارامتر پارامتر شکافتن اعتبار را نادیده می گیرد، به این معنی که شما می توانید تنها یکی از این پارامترها را به طور همزمان استفاده کنید. همین رویکرد در آموزش های رسمی سایر چارچوب های یادگیری عمیق مانند PyTorch و MxNet استفاده می شود. آنها همچنین پیشنهاد می کنند مجموعه داده را به سه بخش تقسیم کنید: آموزش، اعتبار سنجی و آزمایش.آموزش – بخشی از مجموعه داده برای آموزش اعتبار سنجی - بخشی از مجموعه داده برای اعتبارسنجی در حین آموزش تست - بخشی از مجموعه داده برای اعتبار سنجی نهایی مدل با این حال، اگر مجموعه داده کوچک است (شامل صدها نمونه) می توانید از اعتبارسنجی متقاطع در وظایف یادگیری عمیق استفاده کنید. در این مورد، یادگیری یک مدل پیچیده ممکن است یک کار بی ربط باشد، بنابراین مطمئن شوید که کار را بیشتر پیچیده نکنید بهترین روش ها و نکات : گاهی اوقات انجام اعتبارسنجی متقابل ممکن است کمی مشکل باشد. به عنوان مثال، انجام یک اشتباه منطقی در هنگام تقسیم مجموعه داده بسیار آسان است که ممکن است منجر به یک نتیجه اعتبارسنجی غیرقابل اعتماد شود. ممکن است نکاتی را بیابید که باید هنگام تایید متقابل یک مدل در زیر مد نظر داشته باشید: هنگام تقسیم داده ها منطقی باشید (آیا روش تقسیم منطقی است)از روش اعتبارسنجی مناسب استفاده کنید (آیا این روش برای مورد استفاده من قابل اجرا است) هنگام کار با سری های زمانی، گذشته را تأیید نکنید (به اولین نکته مراجعه کنید) هنگام کار با داده های پزشکی یا مالی، به یاد داشته باشید که آن را بر اساس شخص تقسیم کنید. از داشتن داده برای یک نفر هم در آموزش و هم در مجموعه تست خودداری کنید زیرا ممکن است به عنوان نشت داده در نظر گرفته شود . هنگام برش تکه‌ها از تصاویر بزرگ‌تر، به یاد داشته باشید که با شناسه تصویر بزرگ تقسیم کنید . البته، نکات از کار به کار متفاوت است و پوشش همه آنها تقریبا غیرممکن است. به همین دلیل است که انجام یک تجزیه و تحلیل داده های اکتشافی جامد قبل از شروع اعتبارسنجی متقابل یک مدل همیشه بهترین روش است.افکار نهایی : اعتبار سنجی متقابل ابزار قدرتمندی است. هر دانشمند داده باید با آن آشنا باشد. در زندگی واقعی، شما نمی توانید پروژه را بدون تایید متقابل یک مدل به پایان برسانید.به نظر من بهترین تکنیک های اعتبارسنجی k دسته تودرتو و استاندارد k دسته هستند. من شخصاً از آنها در وظیفه تشخیص تقلب استفاده کردم. k دسته تودرتو و همچنین اعتبارسنجی جستجو شبکه به من کمک کرد تا پارامترهای مدل خود را تنظیم کنم. از طرف دیگر، k دسته برای ارزیابی عملکرد مدل من استفاده شد. در این مقاله متوجه شدیم اعتبارسنجی متقابل چیست، چه تکنیک‌های اعتبارسنجی در طبیعت وجود دارد و چگونه آنها را پیاده‌سازی کنیم. در آینده الگوریتم های یادگیری ماشین قطعاً حتی بهتر از امروز عمل خواهند کرد. با این حال، اعتبارسنجی متقابل همیشه برای پشتیبان گیری از نتایج شما مورد نیاز است. امیدواریم با این اطلاعات، مشکلی در تنظیم اعتبارسنجی برای پروژه بعدی یادگیری ماشینی خود نخواهید داشت!مراجعhttps://www.geeksforgeeks.org/cross-validation-machine-learning/https://machinelearningmastery.com/k-fold-cross-validation/https://towardsdatascience.com/cross-validation-in-machine-learning-72924a69872fhttps://towardsdatascience.com/why-and-how-to-do-cross-validation-for-machine-learning-d5bd7e60c189https://scikit-learn.org/stable/modules/cross_validation.html