كيفية إنشاء مصفوفة ارتباك في لغة r (خطوة بخطوة)
الانحدار اللوجستي هو نوع من الانحدار يمكننا استخدامه عندما يكون متغير الاستجابة ثنائيًا.
إحدى الطرق الشائعة لتقييم جودة نموذج الانحدار اللوجستي هي إنشاء مصفوفة ارتباك ، وهي عبارة عن جدول 2 × 2 يوضح القيم المتوقعة للنموذج مقابل القيم الفعلية لمجموعة بيانات الاختبار.
يوضح المثال التالي خطوة بخطوة كيفية إنشاء مصفوفة ارتباك في R.
الخطوة 1: ملاءمة نموذج الانحدار اللوجستي
في هذا المثال، سوف نستخدم مجموعة البيانات الافتراضية من حزمة ISLR . سنستخدم حالة الطالب والرصيد البنكي والدخل السنوي للتنبؤ باحتمالية تخلف شخص معين عن سداد قرضه.
يوضح التعليمة البرمجية التالية كيفية ملاءمة نموذج الانحدار اللوجستي لمجموعة البيانات هذه:
#load necessary packages library (caret) library (InformationValue) library (ISLR) #load dataset data <-Default #split dataset into training and testing set set. seeds (1) sample <- sample(c(TRUE, FALSE), nrow(data), replace= TRUE , prob=c(0.7,0.3)) train <- data[sample, ] test <- data[!sample, ] #fit logistic regression model model <- glm(default~student+balance+income, family=" binomial ", data=train)
الخطوة 2: إنشاء مصفوفة الارتباك
بعد ذلك، سوف نستخدم الدالةارتباكماتريكس() من حزمة علامة الإقحام لإنشاء مصفوفة ارتباك:
#use model to predict probability of default
predicted <- predict(model, test, type="response")
#convert defaults from "Yes" and "No" to 1's and 0's
test$default <- ifelse(test$default==" Yes ", 1, 0)
#find optimal cutoff probability to use to maximize accuracy
optimal <- optimalCutoff(test$default, predicted)[1]
#create confusion matrix
confusionMatrix(test$default, predicted)
0 1
0 2912 64
1 21 39
الخطوة 3: تقييم مصفوفة الارتباك
يمكننا أيضًا حساب المقاييس التالية باستخدام مصفوفة الارتباك:
- الحساسية: “المعدل الإيجابي الحقيقي” – النسبة المئوية للأفراد الذين توقع النموذج بشكل صحيح أنهم سيتخلفون عن السداد.
- الخصوصية: “المعدل السلبي الحقيقي” – النسبة المئوية للأفراد الذين توقع النموذج بشكل صحيح أنهم لن يتخلفوا عن السداد.
- إجمالي معدل التصنيف الخاطئ: النسبة المئوية لإجمالي سوء التصنيف الذي قام به النموذج.
يوضح الكود التالي كيفية حساب هذه المقاييس:
#calculate sensitivity
sensitivity(test$default, predicted)
[1] 0.3786408
#calculate specificity
specificity(test$default, predicted)
[1] 0.9928401
#calculate total misclassification error rate
misClassError(test$default, predicted, threshold =optimal)
[1] 0.027
ويبلغ إجمالي معدل الخطأ في التصنيف 2.7% لهذا النموذج.
وبشكل عام، كلما انخفض هذا المعدل، زادت قدرة النموذج على التنبؤ بالنتائج. وبالتالي فإن هذا النموذج بالذات أثبت فعاليته الكبيرة في التنبؤ بما إذا كان الفرد سوف يتخلف عن السداد أم لا.