امیررضا جهانتاب
10 یادداشت منتشر شدهCross Validation در یادگیری ماشین
مقدمه:
در یادگیری ماشین، یکی از چالش های اصلی این است که بفهمیم مدل ما چقدر خوب کار می کند. آیا مدل بیش از حد به داده های آموزشی وابسته است (Overfitting)؟ آیا می تواند روی داده های جدید عملکرد خوبی داشته باشد؟ یکی از روش های مهم برای ارزیابی مدل ها و جلوگیری از مشکلاتی مانند Overfitting و Underfitting، استفاده از تکنیکی به نام Cross Validation یا اعتبارسنجی متقاطع است. در این مقاله، این روش را به طور مفصل بررسی خواهیم کرد.
Cross Validation روشی برای ارزیابی عملکرد مدل است که به جای استفاده از یک مجموعه ی خاص برای آموزش و یک مجموعه ی دیگر برای تست، از کل داده ها به صورت چندباره برای آموزش و ارزیابی استفاده می کند. این روش به ما کمک می کند که مدل را روی بخش های مختلف داده آزمایش کنیم و یک معیار کلی و قابل اعتماد برای عملکرد آن به دست آوریم.
چرا از Cross Validation استفاده می کنیم؟
- جلوگیری از Overfitting: مدل ممکن است روی داده های آموزشی بسیار خوب عمل کند اما روی داده های جدید ضعیف باشد. Cross Validation کمک می کند تا ارزیابی بهتری از عملکرد واقعی مدل داشته باشیم.
- استفاده بهینه از داده ها: در روش های معمول، مجموعه ی داده ها به دو بخش آموزش (Train) و تست (Test) تقسیم می شود. اما در Cross Validation، از همه داده ها برای آموزش و تست استفاده می شود، که باعث دقت بالاتر در ارزیابی می شود.
- پایداری بیشتر در نتایج: با اجرای چندباره ی فرآیند آموزش و تست، میانگین نتایج به دست آمده دقیق تر خواهد بود و مدل به داده های خاص وابسته نخواهد شد.
روش های مختلف Cross Validation
روش های مختلفی برای اعتبارسنجی متقاطع وجود دارد که هرکدام بسته به نوع مسئله و داده ها انتخاب می شوند. در ادامه، مهم ترین روش های آن را بررسی می کنیم.
۱. Holdout Validation (تقسیم ساده ی داده ها)
در این روش، داده ها به دو بخش Train و Test تقسیم می شوند، به عنوان مثال:
- ۷۰٪ داده ها برای آموزش مدل استفاده می شود.
- ۳۰٪ باقی مانده برای ارزیابی مدل به کار می رود.
✅ مزایا: ساده و سریع است. ❌ معایب: ممکن است مدل به دلیل انتخاب تصادفی داده های تست، نتیجه ی متفاوتی در هر بار اجرا بدهد.
۲. K-Fold Cross Validation (اعتبارسنجی متقاطع K-تایی)
این روش یکی از محبوب ترین تکنیک ها در Cross Validation است. در این روش:
- داده ها به K قسمت مساوی تقسیم می شوند.
- مدل K بار آموزش داده می شود، به این صورت که در هر بار یکی از قسمت ها برای تست استفاده شده و باقی قسمت ها برای آموزش به کار می روند.
- در نهایت، میانگین نتایج K اجرا به عنوان عملکرد نهایی مدل در نظر گرفته می شود.
✅ مزایا: نتایج پایدارتر و دقیق تر از روش Holdout است. ❌ معایب: اجرای این روش برای مدل های پیچیده ممکن است زمان بر باشد.
مثال: اگر K=5 باشد، داده ها به ۵ قسمت تقسیم شده و مدل ۵ بار اجرا می شود، به طوری که هر بار یکی از ۵ قسمت برای تست و ۴ قسمت دیگر برای آموزش استفاده می شود.

۳. Stratified K-Fold (K-Fold متوازن)
این روش شبیه K-Fold است، اما با این تفاوت که توزیع کلاس ها (در مسائل طبقه بندی) در هر بخش از داده ها مشابه مجموعه ی اصلی خواهد بود. این روش به ویژه در داده های نامتوازن (که یک کلاس تعداد بیشتری نسبت به کلاس دیگر دارد) مفید است.
✅ مزایا: از لحاظ توزیع کلاس ها، داده های تست و آموزش مشابه مجموعه اصلی خواهند بود. ❌ معایب: مانند K-Fold زمان اجرای بیشتری نسبت به Holdout دارد.
۴. Leave-One-Out Cross Validation (LOOCV)
در این روش، تعداد K برابر با تعداد کل نمونه های داده است. یعنی در هر بار اجرا، یک نمونه برای تست و بقیه داده ها برای آموزش استفاده می شوند و این فرآیند برای تمام داده ها تکرار می شود.
✅ مزایا: از تمام داده ها به بهترین شکل استفاده می شود. ❌ معایب: برای مجموعه های داده ی بزرگ، این روش بسیار زمان بر است.
چه زمانی از Cross Validation استفاده کنیم؟
- زمانی که داده های ما کم است و نمی توانیم بخشی از آن را فقط برای تست نگه داریم.
- هنگامی که می خواهیم از مدل های پیچیده ای استفاده کنیم که نیاز به تنظیم دقیق (Hyperparameter Tuning) دارند.
- زمانی که مدل ما Overfitting دارد و نیاز به ارزیابی دقیق تر داریم.
جمع بندی
- Cross Validation یکی از مهم ترین تکنیک های ارزیابی عملکرد مدل های یادگیری ماشین است.
- K-Fold Cross Validation روشی پایدار و پرکاربرد برای سنجش عملکرد مدل ها است.
- Stratified K-Fold برای داده های نامتوازن مناسب است.
- LOOCV بالاترین دقت را دارد اما زمان اجرای بالایی نیز دارد.
در نهایت، بسته به نوع داده ها و محدودیت های محاسباتی، می توان از روش مناسب برای ارزیابی مدل استفاده کرد تا بهترین نتیجه را به دست آورد. امیدوارم این مقاله به درک بهتر شما از Cross Validation کمک کرده باشد! 😊