Mengapa menggunakan set validasi dan set tes?

17

Pertimbangkan jaringan saraf:

Untuk set data tertentu, kami membaginya ke dalam pelatihan, validasi, dan set tes. Misalkan kita melakukannya dalam rasio klasik 60:20:20, maka kita mencegah overfitting dengan memvalidasi jaringan dengan memeriksa pada set validasi. Lalu apa perlunya mengujinya pada set tes untuk memeriksa kinerjanya?

Tidakkah kesalahan pada set tes agak sama dengan set validasi untuk jaringan itu adalah data yang tidak terlihat seperti set validasi dan juga keduanya sama jumlahnya?

Alih-alih, tidak bisakah kita meningkatkan set pelatihan dengan menggabungkan set tes sehingga kita memiliki lebih banyak data pelatihan dan jaringan melatih lebih baik dan kemudian menggunakan set validasi untuk mencegah overfitting? Kenapa kita tidak melakukan ini?

pengguna1825567
sumber
4
Anda ingin itu sama tetapi Anda tidak bisa memastikan karena Anda menyentuhnya untuk optimasi hyperparameter dan berhenti lebih awal, jadi Anda memerlukan tes perawan.
Emre
@Emre Tapi bobot akan disesuaikan berdasarkan set pelatihan dan bukan pada set validasi, sehingga hasil pada tes dan set validasi seharusnya tidak menjadi cara yang berbeda.
user1825567
Tidak, mereka tidak (bisa disesuaikan sesuai dengan set pelatihan). Itu untuk parameter reguler.
Emre

Jawaban:

22

Mari kita asumsikan bahwa Anda sedang melatih model yang kinerjanya tergantung pada serangkaian hiperparameter. Dalam kasus jaringan saraf, parameter ini mungkin misalnya tingkat pembelajaran atau jumlah iterasi pelatihan.

Diberi pilihan nilai hiperparameter, Anda menggunakan set pelatihan untuk melatih model. Tapi, bagaimana Anda mengatur nilai untuk hyperparameters? Untuk itulah set validasi itu. Anda dapat menggunakannya untuk mengevaluasi kinerja model Anda untuk kombinasi nilai hiperparameter yang berbeda (misalnya melalui proses pencarian kotak) dan mempertahankan model yang paling terlatih.

Tetapi, bagaimana model yang Anda pilih dibandingkan dengan model lain yang berbeda? Apakah jaringan saraf Anda berkinerja lebih baik daripada, katakanlah, hutan acak dilatih dengan kombinasi yang sama dari data pelatihan / tes? Anda tidak dapat membandingkan berdasarkan set validasi, karena set validasi adalah bagian dari pemasangan model Anda. Anda menggunakannya untuk memilih nilai hyperparameter!

Set tes memungkinkan Anda untuk membandingkan model yang berbeda dengan cara yang tidak bias, dengan mendasarkan perbandingan Anda pada data yang tidak digunakan di bagian mana pun dari proses pemilihan pelatihan / hyperparameter Anda.

Pablo Suau
sumber
11

Perangkat uji dan perangkat validasi silang memiliki tujuan yang berbeda. Jika Anda menjatuhkan salah satunya, Anda kehilangan manfaatnya:

  • Set validasi silang digunakan untuk membantu mendeteksi pemasangan yang berlebihan dan untuk membantu dalam pencarian hyper-parameter.

  • Set tes digunakan untuk mengukur kinerja model.

Anda tidak dapat menggunakan set validasi silang untuk mengukur kinerja model Anda secara akurat, karena Anda akan dengan sengaja menyetel hasil Anda untuk mendapatkan metrik terbaik, mungkin ratusan variasi parameter Anda. Oleh karena itu hasil validasi silang cenderung terlalu optimis.

Untuk alasan yang sama, Anda tidak dapat menghapus set validasi silang dan menggunakan set tes untuk memilih parameter hiper, karena Anda cukup banyak dijamin akan melebih-lebihkan seberapa baik model Anda. Di dunia ideal Anda menggunakan set tes sekali saja, atau menggunakannya dalam mode "netral" untuk membandingkan berbagai eksperimen.

Jika Anda memvalidasi silang, menemukan model terbaik, lalu menambahkan data tes untuk dilatih, mungkin (dan dalam beberapa situasi mungkin sangat mungkin) model Anda akan ditingkatkan. Namun, Anda tidak memiliki cara untuk memastikan apakah itu benar-benar terjadi, dan bahkan jika itu terjadi, Anda tidak memiliki perkiraan yang tidak bias tentang kinerja baru tersebut.

Dari menyaksikan banyak kompetisi Kaggle, pengalaman saya adalah bahwa menyetel ujian yang ditetapkan dengan menggunakannya secara berlebihan adalah hal yang nyata, dan itu memengaruhi kompetisi tersebut secara besar-besaran. Sering ada sekelompok pesaing yang telah naik papan peringkat publik dan memilih model terbaik mereka dalam ujian (papan peringkat publik secara efektif merupakan set tes), sementara tidak begitu teliti dalam validasi silang mereka. . . para pesaing ini menjatuhkan papan peringkat ketika set tes baru diperkenalkan pada akhirnya.

Salah satu pendekatan yang masuk akal adalah menggunakan kembali (latih + cv) data untuk melatih kembali menggunakan hyper-params yang Anda temukan, sebelum pengujian. Dengan begitu Anda bisa melatih lebih banyak data, dan Anda masih mendapatkan ukuran kinerja independen pada akhirnya.

Jika Anda ingin mendapatkan lebih dari validasi silang, pendekatan yang biasa adalah k-fold cross validation . Trik umum dalam kompetisi Kaggle adalah menggunakan validasi k-fold cross, dan alih-alih menggabungkan kembali data ke dalam set pelatihan yang lebih besar (train + cv), untuk mengabadikan atau menumpuk hasil cv ke dalam meta-model.

Terakhir, selalu periksa apakah pemisahan Anda untuk validasi dan pengujian kuat terhadap kemungkinan korelasi dalam kumpulan data Anda.

Neil Slater
sumber
1
apa yang Anda maksud dengan "kuat terhadap kemungkinan korelasi dalam set data Anda"?
user6903745