برای ارزیابی کارایی مدل های پیاده سازی شده و به طور کلی ارزیابی خطا معیارهای گوناگونی وجود دارند که متناسب با ساختار مدل از آن ها استفاده می شود.
قسمت سوم. آموزش رگرسیون خطی ساده، مرحله به مرحله و با مثال
قسمت هشتم. آموزش رگرسیون خطی چندگانه (چند متغیره)، مرحله به مرحله و با مثال
فهرست عناوین این مطلب
معیارهای ارزیابی خطا برای مدل های ماشین لرنینگ مسائل رگرسیون
در این قسمت به معرفی شش معیار خطای رایج برای ارزیابی مدل های ماشین لرنینگ، به ویژه مسایل رگرسیونی می پردازیم.
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).”
6. معیار خطای ضریب تعیین (R squared) یا به اختصار
در این فرمول، 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 از لینک زیر قابل دسترس هستند: