Apakah kita memerlukan set tes saat menggunakan k-fold cross-validation?

21

Saya telah membaca tentang validasi k-fold, dan saya ingin memastikan saya mengerti cara kerjanya.

Saya tahu bahwa untuk metode holdout, data dibagi menjadi tiga set, dan set tes hanya digunakan di bagian paling akhir untuk menilai kinerja model, sedangkan set validasi digunakan untuk menyetel hyperparameters, dll.

Dalam metode k-fold, apakah kita masih memegang set tes untuk akhir, dan hanya menggunakan data yang tersisa untuk pelatihan dan penyetelan hyperparameter, yaitu kita membagi data yang tersisa menjadi k lipatan, dan kemudian menggunakan akurasi rata-rata setelah pelatihan dengan setiap lipatan (atau metrik kinerja apa pun yang kami pilih untuk menyetel hyperparameter kami)? Atau apakah kita tidak menggunakan set tes terpisah sama sekali, dan hanya membagi seluruh dataset menjadi lipatan k (jika demikian, saya menganggap bahwa kita hanya menganggap akurasi rata-rata pada lipatan k sebagai akurasi akhir kita)?

b_pcakes
sumber
3
Itu tergantung pada apa yang ingin Anda lakukan. Jika Anda ingin perkiraan kinerja umum, maka ya, model harus melakukan tes pada data yang belum pernah dilihat sebelumnya. Tapi itu tidak berarti itu harus menjadi iterasi ketidaksepakatan tunggal, Anda dapat menggunakan resampling untuk mencapai tujuan yang sama.
Firebug
2
... yang berarti bahwa setiap kali Anda menggunakan hasil "validasi" untuk optimisasi hyperparameter / penyetelan model, Anda memerlukan tahap validasi lain yang tidak bergantung pada penyetelan itu. Untuk kedua tahap, Anda dapat menggunakan misalnya validasi silang atau tahan (atau out-of-bootstrap atau ...). CV + CV disebut CV bersarang, tahan + tahan mengarah ke pengaturan 3 set yang Anda sebutkan
cbeleites mendukung Monica

Jawaban:

9

Dalam metode K-Fold, apakah kita masih memegang set tes untuk akhir, dan hanya menggunakan data yang tersisa untuk pelatihan dan penyetelan hyperparameter (mis. Kita membagi data yang tersisa menjadi k lipatan, dan kemudian menggunakan akurasi rata-rata setelah pelatihan dengan setiap lipatan (atau metrik kinerja apa pun yang kita pilih) untuk menyesuaikan hyperparameters kami)?

Iya nih. Sebagai aturan, set uji tidak boleh digunakan untuk mengubah model Anda (misalnya, hiperparameternya).

Namun, validasi silang kadang-kadang dapat digunakan untuk tujuan selain penyetelan hyperparameter, misalnya menentukan sejauh mana keretakan kereta / uji berdampak pada hasil.

Franck Dernoncourt
sumber
6
+1 tetapi Anda mungkin ingin menyebutkan validasi silang bersarang sebagai alternatif dari set uji validasi silang +.
Amoeba berkata Reinstate Monica
1
"Terkadang dapat digunakan untuk tujuan selain dari penyetelan hyperparameter". Misalnya, Anda dapat menggunakan validasi silang untuk tujuan validasi (= menguji kasus yang tidak diketahui untuk mengukur kesalahan generalisasi).
cbeleites mendukung Monica
3

Secara umum, ya. Pada dasarnya Anda, kita berbicara tentang pengorbanan bias-varians. Jika Anda menggunakan data untuk membangun model Anda (data pelatihan dan validasi) dan Anda mengulanginya di atas parameter yang berbeda dan Anda mencoba untuk memaksimalkan metrik kinerja rata-rata, model Anda mungkin tidak sebagus yang ditunjukkan.

Namun, terutama dalam kumpulan data kecil perpecahan tambahan mungkin menyebabkan set pelatihan yang lebih kecil dan menghasilkan model yang buruk.

gila
sumber
2
Ini bukan jawaban nyata untuk pertanyaan itu.
Michael R. Chernick
Bisakah Anda memperluas ini sehingga menambahkan sesuatu ke jawaban yang diterima dan komentar yang cukup rinci?
mdewey
1

Idealnya, validasi (untuk pemilihan model) dan tes akhir tidak boleh dicampur. Namun, jika nilai k Anda tinggi, atau itu dibiarkan-keluar, menggunakan hasil tes untuk memandu pemilihan model Anda tidak terlalu berbahaya. Dalam skenario ini, jika Anda menulis makalah akademis, jangan lakukan itu (kecuali jika Anda repot-repot menjelaskan) - artinya selalu memiliki set tes terpisah. Jika Anda membangun proyek praktis, boleh saja.

ymeng
sumber