در این پست می خواهیم به دو مفهوم بسیار مهم over-fit و under-fit بپردازیم.
این دو مفهوم از مفاهیمِ اساسی است که در بحثِ طبقهبندیِ دادهها مورد بحث قرار میگیرند. هدف از مقاله جاری این است که با مفهوم Overfitting و Underfitting آشنا شده تا بتوانیم الگوریتمهایی ارائه کنیم تا از این دو پدیده در امان باشند.
بصورت خلاصه معانی این دو مفهوم به شکل زیر است:
مفهوم Over-fit: عملکرد یادگیری بسیار خوب بوده، اما عملکرد بر روی مجموعه داده ای های دیگر (dataset) خوب نیست.
مفهوم Under-fit: نه تنها یادگیری خوب نبوده است، بلکه عملکرد آن بر روی مجموعه داده ای های دیگر نیز ضعیف است.
اجازه بدهید با یک مثال شروع کنیم. فرض کنید شما برای یک امتحانِ آخرِ ترم در حال درس خواندن هستید. استاد هم به شما ۱۰۰ عدد نمونه سوال داده است تا با استفاده از آنها بتوانید خود را برای امتحان آماده کنید. اگر شما طوری مطالعه کنید که فقط این ۱۰۰ نمونه سوال را کامل بلد باشید و هر سوالِ دیگری که کمی از این ۱۰۰ سوال فاصله داشته باشد، اشتباه جواب دهید، یعنی ذهنِ شما بر روی سوالاتِ آموزشی که استاد برای یادگیری داده است Overfit یا بیشبرازش شده است. حال اگر تمامی سوالات را به صورت مفهومی بلد باشید ولی هیچ کدام از سوالات را به صورتِ دقیق بلد نباشید، حتی اگر دقیقاً همان سوالها هم در جلسه امتحان به شما داده شود، باز هم نمیتوانید به درستی و با دقت پاسخ آن ها را بدهید، البته شاید بتوانید یک پاسخ نصفه و نیمه از سوالات بنویسید. اینجا ذهن شما Underfit شده است. این در حالی است که سوالات دیگری که نزدیک به این سوالات هستند را هم شاید بتوانید نصفه و نیمه پاسخ دهید (ولی دقیق نمیتوانید).
در دنیای الگوریتمها Overfit شدن به معنای این است که الگوریتم فقط دادههایی که در مجموعه آموزشی (train set) یاد گرفته است را میتواند به درستی پیشبینی کند ولی اگر دادهای کمی از مجموعهی آموزشی فاصله داشته باشد، الگوریتمی که Overfit شده باشد، نمیتواند به درستی پاسخی برای این دادههای جدید پیدا کند و آنها را با اشتباهِ زیادی طبقهبندی می کند.
در Underfit شدن نیز زمانی رخ می دهد که الگوریتم یک مدلِ خیلی کلی از مجموعه آموزشی به دست میآورد. یعنی حتی اگر خودِ دادههای مجموعهی آموزشی را نیز به این الگوریتم بدهیم، این الگوریتم خطایی قابل توجه خواهد داشت.
فرض کنید نقطهها در شکل زیر نمونه سوالاتی هستند که استاد برای آمادگی در امتحان همراه با پاسخِ آنها به ما داده است. سوال در محور افقی داده میشود و پاسخ در محور عمودی است. به این معنی که به شما X داده میشود و شما باید از روی عددِ این X، عددِ Y (عدد روی محور عمودی) را تشخیص دهید. مثلاً اگر مختصاتِ عدد نخست سمت چپدر تصویر زیر [۶, ۱] باشد، به این معنی است که اگر عدد ۱ را به این الگوریتم بدهیم، الگوریتم عدد ۶ را برگرداند. پس با این حساب اگر به الگوریتم عدد ۱.۱ را دادیم، این الگوریتم (که یادگیری را قبلاً از روی دادهها انجام داده است) احتمالاً باید عددی نزدیک به ۶ را برگرداند. این ها در واقع همان مجموعه آموزشی ما هستند:
خط آبیِ موجود، در واقع یادگیریِ مدل طبقهبندی است (به صورت دقیقتر در اینجا رگرسیون داریم). همانطور که میبینید در سمت چپ، خطی که الگوریتمِ طبقهبندیْ یادگرفته است از تمامی دادهها به مقدار قابل توجهی فاصله دارد. یعنی در این شکل (سمت چپ) underfitting رخ داده است. این در حالی است که در شکل سمت راست، overfitting رخ داده. توجه کنید که در شکلِ سمت راست، اگر یک نقطه جدید (مثلا یک سوال جدید در امتحان) داده شود (نقطه سبز رنگ داده شده) الگوریتم خطای بسیار زیادی دارد. یعنی مقدار Yی که برمیگرداند بسیار با مقدار واقعی فاصله دارد – چون الگوریتم خیلی نتوانسته است که یادگیری را عمومی سازی کند و نسبت به مقادیر جدید خطای بالایی نشان میدهد. شکل وسط نیز یک خط معقول و درست برای یک طبقه بند را نشان می دهد که overfit یا underfit نشده است.
این دو خطای معروف در حوزه طبقهبندی هستند که الگوریتم های مختلف طبقه بندی باید از آن ها اجتناب کنند.