داده کاویهوش مصنوعی

under-fitting و over-fitting در یادگیری ماشین

با توجه به اهمیت این موضوع در تمامی فرآیند های مدلینگ یادگیری ماشین بد نیست من هم به نوبه خودم این موضوع رو در لابلای مطالب قرار بدهم . 

وقتی که ما مدلی برای آنالیز داده های ورودی طراحی میکنیم مهمترین ویژگی این مدل قابلیت تعمیم (Generalization) آن بر روی داده های دیده نشده است . در نهایت به خاطر وجود مفهوم تعمیم پذیری در یادگیری ماشین، دو اصطلاح دیگر با نام های Under-fitting و Over-fitting به وجود می آیند. این دو مفهوم هر دو نشان دهنده عملکرد ضعیف الگوریتم یاد گیرنده در یادگیری ماشین است. 

Overfitting   یا بیش برازش

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

روشهای معمول پیشنهاد شده برای مواجهه با بیش برازش   

Cross-Validation: یک روش استاندارد برای پیدا کردن خطای پیش بینی داده های جدید، استفاده ا k-fold cross validation است که ما معمولا k را ۱۰ یا ۵ در نظر میگیریم .
توقف زودهنگام الگوریتم: با وضع قوانینی در الگوریتم سعی میکنیم قبل از اینکه به بیش برازش برسیم یادگیری را متوقف کنیم.
هرس: هرس کردن خصوصا در الگوریتم های درخت تصمیم , با حذف گره هایی که کمترین تاثیر را در نتایج خروجی دارند موجب ساده شدن مدل میشوند.
Regularization: این معیار با تعریف تابع هزینه (شما عملکرد این تابع را به عنوان جریمه در نظر بگیرید) اضافه شدن ویژگی ها به تابع هدف را سختگیرانه کنترل میکند. از این رو تلاش می کند ضرایب را برای بسیاری از ویژگی ها  به صفر برساند و به همین ترتیب هزینه را مینیمم کند.

Underfitting یا کم برازش

برعکس زمانی که ما دچار Underfitting  میشویم اذعان به سادگی مدل در مرحله آموزش داریم تا حدی که نتوانسته مفهوم حاکم بر داده های ورودی را درک کند. چون مدل ما ساده است نمیتواند رفتار داده های آموزش را بدرستی یاد بگیرد و طبیعتا خطای آموزش بالایی دارد .بنابراین در مواجهه با داده های تست جدید هم خطای تعمیم بالایی خواهد داشت.معمولا زمانی اتفاق می افتد که داده های کمتری برای ساخت یک مدل دقیق و همچنین زمانی که ما سعی می کنیم یک مدل خطی با داده های غیر خطی ایجاد کنیم.

شکل زیر تحلیل شفافی را به ما میدهد . همانطور که صحبت شد , زمانی که پیچیدگی مدل ما به دلیل یادگیری کمتر در مرحله آموزش پایین است در معرض Underfitting  هستیم و هم خطای آموزش و هم خطای تست بالاست و نتسیجه اینکه خطای تعمیم پذیری مدل هم بالا خواهد بود. 

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

طبیعتا بهترین فیت جاییست که خطای آموزش و خطای تست در حد معقولی بسته به صورت مسئله بین دو پدیده فوق باشد.

یکی از بهترین شیوه هایی که درک ایندو پدیده برای من تثبیت شد استفاده از دو مفهوم دیگر بنام واریانس وبایاس مدل بود .  

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

بایاس اختلاف بین میانگین پیش بینی مدل ما و مقدار واقعی ای که ما در حال تلاش برای پیش بینی آن هستیم. مدل با بایاس زیاد توجه زیادی به داده های آموزش نکرده و مدل را بیش از پیش ساده و کلی می کند. این همیشه منجر به خطای زیاد در آموزش و داده های تست می شود. بایاس بالا می تواند در الگوریتم منجر به از دست رفتن روابط بین ویژگی ها و خروجی های هدف یا همان Underfitting شود.

فکر میکنم از دو زاویه یعنی بررسی پیچیدگی و هم بررسی واریانس-بایاس به مسئله نگاه کردیم . امیدوارم بهره کافی را برده باشید . 


امیر حسین اکبری – تحلیل گر داده در سیستم های صنعتی و بازاریابی دیجیتال

برچسب ها

نوشته های مشابه

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن