ماشین لرنینگ

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

شش معیار ارزیابی خطا در مسایل رگرسیونی

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

قسمت سوم. آموزش رگرسیون خطی ساده، مرحله به مرحله و با مثال
قسمت هشتم. آموزش رگرسیون خطی چندگانه (چند متغیره)، مرحله به مرحله و با مثال

معیارهای ارزیابی خطا برای مدل های ماشین لرنینگ مسائل رگرسیون

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

1. اولین معیار، مجموع مربعات خطا (Sum Squared Error) یا به اختصار SSE نام دارد.

فرمول مجموع مربعات خطا
فرمول مجموع مربعات خطا

در این فرمول فاصله بین yهای اصلی که در دیتاست موجود هستند با yهای پیش بینی شده، محاسبه شده و در پایان با هم جمع می شوند.

 

2. معیار خطای میانگین مربعات (Mean Squared Error) یا به اختصار MSE

فرمول معیار میانگین مربعات خطا
فرمول معیار میانگین مربعات خطا

همانطور که از نام و فرمول این MSE مشخص است از نظر محاسباتی فرمول مشابه با SSE است با این تفاوت که در پایان مقدار به دست آمد در 1/n ضرب می شود. n در این فرمول به معنی تعداد نمونه های موجود در دیتاست است.

 

3. معیار خطای جذر میانگین مربعات (Root Mean Squared Error) یا به اختصار RMSE

فرمول خطای جذر میانگین مربعات
فرمول خطای جذر میانگین مربعات

اگر از مقدار MSE به دست آمده، جذر بگیریم RMSE به دست می آید. (به همین سادگی 🙂 )

 

4. معیار خطای میانگین قدر مطلق (Mean Absolute Error) یا به اختصار MAE

فرمول خطای میانگین قدر مطلق
فرمول خطای میانگین قدر مطلق

 

5. معیار درصد میانگین قدر مطلق خطا (Mean Absolute Percentage Error) یا به اختصار MAPE

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

همانطور که مشخص است خطای MAPE به صورت درصدی بیان می شود (MAPE همیشه دارای مقداری بین صفر تا 100 است).

البته در توضیحات ارایه شده توسط sklearn نکته زیر مطرح شده است:

“Note here that the output is not a percentage in the range [0, 100] and a value of 100 does not mean 100% but 1e2. Furthermore, the output can be arbitrarily high when y_true is small (which is specific to the metric) or when abs(y_true – y_pred) is large (which is common for most regression metrics).” 

https://scikit-learn.org/stable/modules/generated/sklearn.metrics.mean_absolute_percentage_error.html

 

6. معیار خطای ضریب تعیین (R squared) یا به اختصار R^2

فرمول خطای ضریب تعیین
فرمول خطای ضریب تعیین

در این فرمول، y به معنی مقدار اورجینال،  ŷ به معنی مقدار پیش بینی شده و ȳ که در مخرج کسر قرار دارد به معنی میانگین y های اروجینال است.

 

پیاده سازی معیار ارزیابی خطا مدلهای رگرسیونی

برای این بخش دیتاست زیر به عنوان فایل dataset.csv ایجاد شده است.

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

ابتدا دیتاست را فراخوانی می کنیم. سپس مجموعه های Train و Validation را ایجاد کرده و رگرسیون خطی را بر روی آن ها اجرا می کنیم.

 

 
import pandas as pd

file_path = 'dataset.csv'
df = pd.read_csv(file_path)
df

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
y = df.Grade
features = ['Hours']
X = df[features]
train_X, val_X, train_y, val_y = train_test_split(X, y, random_state=1)
dt_model = LinearRegression()
dt_model.fit(train_X, train_y)
val_predictions = dt_model.predict(val_X)
print("Orginal values: \n",val_y)
print("\nPredicted values:", val_predictions)

خروجی کد بالا به صورت زیر است:

Orginal values:
2 11.0
9 52.0
6 37.0
Name: Grade, dtype: float64

Predicted values: [12.69660678 65.36019438 32.14892292]

در ادامه معیارهای ارزیابی خطا را برای مدل پیاده سازی شده اجرا می کنیم

 
### --- MSE and RMSE --- start
from sklearn.metrics import mean_squared_error
import math
val_mse = mean_squared_error(val_predictions, val_y)
val_rmse = mean_squared_error(val_predictions, val_y, squared=False)
print("MSE =", val_mse)
print("RMSE (by squared=False) =", val_rmse)
print("RMSE (bymath.sqrt) =", math.sqrt(val_mse))
### --- MSE and RMSE --- end


### --- MAE --- start
from sklearn.metrics import mean_absolute_error
val_mae = mean_absolute_error(val_predictions, val_y)
print("MAE =", val_mae)
### --- MAE --- end


### --- MAPE --- start
from sklearn.metrics import mean_absolute_percentage_error
val_mape = mean_absolute_percentage_error(val_predictions, val_y)
print("MAPE =", val_mape)
### --- MAPE --- end


### --- R2 --- start
from sklearn.metrics import r2_score
val_r2 = r2_score(val_predictions, val_y)
print("R2 =", val_r2)
### --- R2 --- end

با توجه به اینکه معیار ارزیابی خطا RMSE حاصل جذر MSE است، جذر گرفتن به دو صورت امکان پذیر است.

حالت اول با استفاده از squared=False که در خط 5 کدهای بالا نوشته است:

val_rmse = mean_squared_error(val_predictions, val_y, squared=False)

حالت دوم با استفاده از sqrt که در خط 8 نوشته شده است:

print(“RMSE (bymath.sqrt) =”, math.sqrt(val_mse))

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

مشاهده توضیحات مربوط به معیارهای خطای مسایل رگرسیونی در sklearn

https://scikit-learn.org/stable/modules/model_evaluation.html

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

https://github.com/alifallahi/MachineLearning_Warmup/tree/master/Session7-regression-models-evaluation-metrics

علی فلاحی

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

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

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

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


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

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