การตรวจสอบความถูกต้องแบบ 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) ช่วยให้เราเห็นแนวคิดเกี่ยวกับประสิทธิภาพของแบบจำลองกับข้อมูลที่ยังไม่ได้เผยแพร่

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

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

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