AliFallahi
AliFallahi
خواندن ۳ دقیقه·۳ سال پیش

آموزش بیش برازش (Overfitting) و کم برازش (Underfitting) در ماشین لرنینگ با مثال درخت تصمیم

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

در مورد Underfitting نیز فردی را تجسم کنید که حتی در هنگام مطالعه جزوه و نمونه سوال ها نیز نوانسته به نمره قابل قبولی برسد. چه برسد به امتحان اصلی :)
( به نظرم در فایل ویدیویی مثال رو بهتر توضیح دادم :) )

در این مثال ها، منظور از جزوه و نمونه سوال ها عملکرد مدل در داده های Training و منظور از امتحان اصلی داده های Validation است.


Underfitting و Overfitting چیست؟

This is a phenomenon called overfitting, where a model matches the training data almost perfectly, but does poorly in validation and other new data.

When a model fails to capture important distinctions and patterns in the data, so it performs poorly even in training data, that is called underfitting.


حالا چگونه باید متوجه Overfitting و Underfitting بشویم و از آن جلوگیری کنیم؟

در مورد الگوریتم درخت تصمیم، عمق درخت از جمله مواردی است که در بیش برازش (Overfitting)، کم برازش (Underfitting) تاثیرگذار است.

https://www.aparat.com/v/NC7zv


محور افقی نمودار زیر نشان دهنده عمق درخت تصمیم است. محور عمودی نیز مقدار خطای میانگین مطلق یا MAE را نشان می دهد. بدیهی است که هرچه مقدار MAE کمتر باشد، مدل عملکرد بهتری دارد.
همانطور که مشاهده می کنید، در مورد خط آبی که مربوط به داده های یادگیری و آموزش است، با افزایش عمق درخت، پس از محل مشخص شده، مقدار خطا دیگر تغییر چندانی نمی کند و مدل به سمت Overfit شدن پیش می رود.
در مورد منحنی قرمز رنگ که مربوط به داده های ارزیابی است، اگر محل مشخص شده را مدنظر قرار دهید مشاهده می کنید که تا قبل از علامت زرد رنگ، مقدار خطا روندی کاهشی داشته است اما پس از علامت زردرنگ مجدد خطا افزایش یافت است.
علامت زرد رنگ و خط عمودی رسم شده تقریبا در وسط نمودار، عمق مناسب درخت در این مثال است.
به طورخلاصه، افزایش عمق درخت تصمیم، خطر بیش برازش (Overfitting) را نیز افزایش می دهد.


آموزش بیش برازش (Overfitting) و کم برازش (Underfitting) در ماشین لرنینگ  (شکل از سایت Kaggle)
آموزش بیش برازش (Overfitting) و کم برازش (Underfitting) در ماشین لرنینگ (شکل از سایت Kaggle)


آشنایی با مفهوم بیش برازش (Overfitting)، کم برازش (Underfitting) و برازش مناسب

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

قطعه کد شامل خواندن فایل دیتاست و ساخت مجموعه های Training و Validation است.

بررسی دو مفهوم under-fitting و over-fitting در یادگیری ماشین
بررسی دو مفهوم under-fitting و over-fitting در یادگیری ماشین


خطای MAE و درخست تصمیم را از sklearn فراخوانی می کنیم.

آشنایی با مفهوم Overfitting و Underfitting
آشنایی با مفهوم Overfitting و Underfitting


برای اینکه بتوانیم میزان خطای MAE برای عمق های مختلف درخت تصمیم را با هم مقایسه کنیم، یک تایع تعریف کرده ایم به اسم get_mae که به عنوان ورودی عمق درخت (max_leaf_nodes) و مجموعه های Train و Validation را دریافت کرده و خطای MAE را محاسبه می کنید.
در بخش پایین نیز یک حلقه for ایجاد شده است که چهار مقدار 5, 50, 500, 5000 را به عنوان عمق درخت به تابع get_mae ارسال می کند.
در خط آخر نیز مقدار عمق و MAE محاسبه شده براساس آن را پرینت می کنیم.

تفاوت overfitting و underfitting
تفاوت overfitting و underfitting


همانطور که از نتایج مشخص است، از عمق 5 به 50، مقدار خطا کم شده است، اما وقتی عمق از 50 بیشتر می شود خطا نیز بیشتر می شود.
به بیان دیگر، تا پیش از 50 کم برازش (Underfitting) و پس از 50 بیش برازش (Overfitting) داریم.

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

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


فایل های مرتبط:

تمام کدهای مربوط به این قسمت از لینک زیر قابل دسترس هستند:

https://github.com/alifallahi/MachineLearning_Warmup/tree/master/Session5-overfitting-and-underfitting-in-machine-learning

دانلود فایل دیتاست train.csv از Kaggle

https://www.kaggle.com/c/home-data-for-ml-course/data?select=train.csv

توضیحات تکمیلی مرتبط با این مطلب


بیش برازشکم برازشدوره آموزش ماشین لرنینگUnderfitting چیستOverfitting چیست
آنچنان رفتم كه خود می خواستم
شاید از این پست‌ها خوشتان بیاید