การตรวจสอบความถูกต้องแบบ cross-one-out ใน r (พร้อมตัวอย่าง)
ในการประเมินประสิทธิภาพของแบบจำลองในชุดข้อมูล เราจำเป็นต้องวัดว่าการคาดการณ์ที่ทำโดยแบบจำลองนั้นตรงกับข้อมูลที่สังเกตได้ดีเพียงใด
วิธีการที่ใช้กันทั่วไปในการทำเช่นนี้เรียกว่า Leave-One-Out Cross-Validation (LOOCV) ซึ่งใช้แนวทางต่อไปนี้:
1. แบ่งชุดข้อมูลออกเป็นชุดการฝึกและชุดทดสอบ โดยใช้การสังเกตทั้งหมดยกเว้นชุดเดียวเป็นส่วนหนึ่งของชุดการฝึก
2. สร้างแบบจำลองโดยใช้ข้อมูลจากชุดการฝึกเท่านั้น
3. ใช้แบบจำลองเพื่อทำนายค่าตอบสนองของการสังเกตที่ไม่รวมอยู่ในแบบจำลอง และคำนวณค่าคลาดเคลื่อนกำลังสองเฉลี่ย (MSE)
4. ทำซ้ำขั้นตอนนี้ n ครั้ง คำนวณ MSE การทดสอบเป็นค่าเฉลี่ยของ MSE ทดสอบทั้งหมด
วิธีที่ง่ายที่สุดในการรัน LOOCV ใน R คือการใช้ฟังก์ชัน trainControl() จากไลบรารี คา เร็ตใน R
บทช่วยสอนนี้ให้ตัวอย่างโดยย่อของวิธีใช้ฟังก์ชันนี้เพื่อดำเนินการ LOOCV สำหรับโมเดลที่กำหนดใน R
ตัวอย่าง: การตรวจสอบความถูกต้องแบบ Cross-One-Out ใน 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 และดำเนินการ LOOCV เพื่อประเมินประสิทธิภาพของโมเดล:
library (caret) #specify the cross-validation method ctrl <- trainControl(method = " LOOCV ") #fit a regression model and use LOOCV to evaluate performance model <- train(y ~ x1 + x2, data = df, method = " lm ", trControl = ctrl) #view summary of LOOCV print(model) Linear Regression 10 samples 2 predictors No pre-processing Resampling: Leave-One-Out Cross-Validation Summary of sample sizes: 9, 9, 9, 9, 9, 9, ... Resampling results: RMSE Rsquared MAE 3.619456 0.6186766 3.146155 Tuning parameter 'intercept' was held constant at a value of TRUE
ต่อไปนี้เป็นวิธีการตีความผลลัพธ์:
- มีการใช้ตัวอย่างที่แตกต่างกัน 10 ตัวอย่างเพื่อสร้างแบบจำลอง 10 แบบ แต่ละรุ่นใช้ตัวแปรทำนาย 2 ตัว
- ไม่มีการประมวลผลล่วงหน้าเกิดขึ้น นั่นคือเราไม่ได้ ปรับขนาดข้อมูล ในทางใดทางหนึ่งก่อนจะปรับโมเดลให้เหมาะสม
- วิธีการสุ่มตัวอย่างที่เราใช้ในการสร้างตัวอย่าง 10 ตัวอย่างคือการตรวจสอบข้ามแบบปล่อยครั้งเดียว
- ขนาดตัวอย่างสำหรับชุดการฝึกแต่ละชุดคือ 9
- RMSE: ข้อผิดพลาดรูทค่าเฉลี่ยกำลังสอง วิธีนี้จะวัดความแตกต่างโดยเฉลี่ยระหว่างการคาดการณ์ที่ทำโดยแบบจำลองและการสังเกตจริง ยิ่ง RMSE ต่ำ โมเดลก็ยิ่งทำนายการสังเกตจริงได้แม่นยำยิ่งขึ้น
- Rsquared: นี่คือการวัดความสัมพันธ์ระหว่างการคาดการณ์ที่ทำโดยแบบจำลองกับการสังเกตจริง ยิ่งค่า R-squared สูง โมเดลก็ยิ่งสามารถทำนายการสังเกตจริงได้แม่นยำยิ่งขึ้น
- แม่: ข้อผิดพลาดสัมบูรณ์โดยเฉลี่ย นี่คือความแตกต่างสัมบูรณ์โดยเฉลี่ยระหว่างการคาดการณ์ที่ทำโดยแบบจำลองกับการสังเกตจริง ยิ่ง MAE ต่ำ โมเดลก็ยิ่งสามารถทำนายการสังเกตจริงได้แม่นยำยิ่งขึ้น
การวัดทั้งสามแบบที่ให้ไว้ในผลลัพธ์ (RMSE, R-squared และ MAE) ช่วยให้เราเห็นแนวคิดเกี่ยวกับประสิทธิภาพของแบบจำลองกับข้อมูลที่ยังไม่ได้เผยแพร่
ในทางปฏิบัติ โดยทั่วไปแล้วเราจะติดตั้งโมเดลที่แตกต่างกันหลายตัว และเปรียบเทียบเมตริกทั้งสามที่ได้จากผลลัพธ์ที่นำเสนอที่นี่ เพื่อตัดสินใจว่าโมเดลใดสร้างอัตราข้อผิดพลาดในการทดสอบต่ำที่สุด ดังนั้นจึงเป็นโมเดลที่ดีที่สุดที่จะใช้