Apakah ada aturan praktis tentang cara terbaik membagi data ke dalam set pelatihan dan validasi? Apakah pemisahan 50/50 bahkan disarankan? Atau adakah keuntungan yang jelas dari memiliki lebih banyak data pelatihan relatif terhadap data validasi (atau sebaliknya)? Atau apakah pilihan ini tergantung pada aplikasi?
Saya sebagian besar menggunakan 80% / 20% data pelatihan dan validasi, masing-masing, tetapi saya memilih divisi ini tanpa alasan prinsip. Dapatkah seseorang yang lebih berpengalaman dalam pembelajaran mesin menasihati saya?
machine-learning
perampokan
sumber
sumber
Jawaban:
Ada dua masalah yang bersaing: dengan lebih sedikit data pelatihan, estimasi parameter Anda memiliki varian yang lebih besar. Dengan lebih sedikit data pengujian, statistik kinerja Anda akan memiliki varian yang lebih besar. Secara umum Anda harus peduli dengan membagi data sedemikian rupa sehingga tidak ada varians yang terlalu tinggi, yang lebih berkaitan dengan jumlah absolut contoh di setiap kategori daripada persentase.
Jika Anda memiliki total 100 contoh, Anda mungkin terjebak dengan validasi silang karena tidak ada pemisahan tunggal yang akan memberi Anda varians yang memuaskan dalam perkiraan Anda. Jika Anda memiliki 100.000 instance, tidak masalah apakah Anda memilih split 80:20 atau 90:10 (memang Anda mungkin memilih untuk menggunakan lebih sedikit data pelatihan jika metode Anda sangat intensif secara komputasi).
Dengan asumsi Anda memiliki data yang cukup untuk melakukan data uji bertahan yang tepat (daripada validasi silang), berikut ini adalah cara instruktif untuk menangani varian:
sumber
Anda akan terkejut mengetahui bahwa 80/20 adalah rasio yang cukup umum terjadi, sering disebut sebagai prinsip Pareto . Ini biasanya taruhan yang aman jika Anda menggunakan rasio itu.
Namun, tergantung pada metodologi pelatihan / validasi yang Anda gunakan, rasionya mungkin berubah. Misalnya: jika Anda menggunakan validasi silang 10 kali lipat, maka Anda akan berakhir dengan set validasi 10% di setiap lipatan.
Ada beberapa penelitian tentang berapa rasio yang tepat antara set pelatihan dan set validasi :
Dalam kesimpulannya mereka menentukan formula:
Yang mereka maksud dengan kompleksitas adalah:
Mengambil aturan pertama (set validasi harus berbanding terbalik dengan akar kuadrat dari jumlah parameter yang dapat disesuaikan gratis), Anda dapat menyimpulkan bahwa jika Anda memiliki 32 parameter yang dapat disesuaikan, akar kuadrat dari 32 adalah ~ 5,65, fraksi harus 1 / 5.65 atau 0.177 (v / t). Sekitar 17,7% harus dicadangkan untuk validasi dan 82,3% untuk pelatihan.
sumber
Tahun lalu, saya mengikuti kursus pembelajaran mesin online Prof: Andrew Ng. Rekomendasinya adalah:
Pelatihan : 60%
Validasi silang : 20%
Pengujian : 20%
sumber
in the modern big data era, where, for example, you might have a million examples in total, then the trend is that your dev (cross validation) and test sets have been becoming a much smaller percentage of the total.
Dia menyarankan itu bisa 99.5: 0.25: 0.25.Anda harus memikirkan satu hal lagi.
Jika Anda memiliki dataset yang sangat besar, seperti 1.000.000 contoh, membagi 80/10/10 mungkin tidak perlu, karena 10% = 100.000 contoh tidak perlu untuk memberi tahu bahwa model berfungsi dengan baik.
Mungkin 99 / 0,5 / 0,5 sudah cukup, karena 5.000 contoh dapat mewakili sebagian besar varians dalam data dan Anda dapat dengan mudah mengatakan bahwa model berfungsi baik berdasarkan 5.000 contoh ini dalam pengujian dan pengembangan.
sumber
Misalkan Anda memiliki lebih sedikit data, saya sarankan untuk mencoba 70%, 80% dan 90% dan tes yang memberikan hasil yang lebih baik. Dalam hal 90% ada kemungkinan bahwa untuk tes 10% Anda mendapatkan akurasi yang buruk.
sumber
Mungkin 63,2% / 36,8% adalah pilihan yang masuk akal. Alasannya adalah bahwa jika Anda memiliki ukuran sampel total n dan ingin mengambil sampel secara acak dengan penggantian (alias sampel ulang, seperti dalam bootstrap statistik) n kasus di luar n awal , kemungkinan setiap kasus dipilih di sampel ulang akan menjadi sekitar 0,632, asalkan n tidak terlalu kecil, seperti yang dijelaskan di sini: https://stats.stackexchange.com/a/88993/16263
Untuk sampel n = 250, probabilitas kasus individual yang dipilih untuk sampel ulang menjadi 4 digit adalah 0,6329. Untuk sampel n = 20000, probabilitasnya adalah 0,6321.
sumber
Itu semua tergantung pada data yang ada. Jika Anda memiliki jumlah data yang cukup maka 80/20 adalah pilihan yang baik seperti yang disebutkan di atas. Tetapi jika Anda tidak Validasi Silang dengan split 50/50 mungkin membantu Anda lebih banyak dan mencegah Anda membuat model yang terlalu pas dengan data pelatihan Anda.
sumber