Validasi silang tinggalkan satu keluar di r (dengan contoh)
Untuk mengevaluasi performa suatu model pada kumpulan data, kita perlu mengukur seberapa cocok prediksi yang dibuat oleh model tersebut dengan data yang diamati.
Metode yang umum digunakan untuk melakukan hal ini dikenal sebagai Leave-One-Out Cross-Validation (LOOCV) , yang menggunakan pendekatan berikut:
1. Pisahkan kumpulan data menjadi kumpulan pelatihan dan kumpulan pengujian, dengan menggunakan semua kecuali satu observasi sebagai bagian dari kumpulan pelatihan.
2. Buat model hanya dengan menggunakan data dari set pelatihan.
3. Gunakan model untuk memprediksi nilai respon observasi yang dikeluarkan dari model dan menghitung mean square error (MSE).
4. Ulangi proses ini sebanyak n kali. Hitung UMK tes sebagai rata-rata dari semua UMK tes.
Cara termudah untuk menjalankan LOOCV di R adalah dengan menggunakan fungsi trainControl() dari perpustakaan caret di R.
Tutorial ini memberikan contoh singkat bagaimana menggunakan fungsi ini untuk melakukan LOOCV untuk model tertentu di R.
Contoh: Validasi Silang Tinggalkan Satu Keluar di R
Misalkan kita memiliki kumpulan data berikut di 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
Kode berikut menunjukkan cara menyesuaikan model regresi linier berganda ke kumpulan data ini di R dan melakukan LOOCV untuk mengevaluasi performa model:
library (caret) #specify the cross-validation method ctrl <- trainControl(method = " LOOCV ") #fit a regression model and use LOOCV to evaluate performance model <- train(y ~ x1 + x2, data = df, method = " lm ", trControl = ctrl) #view summary of LOOCV print(model) Linear Regression 10 samples 2 predictors No pre-processing Resampling: Leave-One-Out Cross-Validation Summary of sample sizes: 9, 9, 9, 9, 9, 9, ... Resampling results: RMSE Rsquared MAE 3.619456 0.6186766 3.146155 Tuning parameter 'intercept' was held constant at a value of TRUE
Berikut cara menafsirkan hasilnya:
- 10 sampel berbeda digunakan untuk membuat 10 model. Setiap model menggunakan 2 variabel prediktor.
- Tidak ada pra-pemrosesan yang dilakukan. Artinya, kami tidak menskalakan data dengan cara apa pun sebelum menyesuaikan model.
- Metode pengambilan sampel ulang yang kami gunakan untuk menghasilkan 10 sampel adalah validasi silang Leave-One-Out.
- Ukuran sampel untuk setiap set pelatihan adalah 9.
- RMSE: kesalahan akar rata-rata kuadrat. Ini mengukur perbedaan rata-rata antara prediksi yang dibuat oleh model dan observasi sebenarnya. Semakin rendah RMSE, semakin akurat suatu model dalam memprediksi observasi sebenarnya.
- Rsquared: Ini adalah ukuran korelasi antara prediksi yang dibuat oleh model dan observasi sebenarnya. Semakin tinggi R-kuadratnya, semakin akurat suatu model dalam memprediksi observasi sebenarnya.
- MAE: Rata-rata kesalahan absolut. Ini adalah perbedaan absolut rata-rata antara prediksi yang dibuat oleh model dan observasi sebenarnya. Semakin rendah MAE, semakin akurat suatu model dalam memprediksi observasi sebenarnya.
Masing-masing dari tiga pengukuran yang diberikan dalam hasil (RMSE, R-squared, dan MAE) memberi kita gambaran tentang kinerja model pada data yang tidak dipublikasikan.
Dalam praktiknya, kami biasanya menyesuaikan beberapa model berbeda dan membandingkan tiga metrik yang diberikan oleh hasil yang disajikan di sini untuk memutuskan model mana yang menghasilkan tingkat kesalahan pengujian terendah dan oleh karena itu merupakan model terbaik untuk digunakan.