ตอบ: วิธีใช้ traincontrol เพื่อควบคุมพารามิเตอร์การฝึก
เพื่อประเมินว่าแบบจำลองสามารถเข้ากับชุดข้อมูลได้ดีเพียงใด เราจำเป็นต้องวิเคราะห์ประสิทธิภาพของแบบจำลองจากการสังเกตการณ์ที่ไม่เคยเห็นมาก่อน
วิธีหนึ่งที่พบบ่อยที่สุดในการบรรลุเป้าหมายนี้คือการใช้ k-fold cross-validation ซึ่งใช้แนวทางต่อไปนี้:
1. สุ่มแบ่งชุดข้อมูลออกเป็น k กลุ่ม หรือ “พับ” โดยมีขนาดเท่ากันโดยประมาณ
2. เลือกพับใดพับหนึ่งเป็นชุดอุปกรณ์ยึดเหนี่ยว ปรับเทมเพลตเป็นพับ k-1 ที่เหลือ คำนวณการทดสอบ MSE จากการสังเกตในชั้นที่ถูกดึง
3. ทำซ้ำขั้นตอนนี้ k ครั้ง ในแต่ละครั้งโดยใช้ชุดอื่นเป็นชุดแยก
4. คำนวณการทดสอบ MSE โดยรวมเป็นค่าเฉลี่ยของการทดสอบ k MSE
วิธีที่ง่ายที่สุดในการดำเนินการตรวจสอบข้าม k-fold ใน R คือการใช้ฟังก์ชัน trainControl() และ train() จาก ไลบรารี คาเร็ตใน R
ฟังก์ชัน trainControl() ใช้เพื่อระบุพารามิเตอร์การฝึก (เช่น ประเภทของการตรวจสอบความถูกต้องข้ามที่จะใช้ จำนวนพับที่จะใช้ ฯลฯ) และฟังก์ชัน train() ใช้เพื่อปรับโมเดลให้เข้ากับข้อมูล .
ตัวอย่างต่อไปนี้แสดงวิธีการใช้ฟังก์ชัน trainControl() และ train() ในทางปฏิบัติ
ตัวอย่าง: วิธีใช้ trainControl() ใน 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
ตอนนี้ สมมติว่าเราใช้ฟังก์ชัน lm() เพื่อให้พอดีกับ โมเดลการถดถอยเชิงเส้นหลายตัว กับชุดข้อมูลนี้ โดยใช้ x1 และ x2 เป็นตัวแปรทำนาย และ y เป็นตัวแปรตอบสนอง:
#fit multiple linear regression model to data fit <- lm(y ~ x1 + x2, data=df) #view model summary summary(fit) Call: lm(formula = y ~ x1 + x2, data = df) Residuals: Min 1Q Median 3Q Max -3.6650 -1.9228 -0.3684 1.2783 5.0208 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 21.2672 6.9927 3.041 0.0188 * x1 0.7803 0.6942 1.124 0.2981 x2 -1.1253 0.4251 -2.647 0.0331 * --- Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 3.093 on 7 degrees of freedom Multiple R-squared: 0.801, Adjusted R-squared: 0.7441 F-statistic: 14.09 on 2 and 7 DF, p-value: 0.003516
การใช้ค่าสัมประสิทธิ์ในเอาต์พุตของแบบจำลอง เราสามารถเขียนแบบจำลองการถดถอยที่ติดตั้งไว้ได้:
y = 21.2672 + 0.7803*(x 1 ) – 1.1253(x 2 )
เพื่อให้ทราบว่าแบบจำลองนี้ทำงานได้ดีเพียงใดใน การสังเกตที่ มองไม่เห็น เราสามารถใช้การตรวจสอบความถูกต้องแบบข้าม k-fold
รหัสต่อไปนี้แสดงวิธีใช้ฟังก์ชัน trainControl() ของแพ็คเกจ คาเร็ต เพื่อระบุการตรวจสอบข้าม k-fold ( method=”cv” ) ที่ใช้ 5 เท่า ( number=5 )
จากนั้นเราจะส่งฟังก์ชัน trainControl() ไปยังฟังก์ชัน train() เพื่อทำการตรวจสอบความถูกต้องข้าม k-fold:
library (caret) #specify the cross-validation method ctrl <- trainControl(method = " cv ", number = 5 ) #fit a regression model and use k-fold CV to evaluate performance model <- train(y ~ x1 + x2, data = df, method = " lm ", trControl = ctrl) #view summary of k-fold CV print (model) Linear Regression 10 samples 2 predictors No pre-processing Resampling: Cross-Validated (5 fold) Summary of sample sizes: 8, 8, 8, 8, 8 Resampling results: RMSE Rsquared MAE 3.612302 1 3.232153 Tuning parameter 'intercept' was held constant at a value of TRUE
จากผลลัพธ์เราจะเห็นว่าแบบจำลองได้รับการติดตั้ง 5 ครั้ง โดยใช้ขนาดตัวอย่าง 8 ครั้ง ในการสังเกตในแต่ละครั้ง
แต่ละครั้งจะใช้แบบจำลองเพื่อทำนายค่าของการสังเกตที่เก็บไว้ 2 รายการ และคำนวณเมตริกต่อไปนี้ในแต่ละครั้ง:
- RMSE: ข้อผิดพลาดรูทค่าเฉลี่ยกำลังสอง วิธีนี้จะวัดความแตกต่างโดยเฉลี่ยระหว่างการคาดการณ์ที่ทำโดยแบบจำลองและการสังเกตจริง ยิ่ง RMSE ต่ำ โมเดลก็ยิ่งทำนายการสังเกตจริงได้แม่นยำยิ่งขึ้น
- แม่: ข้อผิดพลาดสัมบูรณ์โดยเฉลี่ย นี่คือความแตกต่างสัมบูรณ์โดยเฉลี่ยระหว่างการคาดการณ์ที่ทำโดยแบบจำลองกับการสังเกตจริง ยิ่ง MAE ต่ำ โมเดลก็ยิ่งสามารถทำนายการสังเกตจริงได้แม่นยำยิ่งขึ้น
ค่าเฉลี่ยของค่า RMSE และ MAE สำหรับองค์ประกอบทั้งห้าจะแสดงในผลลัพธ์:
- RMSE: 3.612302
- แม่: 3.232153
ตัวชี้วัดเหล่านี้ทำให้เราทราบถึงประสิทธิภาพของแบบจำลองกับข้อมูลใหม่
ในทางปฏิบัติ โดยทั่วไปแล้ว เราจะปรับโมเดลต่างๆ หลายๆ แบบให้เหมาะสมและเปรียบเทียบหน่วยวัดเหล่านี้เพื่อพิจารณาว่าโมเดลใดทำงานได้ดีที่สุดกับข้อมูลที่มองไม่เห็น
ตัวอย่างเช่น เราสามารถใส่ แบบจำลองการถดถอยพหุนาม และดำเนินการตรวจสอบข้าม K-fold เพื่อดูว่าการวัด RMSE และ MAE เปรียบเทียบกับแบบจำลองการถดถอยเชิงเส้นหลายแบบอย่างไร
หมายเหตุ #1: ในตัวอย่างนี้ เราเลือกใช้การพับ k=5 แต่คุณสามารถเลือกจำนวนการพับเท่าใดก็ได้ที่คุณต้องการ ในทางปฏิบัติ เรามักเลือกระหว่าง 5 ถึง 10 ชั้น เนื่องจากนี่เป็นจำนวนที่เหมาะสมที่สุดที่สร้างอัตราความผิดพลาดในการทดสอบที่เชื่อถือได้
หมายเหตุ #2 : ฟังก์ชัน trainControl() ยอมรับข้อโต้แย้งที่เป็นไปได้มากมาย คุณสามารถค้นหาเอกสารฉบับเต็มสำหรับฟังก์ชันนี้ ได้ที่นี่
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้ให้ข้อมูลเพิ่มเติมเกี่ยวกับแบบจำลองการฝึก:
ข้อมูลเบื้องต้นเกี่ยวกับการตรวจสอบข้าม K-Fold
ข้อมูลเบื้องต้นเกี่ยวกับการตรวจสอบความถูกต้องแบบ Cross-One-Out
การโอเวอร์ฟิตในแมชชีนเลิร์นนิงคืออะไร