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?

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *