A: cara menggunakan traincontrol untuk mengontrol parameter pelatihan
Untuk menilai seberapa baik suatu model dapat menyesuaikan dengan kumpulan data, kita perlu menganalisis kinerjanya berdasarkan observasi yang belum pernah dilihat sebelumnya.
Salah satu cara paling umum untuk mencapai hal ini adalah dengan menggunakan k-fold cross-validation , yang menggunakan pendekatan berikut:
1. Bagi kumpulan data secara acak menjadi k kelompok, atau “lipatan”, yang ukurannya kira-kira sama.
2. Pilih salah satu lipatan sebagai set penahan. Sesuaikan template dengan sisa k-1 lipatan. Hitung uji MSE pada pengamatan pada lapisan yang dikencangkan.
3. Ulangi proses ini sebanyak k kali, setiap kali menggunakan himpunan berbeda sebagai himpunan pengecualian.
4. Hitung UMK uji keseluruhan sebagai rata-rata UMK uji k .
Cara termudah untuk melakukan validasi silang k-fold di R adalah dengan menggunakan fungsi trainControl() dan train() dari perpustakaan caret di R.
Fungsi trainControl() digunakan untuk menentukan parameter pelatihan (misalnya jenis validasi silang yang akan digunakan, jumlah lipatan yang akan digunakan, dll.) dan fungsi train() digunakan untuk benar-benar menyesuaikan model dengan data. .
Contoh berikut menunjukkan cara menggunakan fungsi trainControl() dan train() dalam praktiknya.
Contoh: Cara menggunakan trainControl() 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
Sekarang misalkan kita menggunakan fungsi lm() untuk menyesuaikan model regresi linier berganda dengan kumpulan data ini, menggunakan x1 dan x2 sebagai variabel prediktor dan y sebagai variabel respons:
#fit multiple linear regression model to data fit <- lm(y ~ x1 + x2, data=df) #view model summary summary(fit) Call: lm(formula = y ~ x1 + x2, data = df) Residuals: Min 1Q Median 3Q Max -3.6650 -1.9228 -0.3684 1.2783 5.0208 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 21.2672 6.9927 3.041 0.0188 * x1 0.7803 0.6942 1.124 0.2981 x2 -1.1253 0.4251 -2.647 0.0331 * --- Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 3.093 on 7 degrees of freedom Multiple R-squared: 0.801, Adjusted R-squared: 0.7441 F-statistic: 14.09 on 2 and 7 DF, p-value: 0.003516
Dengan menggunakan koefisien pada keluaran model, kita dapat menulis model regresi yang sesuai:
kamu = 21,2672 + 0,7803*(x 1 ) – 1,1253(x 2 )
Untuk mendapatkan gambaran seberapa baik kinerja model ini pada pengamatan yang tidak terlihat, kita dapat menggunakan validasi silang k-fold.
Kode berikut menunjukkan cara menggunakan fungsi trainControl() paket tanda sisipan untuk menentukan validasi silang k-fold ( method=”cv” ) yang menggunakan 5 lipatan ( number=5 ).
Kami kemudian meneruskan fungsi trainControl() ini ke fungsi train() untuk benar-benar melakukan validasi silang k-fold:
library (caret) #specify the cross-validation method ctrl <- trainControl(method = " cv ", number = 5 ) #fit a regression model and use k-fold CV to evaluate performance model <- train(y ~ x1 + x2, data = df, method = " lm ", trControl = ctrl) #view summary of k-fold CV print (model) Linear Regression 10 samples 2 predictors No pre-processing Resampling: Cross-Validated (5 fold) Summary of sample sizes: 8, 8, 8, 8, 8 Resampling results: RMSE Rsquared MAE 3.612302 1 3.232153 Tuning parameter 'intercept' was held constant at a value of TRUE
Dari hasil tersebut terlihat bahwa model dipasang sebanyak 5 kali dengan menggunakan ukuran sampel sebanyak 8 observasi setiap kali pemasangan.
Setiap kali, model tersebut kemudian digunakan untuk memprediksi nilai dari 2 observasi yang dipertahankan dan metrik berikut dihitung setiap kali:
- 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.
- 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 aktual.
Rata-rata nilai RMSE dan MAE untuk kelima komponen ditampilkan pada hasil:
- RMSE: 3.612302
- MAE: 3.232153
Metrik ini memberi kita gambaran tentang performa model pada data baru.
Dalam praktiknya, kami biasanya menyesuaikan beberapa model berbeda dan membandingkan metrik ini untuk menentukan model mana yang memiliki performa terbaik pada data yang tidak terlihat.
Misalnya, kita dapat menyesuaikan model regresi polinomial dan melakukan validasi silang K-fold untuk melihat bagaimana metrik RMSE dan MAE dibandingkan dengan model regresi linier berganda.
Catatan #1: Dalam contoh ini, kami memilih untuk menggunakan k=5 lipatan, namun Anda dapat memilih jumlah lipatan berapa pun yang Anda inginkan. Dalam praktiknya, kami biasanya memilih antara 5 dan 10 lapis, karena ini terbukti merupakan jumlah lapis optimal yang menghasilkan tingkat kesalahan pengujian yang dapat diandalkan.
Catatan #2 : Fungsi trainControl() menerima banyak argumen potensial. Anda dapat menemukan dokumentasi lengkap untuk fungsi ini di sini .
Sumber daya tambahan
Tutorial berikut memberikan informasi tambahan tentang model pelatihan:
Pengantar Validasi Silang K-Fold
Pengantar Validasi Silang Tinggalkan Satu Keluar
Apa yang dimaksud dengan overfitting dalam pembelajaran mesin?