اذهب إلى المحتوى
  • 0

معايير كفاءة المودل لمهام التوقع Regrission وكيفية تطبيقها باستخدام مكتبة scikit-learn

Meezo ML

السؤال

ماهي أدوات قياس كفاءة المودل عندما تكون المهمة مهمة توقع وكيف نقوم بتطبيقها باستخدام مكتبة scikit-learn؟

تم التعديل في بواسطة Mazen Adra
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

بشكل عام هناك 4 مقاييس أساسية لقياس كفاءة المودل عندما تكون المهمة من نوع Regrission (توقع):
أول ورابع معيار هم الأكثر استخداماً.
أولاً: Mean Absolute Error
وهي متوسط الفروق بالقيمة المطلقة بين القيم الحقيقية والقيم المتوقعة في مجموعة البيانات، والصورة المرفقة في الأسفل توضح الشكل العام للمعادلة الرياضية المعبرة عنها.
ثانياً: Mean Squared Error
وهي متوسط مربع الفروق بين القيم الحقيقية والمتوقعة، في الأسفل تم توضيح الشكل الرياضي للمعادلة.
ثالثاُ: Root Mean Squared Error
وهو جذر ال Mean Squared Error، في الأسفل تم توضيح الشكل الرياضي للمعادلة.
رابعاً: R Squared
معايير القياس المذكورة أعلاه سيكون لها قيم مختلفة لنماذج مختلفة، أي ليس لها مجال ثابت لكي نخمن على أساسه هل النموذج جيد أم لا، فمثلاً في مشكلة توقع أسعار المنازل قد يكون مجال القيم لهما بين 100 و 400 دولار وفي مسألة توقع درجة الحرارة قد يكون المجال بين ال 1 و 4 (أي القيم الناتجة ليست سهلة القراءة)، أما في هذا المقياس فسوف يكون مجال القيم محصور بين ال 0 وال 1، بحيث 1 تعني أن النموذج خالي من الأخطاء و 0 تعني أن النموذج فاشل تماماً. في الصورة المرفقة في الأسفل تم توضيح الشكل الرياضي للمعادلة.
مثال:
# انتبه أن التابع mean_squared_error يقبل وسيط بولياني يسمى squared في حال ضبطه على True سيتم حساب MSE أما في حال ضبطه على False سوف يحسي MSE ثم يأخذ الجذر أي يصبح RMSE.

####################################### Example ###############################################
# استيراد الدوال 
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error 
from sklearn.metrics import r2_score
y_true = [80.3, 100, -7.7]   # نفرض أن القيم الحقيقية كانت 
y_pred = [85, 99, -0.5]     #  والقيم المتوقعة

####################################### MAE ##################################################
print("MAE is: "+str(mean_absolute_error(y_true, y_pred))) # output: MAE is: 4.300000000000001

####################################### MSE ##################################################
print("MSE is:"+str(mean_squared_error(y_true, y_pred,squared=True))) # MSE is:24.976666666666677

####################################### RMSE ##################################################
print("RMSE is:"+str(mean_squared_error(y_true, y_pred,squared=False))) # RMSE is:4.997666121968001

####################################### R Squaerd ##################################################
print("R Squaerd is:"+str(r2_score(y_true, y_pred)))#R Squaerd is:0.9886074871600465

مثال واقعي على مهمة توقع أسعار المنازل في مدينة بوسطن، حيث أن البيانات تمثل مواصفات المنازل وأسعارها في تلك المدينة :
 

####################################### مثال عملي ##################################################
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error 
from sklearn.metrics import mean_squared_error 
from sklearn.metrics import r2_score
from sklearn.linear_model import LinearRegression

# تحميل الداتاسيت
BostonData = load_boston()
x = BostonData.data
y = BostonData.target

# تقسيم الداتا إلى عينة تدريب وعينة اختبار
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=44, shuffle =True)


#تعريف LinearRegressionModel 

LR = LinearRegression()
LR.fit(X_train, y_train)


# حساب القيم المتوقعة
y_pred = LR.predict(X_test)


# Mean Absolute Error
MAE = mean_absolute_error(y_test, y_pred)
print('Mean Absolute Error Value is : ', MAE) #Mean Absolute Error Value is :  3.4318693222761523


# Mean Squared Error
MSE = mean_squared_error(y_test, y_pred,squared=True)
print('Mean Squared Error Value is : ', MSE) #Mean Squared Error Value is :  21.439149523649792

# Root Mean Squared Error
RMSE = mean_squared_error(y_test, y_pred,squared=False)
print('Root Mean Squared Error Value is : ', RMSE) #Root Mean Squared Error Value is :  4.6302429227471205
# R Squaerd
print("R Squaerd is: "+str(r2_score(y_test, y_pred))) # R Squaerd is: 0.7532417995961468

فرانسوا كوليت ينصح باعتماد MAE.

 

MAE.png

MSE.png

RMSE.png

R_score.png

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ On 7‏/6‏/2021 at 15:39 قال Ali Haidar Ahmad:

# انتبه أن التابع mean_squared_error يقبل وسيط بولياني يسمى squared في حال ضبطه على True سيتم حساب MSE أما في حال ضبطه على False سوف يحسي MSE ثم يأخذ الجذر أي يصبح RMSE.

 

طيب اي الاحسن MSE ام RMSE ؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...