در مبحث یاد گیری ماشین Over fitting را آرامبخش ضعیف می خوانند چون فریب دهنده است و چاره ای جز تحمل کمی رنج برنامه نویسی در ازای رسیدن به شرایط پایدار ندارد.
در این مثال برای پیاده سازی مدل یادگیری روی مجموعه ای از داده ها از روش KNN استفاده کرده ام که یکی از پارامتر های مهم ورودی تعداد همسایه های نزدیک جهت بررسی است.
برای فهم دقیق Over fitting از مقادیر مختلف برای تعداد همسایه ها در یادگیری مدل استفاده شده است که مرحله به مرحله با مشاهده ی مراحل کد نویسی شاهد توضیحات هر قسمت از کد خواهید بود:
برای پیاده سازی مدل از زبان برنامه نویسی پایتون استفاده کردم
برای انجام این پروژه از پکیج اصلی sklearn و چند پکیج دیگر استفاده شده است.
برای این پروژه از یک data set آماده که نمایانگر احتمال ابتلای مردم هند به بیماری دیابت است، استفاده شده است که دارای 8 ستون ویژگی های بررسی شده و یک ستون نتایج ، متشکل از اعداد 0 و 1 است.
این مجموعه از داده ها شامل تعدادی درایه بود که در حین انجام آزمایشات مفقود شده بودند در نتیجه مجبور شدم تا برای جایگزینی آنها از پکیج فرعی Imputer استفاده کنم.
در هر کدام از روش های یادگیری ماشین مجبور به تقسیم داده ها به دو قسمت یادگیری و تست هستیم.
در این قسمت با استفاده از حلقه for مدل را برای مقادیر مختلف همسایه های نزدیک به دست آورده و داخل یک آرایه ذخیره کردم تا برای نمایش روی نمودار از آنها استفاده کنم البته در هر مرحله یک بار روی داده های train و یک بار روی داده های test پیاده سازی کردم.
همانطور که در نمودار بالا مشاهده می شود هر چقدر تعداد همسایه های نزدیک کمتر می شود صحت مدل برای داده های train بیشتر می شود چرا که مدل روی داده های fit ،train شده پس زمانیکه تعداد همسایه ها را برابر 1 قرار می دهیم دقیقا داده مورد استفاده در پیاده سازی را یافته و صحت 100% را به ما نشان می دهد و به همین روال با افزایش تعداد همسایه ها دقت تصمیم گیری کاهش می یابد.
و در ادامه مشاهده می کنید که در داده های test و هر داده اتفاقی دیگر نمودار سیر کلی برعکس را پیش می گیرد و در حالتی که تعداد همسایه ها به کمترین حالت خود رسیده صحت نتایج نیز به کمترین مقدار خود می رسد چراکه در این حالت یادگیری دچار Overfitting شده است و همانطور که مشاهده میشود بهترین حالت در n_neighbor=25 یا به صورت متعادل تر در n_neighbor=16 اتفاق میافتد