Cross-validation แบบ 10-fold
ดังที่เห็นในวิดีโอ วิธีการตรวจสอบโมเดลที่ดีกว่าคือการใช้ชุดทดสอบหลายชุดอย่างเป็นระบบ แทนที่จะแบ่ง train/test แบบสุ่มเพียงครั้งเดียว โดย package caret ช่วยให้ทำสิ่งนี้ได้อย่างง่ายดาย:
model <- train(y ~ ., my_data)
caret รองรับ cross-validation หลายประเภท และสามารถระบุประเภทของ cross-validation รวมถึงจำนวน fold ได้ผ่านฟังก์ชัน trainControl() ซึ่งส่งค่าเข้าไปยัง argument trControl ใน train():
model <- train(
y ~ .,
my_data,
method = "lm",
trControl = trainControl(
method = "cv",
number = 10,
verboseIter = TRUE
)
)
สิ่งสำคัญที่ควรจำคือ ส่ง method สำหรับการสร้างโมเดลเข้าไปในฟังก์ชัน train() หลัก และส่ง method สำหรับ cross-validation เข้าไปในฟังก์ชัน trainControl()
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Machine Learning ด้วย caret ใน R
คำแนะนำการฝึกหัด
- สร้างโมเดล linear regression เพื่อทำนาย
priceโดยใช้ตัวแปรอื่นทั้งหมดในชุดข้อมูลdiamondsเป็นตัวแปรพยากรณ์ ใช้ฟังก์ชันtrain()และ cross-validation แบบ 10-fold (หมายเหตุ: เราได้เลือกข้อมูลเพียงส่วนหนึ่งจากชุดข้อมูลdiamondsต้นฉบับเพื่อให้การประมวลผลเร็วขึ้น แต่ยังคงใช้ชื่อว่าdiamondsเหมือนเดิม) - แสดงผลโมเดลใน console และตรวจสอบผลลัพธ์ที่ได้
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Fit lm model using 10-fold CV: model
model <- train(
___,
___,
method = "lm",
trControl = trainControl(
method = "cv",
number = ___,
verboseIter = TRUE
)
)
# Print model to console