روش اعتبارسنجی متقابل یا cross validation چیست
شاید شما هم به دیتاستی بر خورده باشید که دادههای ارزیابی یا اعتبارسنجی در آن وجود ندارد. میدانیم که مدلها باید روی یکسری داده آموزش ببینند و با دادههای جدیدی ارزیابی شوند. در چنین شرایطی چطور باید مدل را ارزیابی کنیم؟ جواب، تکنیکهای cross validation یا اعتبارسنجی متقابل است. در این پست میخواهیم ببینیم cross validation چیست و چه تکنیکهایی برای آن وجود دارد.
اعتبارسنجی متقابل یا cross validation چیست
در آموزش یادگیری ماشین رایگان هوسم در مورد این صحبت کردیم که چطور یک مدل یادگیری ماشین را آموزش دهیم. در این پست میخواهیم روشهای مختلف اعتبارسنجی مدل را بررسی کنیم.

اعتبارسنجی متقابل یا cross validation یک روش برای ارزیابی و بررسی تعمیمپذیری (Generalization) مدل است. زمانی که مدل بتواند در مورد دادههایی که قبلا ندیده، پیشبینی دقیقی داشته باشد، یعنی تعمیمپذیری بالایی دارد.
** توجه: به دادههایی که مدل در فرآیند آموزش آنها را دیده، seen data و به دادههایی که قبلا ندیده، unseen data گفته میشود.
با استفاده از اعتبارسنجی متقابل، دادهها به دو بخش تقسیم میشوند. مدل با یک بخش آموزش میبیند و روی بخش دیگر ارزیابی میشود. حالا شاید بپرسید چه نیازی به این کار است؟
دانشآموزی را در نظر بگیرید که امتحان ریاضی دارد. این دانشآموز همه منابع لازم را مطالعه کرده و 5 تا هم نمونه سوال حل کرده است. بهترین راه ارزیابی این دانشآموزش چیست؟ آیا اگر همان نمونه سوالها را از او بپرسیم، متوجه میشویم وضعیت او چطور است؟ از کجا معلوم همان سوالها را حفظ نکرده باشد؟ احتمالا بهترین راه این است که سوالات جدیدی برایش طراحی کنیم که تا الان با آنها مواجه نشده است. به این ترتیب میتوانیم او را به خوبی ارزیابی کرده و ببینیم چقدر یاد گرفته است.
دقیقا برای مدلها هم همین مسئله وجود دارد. ما یک مدلی داریم و آن را روی یکسری داده آموزش میدهیم. چطور بفهمیم که عملکردش چطور است؟ آیا بررسی عملکردش روی همان دادههای آموزش کافی است؟ به هیچ وجه! چون این دادهها را در فرآیند آموزش، دیده (seen data) است. حتما نیاز است که عملکرد مدل روی دادههای جدیدی (unseen data) بررسی شود، دادههایی که هرگز ندیده!
در دیتاستهای استاندارد معمولا سه بخش train، validation و test جدا شدهاند. اما دیتاستهایی هم وجود دارند که این سه بخش را تفکیک نکردهاند. اینجاست که تکنیکهای cross validation یا اعتبارسنجی متقابل به کار میآیند.
تکنیکهای ارزیابی متقابل یا cross validation
روشهای مختلفی برای ارزیابی متقابل یا cross validation وجود دارند که در این آموزش این روشها بررسی خواهند شد:
- k fold cross validation
- Hold Out
- Leave One Out
در ادامه خواهیم گفت که روش کار هرکدام از این تکنیکها چگونه هستند.
روش Hold Out
یکی از سادهترین و پراستفادهترین روشهای ارزیابی مدل، روش Hold out است. در این روش، دادهها به صورت تصادفی به دو گروهِ آموزش و ارزیابی تقسیم میشوند. تعداد دادههای بخش آموش، بیشتر از بخش ارزیابی باید باشد. معمولا 80-20 نسبت رایجی برای دادهها است، یعنی 80 درصد آموزش و 20 درصد ارزیابی.
به این صورت مدل با 80 درصد دادهها آموزش میبیند و با 20 درصد دیگر که هرگز آنها را ندیده، ارزیابی میشود. به این روش، Hold out cross validation گفته میشود.
یکی از ویژگیهای مثبت این روش این است که نسبت به سایر روشهای cross validation پیچیدگی محاسباتی کمتری دارد. اما باید دقت داشته باشید که این روش برای دیتاستهای کوچک مناسب نیست.
k fold Cross validation چیست
در این بخش میخواهیم ببینیم k fold cross validation چیست. این روش در ابتدا ممکن است کمی پیچیده به نظر برسد، اما به شما اطمینان میدهم که بسیار ساده است. فقط کافی است با دقت توضیحات این بخش را بخوانید.
در k fold cross validation، دیتاست به k شکل مختلف تقسیم میشود که به هرکدام یک fold میگوییم. مدل k بار روی این k fold آموزش داده میشود. به این صورت k دقت به دست آمده و در نهایت میانگین این دقتها محاسبه میشود. در ادامه با یک مثال این مسئله را توضیح میدهم تا بهتر متوجه شوید.
فرض کنید که یک دیتاست با 12 داده دارید.

