آشنایی با مفهوم Overfitting و Underfitting در طبقه‌بندی

مدرس: مسعود کاویانی

این دو مفهوم از مفاهیمِ اساسی‌ است که در بحثِ طبقه‌بندیِ داده‌ها مورد بحث قرار می‌گیرند. هدف از درسِ جاری این است که با مفهوم Overfitting و Underfitting آشنا شده تا بتوانیم الگوریتم‌هایی ارائه کنیم تا از این دو پدیده در امان باشند.

اجازه بدهید با یک مثال شروع کنیم. فرض کنید شما برای یک امتحانِ آخرِ ترم در حال درس خواندن هستید. استاد هم به شما ۱۰۰ عدد نمونه سوال داده است تا با استفاده از آن‌ها بتوانید خود را برای امتحان آماده کنید. اگر شما طوری مطالعه کنید که فقط این ۱۰۰ نمونه سوال را کامل بلد باشید و هر سوالِ دیگری که کمی از این ۱۰۰ سوال فاصله داشته باشد، اشتباه جواب دهید، یعنی ذهنِ شما بر روی سوالاتِ آموزشی که استاد برای یادگیری داده است Overfit یا بیش‌برازش شده است. حال اگر تمامی سوالات را به صورت مفهومی بلد باشید ولی هیچ کدام از سوالات را به صورتِ دقیق بلد نباشید، حتی اگر دقیقاً همان سوال‌ها هم در جلسه امتحان به شما داده شود، باز هم نمی‌توانید به درستی و با دقت پاسخ آن ها را بدهید، البته شاید بتوانید یک پاسخ نصفه و نیمه از سوالات بنویسید. اینجا ذهن شما Underfit شده است. این در حالی است که سوالات دیگری که نزدیک به این سوالات هستند را هم شاید بتوانید نصفه و نیمه پاسخ دهید (ولی دقیق نمی‌توانید).

در دنیای الگوریتم‌ها Overfit شدن به معنای این است که الگوریتم فقط داده‌هایی که در مجموعه آموزشی (train set) یاد گرفته است را می‌تواند به درستی پیش‌بینی کند ولی اگر داده‌ای کمی از مجموعه‌ی آموزشی فاصله داشته باشد، الگوریتمی که Overfit شده باشد، نمی‌تواند به درستی پاسخی برای این داده‌های جدید پیدا کند و آن‌ها را با اشتباهِ زیادی طبقه‌بندی می کند.

Underfit شدن نیز زمانی رخ می دهد که الگوریتم یک مدلِ خیلی کلی از مجموعه آموزشی به دست می‌آورد. یعنی حتی اگر خودِ داده‌های مجموعه‌ی آموزشی را نیز به این الگوریتم بدهیم، این الگوریتم خطایی قابل توجه خواهد داشت.

فرض کنید نقطه‌ها در شکل زیر نمونه سوالاتی هستند که استاد برای آمادگی در امتحان همراه با پاسخِ آن‌ها به ما داده است. سوال در محور افقی داده می‌شود و پاسخ در محور عمودی است. به این معنی که به شما X داده می‌شود و شما باید از روی عددِ این X، عددِ Y (عدد روی محور عمودی) را تشخیص دهید. مثلاً اگر مختصاتِ عدد نخست سمت چپدر تصویر زیر [۶, ۱] باشد، به این معنی است که اگر عدد ۱ را به این الگوریتم بدهیم، الگوریتم عدد ۶ را برگرداند. پس با این حساب اگر به الگوریتم عدد ۱.۱ را دادیم، این الگوریتم (که یادگیری را قبلاً از روی داده‌ها انجام داده است) احتمالاً باید عددی نزدیک به ۶ را برگرداند. این ها در واقع همان مجموعه آموزشی ما هستند:

خط آبیِ موجود، در واقع یادگیریِ مدل طبقه‌بندی است (به صورت دقیق‌تر در این‌جا رگرسیون داریم). همان‌طور که می‌بینید در سمت چپ، خطی که الگوریتمِ طبقه‌بندیْ یادگرفته است از تمامی داده‌ها به مقدار قابل توجهی فاصله دارد. یعنی در این شکل (سمت چپ) underfitting رخ داده است. این در حالی است که در شکل سمت راست، overfitting رخ داده. توجه کنید که در شکلِ سمت راست، اگر یک نقطه جدید (مثلا یک سوال جدید در امتحان) داده شود (نقطه سبز رنگ داده شده) الگوریتم خطای بسیار زیادی دارد. یعنی مقدار Yی که برمیگرداند بسیار با مقدار واقعی فاصله دارد – چون الگوریتم خیلی نتوانسته است که یادگیری را عمومی سازی کند و نسبت به مقادیر جدید خطای بالایی نشان می‌دهد. شکل وسط نیز یک خط معقول و درست برای یک طبقه بند را نشان می دهد که overfit یا underfit نشده است.

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

ترتیب پیشنهادی خواندن درس‌های این مجموعه به صورت زیر است:
منابع این بحث و اطلاعات بیشتر

» وب سایت Scikit Learn

در صورت تمایل به یادگیری بیشتر، منابع بالا در نظر گرفته شده است. می توانید با خواندن این منابع، به یادگیری خود در این زمینه عمق ببخشید

21 دیدگاه دربارهٔ «آشنایی با مفهوم Overfitting و Underfitting در طبقه‌بندی»

  1. با سلام
    با تشکر از مطالب ساده ولی پرمحتوای حضرتعالی
    لطفا اگر ممکن هست درباره “درخت تصمیم فازی” هم مطلب بزارید.
    با تشکر

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

  3. سلام ممنونم از اطلاعات خوبتون
    یک سوال چرا وقتی که از تابع log استفاده می کنیم وزنه کمتر به سمت overfit پیش می روند

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

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

  6. سلام در حال ترجمه ی متن هستم. خاستم ببینم کلمات underfit و overfit ترجمه خاصی دارن یا همینجور بیان میشن؟ ممنون.

  7. با سلام و عرض ادب…
    ببخشید استاد عزیز چرا وقتی که در یک مجموعه داده تعداد الگوها خیلی کمتر از تعداد ویژگی ها باشد تمایل به Overfitting زیاد میشود؟ ممنون میشم جواب بدهید

  8. سلام اقای کاویانی عبادات ماه رمضان ۱۴۰۰ مقبول درگاه حق مطالب overfit ,underfit بسیار عالی وخوب بیان کردید سپاسگزارم خداوند سلامت وبرکت به شماعنایت کنه ممنون

دیدگاهتان را بنویسید

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