بررسی معیارهای ارزیابی رگرسیون در پایتون

بررسی معیارهای ارزیابی رگرسیون در پایتون

بررسی معیارهای ارزیابی رگرسیون در پایتون

 

در مسائل رگرسیون، به دنبال پیش‌بینی یک یا چند ویژگی هدف براساس ویژگی‌های ورودی به مدل هستیم. ویژگی هدف برخلاف مسائل طبقه‌بندی، پیوسته است. در این آموزش، با معیارهای ارزیابی رگرسیون آشنا می‌شویم و روش پیاده‌سازی آن‌ها در پایتون را بیان می‌کنیم.

 

معیارهای ارزیابی از سه جهت کاربرد داشته و حائز اهمیت است:

 

برای آموزش مدل‌ها می‌توانند به عنوان تابع هزینه استفاده شوند.

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

برای پیش‌بینی خطای مدل در مواجه با داده‌های جدید استفاده شوند.

به این ترتیب، اهمیت معیارهای ارزیابی رگرسیون در پایتون آشکار می‌شود. در این مطلب 6 معیار مهم ارزیابی رگرسیون در پایتون به همراه کدهای پایتون را بررسی خواهیم کرد.

 

وارد محیط برنامه‌نویسی می‌شویم و کتابخانه‌های مورد نیاز را فراخوانی می‌کنیم:


از کتابخانه Numpy برای پیاده‌سازی معیارها و از کتابخانه Scikit-Learn برای استفاده از توابع آماده استفاده خواهیم کرد.


میانگین مربعات خطا یا MSE


«میانگین مربعات خطا» (Mean Squared Error | MSE) یکی از پرکاربردترین معیارها است که هم در آموزش مدل‌ها و هم در مقایسه مدل‌ها استفاده می‌شود. این معیار دارای بُعد است، به همین دلیل به عنوان گزارش نهایی در مسائل رگرسیون مناسب نیست.


برای محاسبه میانگین مربعات خطا، به شکل زیر عمل می‌کنیم:



formol

 

نکته مهم دیگری که در مورد این معیار وجود دارد، وزن‌دهی بیشتر به خطاهای بزرگ‌تر است، به طوری که اگر دو داده با خطاهای 1 و 3 وجود داشته باشد، اثرگذاری داده دوم بیشتر خواهد بود. با توجه به این موضوع، خطا در حالتی که e=[2,2] باشد، کمتر از حالتی است که e=[1,3] باشد.

 


این معیار مشتق پذیر بوده و با فرض یک مدل خطی، به شکل زیر می‌توان از آن مشتق گرفت:


formol


 


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


برای پیاده‌سازی میانگین مربعات خطا می‌توان به شکل زیر عمل کرد:


python code


از توابع آماده نیز می‌توان به شکل زیر استفاده کرد:


python code


جذر میانگین مربعات خطا RMSE


«معیار جذر میانگین مربعات خطا» (Root Mean Squared Error | RMSE) با استفاده از رابطه زیر از میانگین مربعات خطا محاسبه می‌شود:


 


python code


دلیل استفاده از جذر میانگین مربعات خطا، یکسان بودن بُعد و مقیاس آن با ویژگی هدف است. برای مثال، اگر یک مدل برای پیش‌بینی وزن افراد برحسب Kg ایجاد کرده باشیم، واحد میانگین مربعات خطا kg2 خواهد بود، درحالی که که واحد جذر مربعات خطا Kg است. این معیار اغلب در گزارش نتایج استفاده می‌شود و به عنوان تابع هزینه استفاده نمی‌شود.


برای پیاده‌سازی جذر میانگین مربعات خطا می‌توان نوشت:


python code


یا با استفاده از توابع آماده این کار انجام می‌گیرد:


python code


جذر مربعات خطای نرمال‌شده NRMSE


«جذر مربعات خطای نرمال‌شده» (Normalized Root Mean Squared Error | NRMSE) با استفاده از رابطه زیر محاسبه می‌شود:


 


formol


این معیار، حاصل تقسیم جذر میانگین مربعات خطا بر بازه ویژگی هدف است، به همین دلیل عددی بدون بُعد و واحد بوده و برای گزارش بسیار مناسب است.


می‌توان این معیار را به صورت درصدی نیز بیان کرد.


برای پیاده‌سازی خواهیم داشت:


python code


یا با استفاده از توابع آماده این کار انجام می‌گیرد:


python code


 


میانگین قدرمطلق خطا MAE


