Saya menemukan ini membingungkan ketika saya menggunakan toolbox jaringan saraf di Matlab.
Ini membagi set data mentah menjadi tiga bagian:
- perlengkapan latihan
- set validasi
- set tes
Saya perhatikan dalam banyak pelatihan atau algoritma pembelajaran, data sering dibagi menjadi 2 bagian, set pelatihan dan set tes.
Pertanyaan saya adalah:
- apa perbedaan antara set validasi dan set tes?
- Apakah set validasi benar-benar spesifik untuk jaringan saraf? Atau itu opsional.
- Untuk melangkah lebih jauh, apakah ada perbedaan antara validasi dan pengujian dalam konteks pembelajaran mesin?
machine-learning
validation
xiaohan2012
sumber
sumber
The training set is used to fit the models; the validation set is used to estimate prediction error for model selection; the test set is used for assessment of the generalization error of the final chosen model. Ideally, the test set should be kept in a “vault,” and be brought out only at the end of the data analysis.
Jawaban:
Biasanya untuk melakukan pembelajaran yang diawasi, Anda memerlukan dua jenis kumpulan data:
Dalam satu dataset ("standar emas" Anda), Anda memiliki data input bersama dengan output yang benar / diharapkan, dataset ini biasanya dipersiapkan dengan baik oleh manusia atau dengan mengumpulkan beberapa data dengan cara semi-otomatis. Tetapi penting bahwa Anda memiliki output yang diharapkan untuk setiap baris data di sini, karena Anda memerlukan ini untuk pembelajaran yang diawasi.
Data yang akan Anda gunakan untuk model Anda. Dalam banyak kasus ini adalah data di mana Anda tertarik untuk output dari model Anda dan dengan demikian Anda belum memiliki output "yang diharapkan" di sini.
Saat melakukan pembelajaran mesin, Anda melakukan hal berikut:
Fase validasi sering dibagi menjadi dua bagian :
Maka pemisahan menjadi 50/25/25.
Jika Anda tidak perlu memilih model yang sesuai dari beberapa pendekatan saingan, Anda bisa mempartisi ulang perangkat Anda yang pada dasarnya Anda hanya memiliki perangkat pelatihan dan perangkat uji, tanpa melakukan validasi model terlatih Anda. Saya pribadi mempartisi mereka 70/30 lalu.
Lihat juga pertanyaan ini .
sumber
Set pelatihan: set contoh yang digunakan untuk belajar: agar sesuai dengan parameter classifier Dalam kasus Multilayer Perceptron (MLP), kita akan menggunakan set pelatihan untuk menemukan bobot "optimal" dengan aturan back-prop
Kumpulan validasi: seperangkat contoh yang digunakan untuk menyesuaikan parameter classifier Dalam kasus MLP, kami akan menggunakan set validasi untuk menemukan jumlah unit tersembunyi "optimal" atau menentukan titik henti untuk algoritma propagasi balik
Kumpulan uji: seperangkat contoh yang hanya digunakan untuk menilai kinerja pengklasifikasi yang terlatih penuh. Dalam kasus MLP, kami akan menggunakan tes untuk memperkirakan tingkat kesalahan setelah kami memilih model akhir (ukuran MLP dan bobot aktual) Setelah menilai model terakhir pada set tes, ANDA TIDAK HARUS menyetel model lebih jauh!
Mengapa tes dan validasi terpisah ditetapkan? Perkiraan tingkat kesalahan dari model akhir pada data validasi akan menjadi bias (lebih kecil dari tingkat kesalahan sebenarnya) karena set validasi digunakan untuk memilih model akhir. Setelah menilai model akhir pada set tes, ANDA TIDAK HARUS menyesuaikan model apa pun lebih lanjut!
sumber: Pengantar Analisis Pola, Ricardo Gutierrez-OsunaTexas A&M University, Texas A&M University
sumber
Pengalaman 5 tahun saya dalam Ilmu Komputer mengajarkan saya bahwa tidak ada yang lebih baik daripada kesederhanaan.
Konsep Set Data Pelatihan / Validasi Lintas / Tes semudah ini. Saat Anda memiliki kumpulan data besar, disarankan untuk membaginya menjadi 3 bagian:
++ Kumpulan pelatihan (60% dari kumpulan data asli): Ini digunakan untuk membangun algoritme prediksi kami. Algoritma kami mencoba untuk menyesuaikan diri dengan kebiasaan set data pelatihan. Dalam fase ini kami biasanya membuat beberapa algoritma untuk membandingkan kinerja mereka selama Fase Lintas-Validasi.
++ Kumpulan Validasi Lintas (20% dari kumpulan data asli): Kumpulan data ini digunakan untuk membandingkan kinerja algoritma prediksi yang dibuat berdasarkan pada rangkaian pelatihan. Kami memilih algoritma yang memiliki kinerja terbaik.
++ Kumpulan uji (20% dari kumpulan data asli): Sekarang kami telah memilih algoritme prediksi pilihan kami, tetapi kami belum tahu bagaimana kinerjanya pada data dunia nyata yang sama sekali tidak terlihat. Jadi, kami menerapkan algoritme prediksi yang kami pilih pada set pengujian kami untuk melihat bagaimana kinerjanya sehingga kami dapat memiliki gagasan tentang kinerja algoritma kami pada data yang tidak terlihat.
Catatan:
-Sangat penting untuk diingat bahwa melewatkan fase pengujian tidak dianjurkan, karena algoritma yang berkinerja baik selama fase validasi silang tidak benar-benar berarti bahwa itu benar-benar yang terbaik, karena algoritma dibandingkan berdasarkan pada cross Set validasi dan keanehan dan kebisingannya ...
-Selama Fase Uji, tujuannya adalah untuk melihat bagaimana model akhir kita akan berhadapan di alam liar, jadi jika kinerjanya sangat buruk, kita harus mengulangi seluruh proses mulai dari Fase Pelatihan.
sumber
Pada setiap langkah di mana Anda diminta untuk mengambil keputusan (yaitu memilih satu opsi di antara beberapa opsi), Anda harus memiliki set / partisi tambahan untuk mengukur keakuratan pilihan Anda sehingga Anda tidak hanya memilih hasil yang paling disukai dari keacakan dan kesalahan ujung distribusi untuk pusat 1 . Kiri adalah pesimis. Yang benar adalah yang optimis. Pusat adalah pragmatis. Jadilah pragmatis.
Langkah 1) Pelatihan: Setiap jenis algoritma memiliki opsi parameter sendiri (jumlah lapisan dalam Jaringan Saraf Tiruan, jumlah pohon di Hutan Acak, dll). Untuk setiap algoritme Anda, Anda harus memilih satu opsi. Itu sebabnya Anda memiliki satu set pelatihan.
Langkah 2) Memvalidasi: Anda sekarang memiliki koleksi algoritma. Anda harus memilih satu algoritma. Itu sebabnya Anda memiliki set tes. Sebagian besar orang memilih algoritma yang berkinerja terbaik pada set validasi (dan itu tidak masalah). Tetapi, jika Anda tidak mengukur tingkat kesalahan algoritma berkinerja terbaik Anda pada set tes, dan hanya pergi dengan tingkat kesalahan pada set validasi, maka Anda telah secara salah mengira "skenario terbaik" untuk "skenario yang paling mungkin." Itu resep untuk bencana.
Langkah 3) Pengujian: Saya kira jika algoritma Anda tidak memiliki parameter apa pun maka Anda tidak perlu langkah ketiga. Dalam hal itu, langkah validasi Anda akan menjadi langkah pengujian Anda. Mungkin Matlab tidak meminta Anda untuk parameter atau Anda memilih untuk tidak menggunakannya dan itu adalah sumber kebingungan Anda.
1 Sering membantu untuk masuk ke setiap langkah dengan asumsi (hipotesis nol) bahwa semua opsi adalah sama (mis. Semua parameter adalah sama atau semua algoritma adalah sama), maka referensi saya untuk distribusi.
2 Gambar ini bukan milik saya. Saya telah mengambilnya dari situs ini: http://www.teamten.com/lawrence/writings/bell-curve.png
sumber
Itu tidak berarti bahwa Anda perlu membagi data dengan cara apa pun. Bootstrap dapat memberikan estimasi kesalahan kuadrat rata-rata yang lebih kecil dari akurasi prediksi menggunakan seluruh sampel untuk pengembangan dan pengujian model.
sumber
Tugas pembelajaran mesin yang khas dapat divisualisasikan sebagai loop bersarang berikut:
Biasanya loop luar dilakukan oleh manusia , pada set validasi , dan loop dalam oleh mesin , pada set pelatihan . Anda kemudian membutuhkan set tes ke-3 untuk menilai kinerja akhir model.
Dengan kata lain, set validasi adalah set pelatihan untuk manusia.
sumber
Satu cara untuk memikirkan ketiga perangkat ini adalah bahwa dua dari mereka (
training
danvalidation
) berasal dari masa lalu, sedangkantest
perangkat tersebut berasal dari "masa depan". Model harus dibangun dan disetel menggunakan data dari "masa lalu" (training
/validation
data), tetapi tidak pernahtest
data yang berasal dari "masa depan".Untuk memberikan contoh praktis, katakanlah kita sedang membangun model untuk memprediksi seberapa baik kinerja pemain baseball di masa depan. Kami akan menggunakan data dari 1899-2014 untuk membuat
test
danvalidation
mengatur. Setelah model dibangun dan dicari pada data tersebut, kami akan menggunakan data dari 2015 (sebenarnya di masa lalu!) Sebagai set uji, yang dari perspektif model muncul seperti data "masa depan" dan sama sekali tidak memengaruhi pembuatan model . (Jelas, secara teori, kami bisa menunggu data dari 2016 jika kami benar-benar mau!)Jelas saya menggunakan tanda kutip di mana-mana, karena urutan temporal sebenarnya dari data mungkin tidak sesuai dengan masa depan yang sebenarnya (menurut definisi semua generasi data mungkin terjadi di masa lalu yang sebenarnya). Pada kenyataannya,
test
himpunan mungkin hanya data dari periode waktu yang sama dengantraining
/validation
set, yang Anda "tahan". Dengan cara ini, tidak ada pengaruh pada penyetelan model, tetapi mereka yang menahan data sebenarnya tidak datang dari masa depan.sumber
test
data tidak boleh menjadi bagian dari proses pelatihan: dan jika kita memperlakukannya sebagai data "masa depan" maka itu menjadi kesalahan yang mustahil untuk dibuat.Sebagian besar algoritma penambangan data yang diawasi mengikuti tiga langkah ini:
sumber
Beberapa orang bingung mengapa kami menggunakan set validasi, jadi saya akan memberikan penjelasan yang sederhana dan intuitif tentang apa yang akan terjadi jika Anda tidak menggunakan dataset validasi.
Jika Anda tidak menggunakan set validasi, Anda harus memilih hiperparameter dan memutuskan kapan harus berhenti pelatihan berdasarkan kinerja model pada dataset pengujian. Jika Anda memutuskan kapan harus menghentikan pelatihan berdasarkan kinerja model pada dataset pengujian, Anda bisa menghentikan pelatihan ketika model tersebut bekerja dengan baik pada dataset pengujian. Kemudian ketika Anda melaporkan hasil Anda, Anda melaporkan keakuratan pada dataset pengujian. Masalah dengan ini adalah bahwa Anda bisa mengatakan model Anda bekerja dengan sangat baik padahal sebenarnya itu hanya variasi acak yang menyebabkannya melakukan lebih baik pada set pengujian saja.
Jika Anda menggunakan set validasi sebagai gantinya untuk memutuskan kapan harus berhenti pelatihan, keakuratan model pada set pengujian lebih merupakan refleksi yang tidak bias dari seberapa baik kinerjanya pada tugas secara umum, dan itu menunjukkan bahwa Anda tidak mengoptimalkan model hanya untuk tampil baik di set pengujian.
sumber
Saya ingin menambahkan jawaban lain yang sangat bagus di sini dengan menunjukkan pendekatan yang relatif baru dalam pembelajaran mesin yang disebut "privasi diferensial" (lihat makalah dari Dwork; the Win Vector Blog untuk lebih lanjut). Idenya memungkinkan untuk benar-benar menggunakan kembali set pengujian tanpa mengorbankan kinerja model akhir. Dalam pengaturan tipikal, set tes hanya digunakan untuk memperkirakan kinerja akhir; idealnya seseorang bahkan tidak diizinkan untuk melihatnya.
Seperti yang dijelaskan dengan baik di blog Win Vector ini (lihat entri lain juga), adalah mungkin untuk "menggunakan" set tes tanpa bias kinerja model. Ini dilakukan dengan menggunakan prosedur khusus yang disebut "privasi diferensial". Pelajar tidak akan memiliki akses langsung ke set tes.
sumber
Ide saya adalah bahwa opsi-opsi dalam kotak peralatan jaringan saraf adalah untuk menghindari overfitting. Dalam situasi ini bobot ditentukan hanya untuk data pelatihan dan tidak menunjukkan tren global. Dengan memiliki satu set validasi, iterasi dapat diadaptasi ke mana penurunan kesalahan data pelatihan menyebabkan penurunan data validasi dan peningkatan kesalahan data validasi; seiring dengan penurunan kesalahan data pelatihan, ini menunjukkan fenomena overfitting.
sumber