เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

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
แก้ไขและรันโค้ด