วิธีคำนวณ auc (พื้นที่ใต้เส้นโค้ง) ในหน่วย r


การถดถอยแบบลอจิสติก เป็นวิธีการทางสถิติที่เราใช้เพื่อปรับให้เหมาะสมกับแบบจำลองการถดถอยเมื่อตัวแปรตอบสนองเป็นไบนารี เพื่อประเมินว่าแบบจำลองการถดถอยโลจิสติกเหมาะสมกับชุดข้อมูลได้ดีเพียงใด เราสามารถดูตัวชี้วัดสองตัวต่อไปนี้:

  • ความไว: ความน่าจะเป็นที่แบบจำลองคาดการณ์ผลลัพธ์ที่เป็นบวกสำหรับการสังเกต เมื่อผลลัพธ์เป็นบวกจริงๆ สิ่งนี้เรียกอีกอย่างว่า “อัตราบวกที่แท้จริง”
  • ความจำเพาะ: ความน่าจะเป็นที่แบบจำลองทำนายผลลัพธ์ที่เป็นลบสำหรับการสังเกต เมื่อผลลัพธ์เป็นลบจริงๆ สิ่งนี้เรียกอีกอย่างว่า “อัตราติดลบที่แท้จริง”

วิธีหนึ่งในการแสดงภาพการวัดทั้งสองนี้คือการสร้าง เส้นโค้ง ROC ซึ่งย่อมาจากเส้นโค้ง “ลักษณะการทำงานของตัวรับ”

นี่คือกราฟที่แสดงความไวตามแกน y และ (1 – ความจำเพาะ) ตามแกน x วิธีหนึ่งในการหาปริมาณประสิทธิผลของแบบจำลองการถดถอยโลจิสติกในการจำแนกข้อมูลคือการคำนวณ AUC ซึ่งย่อมาจาก “พื้นที่ใต้เส้นโค้ง”

ยิ่ง AUC ใกล้ 1 มากเท่าใด โมเดลก็ยิ่งดีเท่านั้น

ตัวอย่างทีละขั้นตอนต่อไปนี้แสดงวิธีคำนวณ AUC สำหรับแบบจำลองการถดถอยโลจิสติกใน R

ขั้นตอนที่ 1: โหลดข้อมูล

ขั้นแรก เราจะโหลดชุดข้อมูล เริ่มต้น จากแพ็คเกจ ISLR ซึ่งมีข้อมูลเกี่ยวกับบุคคลต่างๆ ที่ผิดนัดเงินกู้หรือไม่

 #load dataset
data <- ISLR::Default

#view first six rows of dataset
head(data)

  default student balance income
1 No No 729.5265 44361.625
2 No Yes 817.1804 12106.135
3 No No 1073.5492 31767.139
4 No No 529.2506 35704.494
5 No No 785.6559 38463.496
6 No Yes 919.5885 7491.559

ขั้นตอนที่ 2: ติดตั้งแบบจำลองการถดถอยโลจิสติก

ต่อไป เราจะใส่แบบจำลองการถดถอยโลจิสติกเพื่อคาดการณ์ความน่าจะเป็นที่บุคคลจะผิดนัด:

 #make this example reproducible
set. seeds (1)

#Use 70% of dataset as training set and remaining 30% as testing set
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)

ขั้นตอนที่ 3: คำนวณโมเดล AUC

ต่อไป เราจะใช้ฟังก์ชัน auc() จากแพ็คเกจ pROC เพื่อคำนวณ AUC ของโมเดล ฟังก์ชันนี้ใช้ไวยากรณ์ต่อไปนี้:

ไม่มี(ตอบ, คาดการณ์)

ต่อไปนี้คือวิธีใช้ฟังก์ชันนี้ในตัวอย่างของเรา:

 #calculate probability of default for each individual in test dataset
predicted <- predict(model, test, type=" response ")

#calculate AUC
library (pROC)
auc(test$default, predicted)

Setting levels: control = No, case = Yes
Setting direction: controls < boxes
Area under the curve: 0.9437

AUC ของโมเดลกลายเป็น 0.9437

เนื่องจากค่านี้ใกล้กับ 1 จึงบ่งชี้ว่าแบบจำลองนี้ทำงานได้ดีมากในการคาดการณ์ว่าแต่ละบุคคลจะผิดนัดชำระหนี้เงินกู้ของตนหรือไม่

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *