ตอบ: วิธีใช้ 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
การโอเวอร์ฟิตในแมชชีนเลิร์นนิงคืออะไร

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

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