«میانگین قدرمطلق خطا» (Mean Absolute Error | MAE)  به جای به توان 2 رساندن خطاها، از تابع قدرمطلق استفاده می‌کند و به صورت زیر محاسبه می‌شود:


formol


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


این معیار با توجه به اینکه از تابع قدرمطلق استفاده می‌کند، در شرایطی مشتق‌پذیر نبوده و می‌تواند در بهینه‌سازی‌های وابسته به گرادیان مشکل‌ساز باشد.


مشکل دیگر این معیار، ضعیف نشدن گرادیان با نزدیک شدن به e=0 است که باعث مشکلاتی در بهینه‌سازی و بعضا واگرایی می‌شود.


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


به این ترتیب مشتق‌ناپذیری در e=0 و شیب ثابت کاملاً مشهود است. از این معیار می‌توان برای مقایسه مدل‌ها و همچین گزارش نتایج استفاده کرد. برای پیاده‌سازی میانگین قدرمطلق خطا می‌نویسیم:


code python


یا با استفاده از توابع آماده این کار انجام می‌گیرد:


python code


میانگین درصد قدرمطلق خطا MAPE


«میانگین درصد قدرمطلق خطا» (Mean Absolute Percentage Error | MAPE) مشابه میانگین قدرمطلق خطا است، اما به جای خطا، از خطای نسبی استفاده شده است:


python code


به این ترتیب، معیاری بدون واحد به دست خواهد آمد که برای گزارش نتایج مناسب است.


این معیار نیز مشکلات میانگین مربعات خطا را دارد. مشکل دیگری که در رابطه با میانگین درصد قدرمطلق خطا وجود دارد، احتمال وجود مقادیر بسیار نزدیک به 0 در داده است. در این شرایط، کسر عبارت بسیار کوچک شده و تاثیر شدیدی بر معیار خواهد گزاشت.


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


این معیار با خطای نسبی هر داده رابطه قدرمطلقی دارد.


 


برای پیاده‌سازی این معیار، می‌نویسیم:


python code


یا با استفاده از توابع آماده این کار انجام می‌گیرد:



تابع آماده استفاده شده در کد بالا عددی از 0 تا 1 در خروجی تولید می‌کند و برای تبدیل آن به درصد با ضرب در 100 شود.


 


ضریب تعیین یا امتیاز R2


«ضریب تعیین امتیاز» (Coefficient of Determination) برخلاف 5 معیار قبلی، با افزایش، دقت بالای مدل را نشان می‌دهد. برای محاسبه آن به شکل زیر عمل می‌کنیم:


 


formol


این معیار همواره عددی کوچک‌تر از 1 است. اگر مدلی همواره میانگین ویژگی هدف را در خروجی تولید کند، مقدار این معیار برابر 0 خواهد بود. ضریب تعیین معمولاً به صورت درصد بیان می‌شود. از ضریب تعیین تنها برای مقایسه مدل‌ها و گزارش نتایج استفاده می‌شود. با توجه به اینکه واریانس مجموعه داده عددی ثابت است، با افزایش میانگین مربعات خطا، ضریب تعیین همواره کاهش می‌یابد.


برای پیاده‌سازی ضریب تعیین می‌نویسیم:


python code


یا با استفاده از توابع آماده خواهیم داشت:


python code


جمع‌بندی ارزیابی رگرسیون در پایتون


در این آموزش، معیارهای پرکاربرد در مسائل رگرسیون بررسی و پیاده‌سازی شدند. برای مطالعه بیشتر می‌توان معیارهای جدید‌تر مانند AIC، معیارهای اصلاح‌شده مانند Adjusted R2، معیارهای ترکیبی، معیارهای دارای Threshold و همبستگی بین معیارها را مورد بررسی قرار داد.


نویسنده بلاگ: جواد یوسفی

جواد یوسفی

برنامه نویس فرانت اند

دیدگاه کاربران

    هیچ نظری ثبت نشده! اولین نفری باش که نظرشو ثبت میکنه!

ثبت دیدگاه

برای ثبت نظر، ابتدا وارد شوید.

خدمات منتورینگ

شما در طول دوره ی آنلاین میتوانید یک پشتیبان یا همراه داشته باشید و تمامی تمرین ها و مشکلات خودتون رو با اپراتور های ما در میان میگذارید! چی بهتر از اینکه قدم به قدم در کنار اساتید و آموزش های آنلاین بتونی از طریق پشتیبان هم ارزیابی بشی و مشکلاتت رو توی کمترین زمان ممکن حل کنی؟!!