ماشین لرنینگ

دوره آموزش ماشین لرنینگ – قسمت پنجم

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

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

قسمت دوم – دوره آموزش ماشین لرنینگ (مشاهده)
– معرفی الگوریتم درخت تصمیم (Decision tree)
– پیاده سازی الگوریتم «درخت تصمیم» برای پیش بینی قیمت خانه با استفاده از sklearn

قسمت سوم – دوره آموزش ماشین لرنینگ (مشاهده)
– معرفی الگوریتم رگرسیون خطی ساده (Simple linear regression)
– پیاده سازی «رگرسیون خطی ساده»برای پیش بینی قیمت خانه با استفاده از روش Ordinary Least Squares

قسمت چهارم – دوره آموزش ماشین لرنینگ (مشاهده)
– معرفی مفاهیم مجموعه داده فاز آموزش و یادگیری (Training) و مجموعه داده فاز ارزیابی (Validation)
– پیاده سازی روش Train Test Split با استفاده از sklearn

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

مثال محاسبه قیمت خانه در املاک با استفاده از ماشین لرنینگ و درخت تصمیم
مثال محاسبه قیمت خانه در املاک با استفاده از ماشین لرنینگ و درخت تصمیم

جالب است بدانید اگر همین تقسیم بندی دو مرحله در هر سطح را تا سطح 10 ادامه دهیم، 2 به توان 10 یعنی 1024 برگ خواهیم داشت.

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

Underfitting و Overfitting چیست؟

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

در مورد Underfitting نیز فردی را تجسم کنید که حتی در هنگام مطالعه جزوه و نمونه سوال ها نیز نوانسته به نمره قابل قبولی برسید. چه برسد به امتحان اصلی 🙂

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

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) تاثیرگذار است.

 

 

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

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

 

آشنایی با مفهوم بیش برازش (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 در یادگیری ماشین

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

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

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

علی فلاحی

علاقه مند به ماشین لرنینگ و ریکامندر سیستم.

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

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

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


The reCAPTCHA verification period has expired. Please reload the page.

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