مقدار k را 3 فرض کنید. در این صورت 3 تا fold داریم درست؟ روند کار به این شکل است که ابتدا داده را به سه بخش تقسیم میکنیم.

سپس در هر fold، یکی از این سه بخش را به عنوان ارزیابی در نظر گرفته و مابقی را برای آموزش مدل استفاده میکنیم. مثلا برای fold 1 داریم:

در fold 2، بخش دوم از داده را به عنوان validation در نظر گرفته و مابقی را برای آموزش مدل استفاده میکنیم و به همین ترتیب fold 3 را نیز تشکیل میدهیم:

خب تا اینجا توانستیم داده را به k=3 شکل مختلف تقسیمبندی کنیم. حالا برای هر کدام از fold-ها، عملیات آموزش و ارزیابی مدل را انجام میدهیم. در نهایت k=3 دقت از مدل به دست میآوریم که باید میانگین آنها را محاسبه و گزارش کنیم.
مقدار k بستگی به فاکتورهای مختلفی مثل سایز و ساختار دیتاست، سخت افزار و … بستگی دارد، اما k=5 و k=10 بسیار رایج است.
تمام شد، در پایان این بخش باید بدانید که k fold cross validation چیست. اگر هنوز متوجه نشدید، سعی کنید یک بار دیگر این بخش را مطالعه کنید تا خوب برایتان جا بیفتد.
(Leave-One-Out Cross Validation (LOOCV
این تکنیک، مشابه k-fold است. با این تفاوت که در آن، k=N است که N، تعداد سمپلها را نشان میدهد. یعنی در هر fold تنها یک داده برای ارزیابی نگهداشته میشود و مابقی برای آموزش مدل استفاده میشوند. این کار N بار تکرار میشود. به این شکل:
به این ترتیب N دقت از مدل به دست آوردهایم. در قدم بعدی، دقیقا مشابه با k fold، باید میانگین این دقتها را محاسبه و گزارش کنیم.
جمعبندی
در این پست چند روش رایج اعتبارسنجی متقابل یا cross validation بررسی کردیم. دیدیم که روشهای holdout، روش kfold و leave-one-out را مرور کردیم و دیدیم که هرکدام چطور کار میکنند. امیدوارم که این پست برای شما مفید باشد. اگر سوالی در مورد این روشها داشتید، حتما کامنت کنید.
مطالب زیر را حتما مطالعه کنید
یادگیری انتقالی
شبکه VGG
مهندسی پرامپت
مدل nanoGPT
شگفتانگیزترین ایده هوش مصنوعی از نظر Andrej Karpathy
شبکه ویژن ترنسفورمر
3 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام
لطفا درباره کاربرد ارزیابی متقاطع 10fold در آزمایشگاه تشخیص طبی برروی داده های بیماران توضیح ومثالی بفرمائید
سلام. ممنون از آموزش شما
سلام،
سپاس