التحقق من صحة k-fold في r (خطوة بخطوة)


لتقييم أداء نموذج ما على مجموعة بيانات، نحتاج إلى قياس مدى مطابقة التنبؤات التي قدمها النموذج مع البيانات المرصودة.

تُعرف الطريقة شائعة الاستخدام للقيام بذلك باسم التحقق المتقاطع k-fold ، والذي يستخدم الطريقة التالية:

1. قم بتقسيم مجموعة البيانات عشوائيًا إلى مجموعات k ، أو “طيات”، ذات حجم متساوٍ تقريبًا.

2. اختر إحدى الطيات كمجموعة ضبط النفس. اضبط القالب على طيات k-1 المتبقية. حساب اختبار MSE على الملاحظات في الطبقة التي تم شدها.

3. كرر هذه العملية عدة مرات، في كل مرة باستخدام مجموعة مختلفة كمجموعة الاستبعاد.

4. احسب اختبار MSE الإجمالي كمتوسط لاختبار k MSEs.

أسهل طريقة لإجراء التحقق من صحة k-fold في R هي استخدام الدالة TrainControl() من مكتبة علامة الإقحام في R.

يقدم هذا البرنامج التعليمي مثالاً سريعًا لكيفية استخدام هذه الوظيفة لإجراء التحقق المتبادل من k-fold لنموذج معين في R.

مثال: التحقق من صحة K-Fold في R

لنفترض أن لدينا مجموعة البيانات التالية في R:

 #create data frame
df <- data.frame(y=c(6, 8, 12, 14, 14, 15, 17, 22, 24, 23),
                 x1=c(2, 5, 4, 3, 4, 6, 7, 5, 8, 9),
                 x2=c(14, 12, 12, 13, 7, 8, 7, 4, 6, 5))

#view data frame
df

y x1 x2
6 2 14
8 5 12
12 4 12
14 3 13
14 4 7
15 6 8
17 7 7
22 5 4
24 8 6
23 9 5

يوضح التعليمة البرمجية التالية كيفية ملاءمة نموذج الانحدار الخطي المتعدد لمجموعة البيانات هذه في R وإجراء التحقق من الصحة عبر k-fold مع k = 5 مرات لتقييم أداء النموذج:

 library (caret)

#specify the cross-validation method
ctrl <- trainControl(method = " cv ", number = 5)

#fit a regression model and use k-fold CV to evaluate performance
model <- train(y ~ x1 + x2, data = df, method = " lm ", trControl = ctrl)

#view summary of k-fold CV               
print(model)

Linear Regression 

10 samples
 2 predictors

No pre-processing
Resampling: Cross-Validated (5 fold) 
Summary of sample sizes: 8, 8, 8, 8, 8 
Resampling results:

  RMSE Rsquared MAE     
  3.018979 1 2.882348

Tuning parameter 'intercept' was held constant at a value of TRUE

وإليك كيفية تفسير النتيجة:

  • لم تتم المعالجة المسبقة. أي أننا لم نقم بقياس البيانات بأي شكل من الأشكال قبل ملاءمة النماذج.
  • كانت طريقة إعادة التشكيل التي استخدمناها لتقييم النموذج هي التحقق المتبادل بخمسة أضعاف.
  • وكان حجم العينة لكل مجموعة تدريبية 8.
  • RMSE: جذر متوسط مربع الخطأ. يقيس هذا متوسط الفرق بين التنبؤات التي قدمها النموذج والملاحظات الفعلية. كلما انخفض مؤشر RMSE، زادت دقة النموذج في التنبؤ بالملاحظات الفعلية.
  • Rsquared: هذا مقياس للارتباط بين التنبؤات التي قدمها النموذج والملاحظات الفعلية. كلما ارتفع مربع R، زادت دقة النموذج في التنبؤ بالملاحظات الفعلية.
  • MAE: متوسط الخطأ المطلق. هذا هو متوسط الفرق المطلق بين التنبؤات التي قدمها النموذج والملاحظات الفعلية. كلما انخفض MAE، زادت دقة النموذج في التنبؤ بالملاحظات الفعلية.

كل قياس من القياسات الثلاثة المقدمة في النتيجة (RMSE وR-squared وMAE) يعطينا فكرة عن أداء النموذج على البيانات غير المنشورة.

من الناحية العملية، نحن عادةً نلائم عدة نماذج مختلفة ونقارن المقاييس الثلاثة التي توفرها النتائج المعروضة هنا لتحديد النموذج الذي ينتج أقل معدلات خطأ في الاختبار وبالتالي فهو أفضل نموذج للاستخدام.

يمكننا استخدام الكود التالي لفحص ملاءمة النموذج النهائي:

 #view final model
model$finalModel

Call:
lm(formula = .outcome ~ ., data = dat)

Coefficients:
(Intercept) x1 x2  
    21.2672 0.7803 -1.1253  

النموذج النهائي يصبح كما يلي:

ص = 21.2672 + 0.7803*(× 1 ) – 1.12538(× 2 )

يمكننا استخدام الكود التالي لعرض تنبؤات النموذج لكل طية:

 #view predictions for each fold
model$resample

      RMSE Rsquared MAE Resample
1 4.808773 1 3.544494 Fold1
2 3.464675 1 3.366812 Fold2
3 6.281255 1 6.280702 Fold3
4 3.759222 1 3.573883 Fold4
5 1.741127 1 1.679767 Fold5

لاحظ أنه في هذا المثال اخترنا استخدام k=5 طيات، ولكن يمكنك اختيار أي عدد من الطيات التي تريدها. من الناحية العملية، نختار عادةً ما بين 5 إلى 10 طبقات، حيث يثبت أن هذا هو العدد الأمثل للطبقات التي تنتج معدلات خطأ موثوقة في الاختبار.

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *