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

ประเมินกระบวนการสร้างโมเดลด้วย n-fold cross-validation

ในแบบฝึกหัดนี้ จะใช้ splitPlan ซึ่งเป็นแผน 3-fold cross validation จากแบบฝึกหัดก่อนหน้า เพื่อพยากรณ์ mpg$cty จาก mpg$hwy

หาก dframe คือข้อมูลสำหรับ training วิธีหนึ่งในการเพิ่มคอลัมน์ค่าพยากรณ์ cross-validation ลงใน data frame มีดังนี้

# Initialize a column of the appropriate length
dframe$pred.cv <- 0 

# k is the number of folds
# splitPlan is the cross validation plan

for(i in 1:k) {
  # Get the ith split
  split <- splitPlan[[i]]

  # Build a model on the training data 
  # from this split 
  # (lm, in this case)
  model <- lm(fmla, data = dframe[split$train,])

  # make predictions on the 
  # application data from this split
  dframe$pred.cv[split$app] <- predict(model, newdata = dframe[split$app,])
}

Cross-validation ช่วยพยากรณ์ว่าโมเดลที่สร้างจากข้อมูลทั้งหมดจะทำงานได้ดีเพียงใดบนข้อมูลใหม่ เช่นเดียวกับการแบ่ง test/train หากกระบวนการสร้างโมเดลดี ประสิทธิภาพของ cross-validation และประสิทธิภาพบนข้อมูล training ควรใกล้เคียงกัน

ข้อมูล data frame mpg, แผน cross validation splitPlan และฟังก์ชัน rmse() ถูกโหลดไว้ให้แล้ว

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Supervised Learning ใน R: การถดถอย

ดูคอร์ส

คำแนะนำการฝึกหัด

  • รันแผน 3-fold cross validation จาก splitPlan และเก็บค่าพยากรณ์ไว้ในคอลัมน์ mpg$pred.cv
    • ใช้ lm() กับสูตร cty ~ hwy
  • สร้างโมเดล linear regression บนข้อมูล mpg ทั้งหมด (สูตร cty ~ hwy) และกำหนดค่าพยากรณ์ให้กับ mpg$pred
  • ใช้ rmse() เพื่อหาค่า root mean squared error ของค่าพยากรณ์จากโมเดลที่ใช้ข้อมูลทั้งหมด (mpg$pred) จำไว้ว่า rmse() รับอาร์กิวเมนต์สองตัว ได้แก่ ค่าพยากรณ์ และค่าผลลัพธ์จริง
  • หาค่า root mean squared error ของค่าพยากรณ์จาก cross-validation ค่าทั้งสองใกล้เคียงกันหรือไม่?

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# mpg is available
summary(mpg)

# splitPlan is available
str(splitPlan)

# Run the 3-fold cross validation plan from splitPlan
k <- ___ # Number of folds
mpg$pred.cv <- 0 
for(i in ___) {
  split <- ___
  model <- lm(___, data = ___)
  mpg$pred.cv[___] <- predict(___, newdata = ___)
}

# Predict from a full model
mpg$pred <- ___(___(cty ~ hwy, data = mpg))

# Get the rmse of the full model's predictions
___(___, ___)

# Get the rmse of the cross-validation predictions
___(___, ___)
แก้ไขและรันโค้ด