MulaiMulai sekarang secara gratis

Evaluasi prosedur pemodelan menggunakan n-fold cross-validation

Dalam latihan ini, Anda akan menggunakan splitPlan, rencana cross-validation 3-fold dari latihan sebelumnya, untuk membuat prediksi dari model yang memprediksi mpg$cty dari mpg$hwy.

Jika dframe adalah data latih, maka salah satu cara menambahkan kolom prediksi cross-validation ke frame adalah sebagai berikut:

# Inisialisasi kolom dengan panjang yang sesuai
dframe$pred.cv <- 0 

# k adalah jumlah fold
# splitPlan adalah rencana cross-validation

for(i in 1:k) {
  # Ambil split ke-i
  split <- splitPlan[[i]]

  # Bangun model pada data latih
  # dari split ini
  # (lm, dalam kasus ini)
  model <- lm(fmla, data = dframe[split$train,])

  # buat prediksi pada
  # data aplikasi dari split ini
  dframe$pred.cv[split$app] <- predict(model, newdata = dframe[split$app,])
}

Cross-validation memprediksi seberapa baik model yang dibangun dari seluruh data akan berkinerja pada data baru. Seperti pada pembagian latih/uji, untuk prosedur pemodelan yang baik, kinerja cross-validation dan kinerja pelatihan seharusnya berdekatan.

Data frame mpg, rencana cross-validation splitPlan, dan fungsi rmse() telah dimuat sebelumnya.

Latihan ini adalah bagian dari kursus

Supervised Learning di R: Regresi

Lihat Kursus

Petunjuk latihan

  • Jalankan rencana cross-validation 3-fold dari splitPlan dan letakkan prediksi pada kolom mpg$pred.cv.
    • Gunakan lm() dan rumus cty ~ hwy.
  • Buat model regresi linear pada seluruh data mpg (rumus cty ~ hwy) dan tetapkan prediksinya ke mpg$pred.
  • Gunakan rmse() untuk mendapatkan root mean squared error dari prediksi model penuh (mpg$pred). Ingat bahwa rmse() menerima dua argumen: nilai prediksi dan keluaran aktual.
  • Dapatkan root mean squared error dari prediksi cross-validation. Apakah kedua nilainya kurang lebih sama?

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

# 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
___(___, ___)
Edit dan Jalankan Kode