วิธีคำนวณ 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 จึงบ่งชี้ว่าแบบจำลองนี้ทำงานได้ดีมากในการคาดการณ์ว่าแต่ละบุคคลจะผิดนัดชำระหนี้เงินกู้ของตนหรือไม่