Sangat lucu bahwa jawaban yang paling banyak dipilih tidak benar-benar menjawab pertanyaan :) jadi saya pikir akan lebih baik untuk mendukung ini dengan sedikit lebih banyak teori - kebanyakan diambil dari "Penambangan Data: Alat dan Teknik Pembelajaran Mesin Praktis" dan Tom Mitchell "Pembelajaran Mesin" .
Pengantar.
Jadi kami memiliki classifier dan dataset terbatas, dan sejumlah data tertentu harus dimasukkan ke dalam set pelatihan dan sisanya digunakan untuk pengujian (jika perlu, subset ketiga digunakan untuk validasi).
Dilema yang kita hadapi adalah ini: untuk menemukan klasifikasi yang baik, "himpunan bagian pelatihan" harus sebesar mungkin, tetapi untuk mendapatkan perkiraan kesalahan yang baik "himpunan bagian tes" harus sebesar mungkin - tetapi kedua himpunan bagian diambil dari kolam yang sama.
Jelas bahwa set pelatihan harus lebih besar dari set tes - yaitu, split tidak boleh 1: 1 (tujuan utama adalah untuk melatih , bukan untuk menguji ) - tetapi tidak jelas di mana split seharusnya.
Prosedur penahanan.
Prosedur pemisahan "superset" menjadi himpunan bagian disebut metode holdout . Perhatikan bahwa Anda mungkin dengan mudah mendapatkan ketidakberuntungan dan contoh-contoh kelas tertentu bisa hilang (atau terlalu banyak disajikan) di salah satu himpunan bagian, yang dapat diatasi melalui
- pengambilan sampel acak, yang menjamin bahwa setiap kelas diwakili dengan benar di semua himpunan bagian data - prosedur ini disebut stratifikasi ketidaksepakatan
- pengambilan sampel acak dengan proses pelatihan-pengujian-validasi berulang di atasnya - yang disebut pengulangan berstrata berulang
Dalam prosedur penahanan tunggal (tidak berulang), Anda dapat mempertimbangkan bertukar peran data pengujian dan pelatihan dan rata-rata dua hasil, tetapi ini hanya masuk akal dengan pemisahan 1: 1 antara pelatihan dan set tes yang tidak dapat diterima (lihat Pendahuluan ). Tapi ini memberikan ide, dan metode yang ditingkatkan (disebut cross-validation digunakan sebagai gantinya) - lihat di bawah!
Validasi silang.
Dalam validasi silang, Anda memutuskan sejumlah lipatan (partisi data). Jika kita menggunakan tiga lipatan, data dipecah menjadi tiga partisi dan
- kami menggunakan 2/3 untuk pelatihan dan 1/3 untuk pengujian
- dan ulangi prosedur tiga kali sehingga, pada akhirnya, setiap instance telah digunakan tepat satu kali untuk pengujian.
Ini disebut validasi silang tiga kali lipat , dan jika stratifikasi diadopsi juga (yang sering benar) itu disebut stratifikasi berlipat tiga silang validasi .
Tapi, lihatlah, cara standar bukanlah pemecahan 2/3: 1/3. Mengutip "Penambangan Data: Alat dan Teknik Pembelajaran Mesin Praktis" ,
Cara standar [...] adalah dengan menggunakan validasi silang 10 kali lipat berstrata. Data dibagi secara acak menjadi 10 bagian di mana kelas diwakili dalam kira-kira proporsi yang sama seperti dalam dataset lengkap. Masing-masing bagian diadakan secara bergantian dan skema pembelajaran dilatih untuk sembilan per sepuluh yang tersisa; maka tingkat kesalahannya dihitung pada set holdout. Dengan demikian prosedur pembelajaran dilaksanakan sebanyak 10 kali pada set pelatihan yang berbeda (masing-masing memiliki banyak kesamaan). Akhirnya, 10 estimasi kesalahan dirata-rata untuk menghasilkan estimasi kesalahan keseluruhan.
Kenapa 10? Karena ".. Tes ekstensif pada sejumlah dataset, dengan teknik pembelajaran yang berbeda, telah menunjukkan bahwa 10 adalah jumlah lipatan yang tepat untuk mendapatkan estimasi kesalahan terbaik, dan ada juga beberapa bukti teoritis yang mendukung ini .." Saya belum dapat menemukan tes dan bukti teoretis mana yang dimaksudkan, tetapi yang ini tampaknya merupakan awal yang baik untuk menggali lebih banyak - jika Anda mau.
Mereka pada dasarnya hanya mengatakan
Meskipun argumen ini sama sekali tidak konklusif, dan perdebatan terus mengamuk dalam pembelajaran mesin dan data mining circle tentang apa skema terbaik untuk evaluasi, validasi silang 10 kali lipat telah menjadi metode standar dalam istilah praktis. [...] Selain itu, tidak ada keajaiban tentang angka pasti 10: 5 kali lipat atau 20 kali lipat cross-validasi hampir sama baiknya.
Bootstrap, dan - akhirnya! - jawaban untuk pertanyaan awal.
Tapi kami belum sampai pada jawaban, mengapa 2/3: 1/3 sering direkomendasikan. Menurut saya itu diwarisi dari metode bootstrap .
Ini didasarkan pada pengambilan sampel dengan penggantian. Sebelumnya, kami menempatkan sampel dari "grand set" persis ke salah satu himpunan bagian. Bootstraping berbeda dan sampel dapat dengan mudah muncul di kedua pelatihan dan set tes.
Mari kita lihat satu skenario tertentu di mana kita mengambil dataset D1 dari n instance dan sampelnya n kali dengan penggantian, untuk mendapatkan dataset D2 lain dari n instance.
Sekarang perhatikan dengan sempit.
Karena beberapa elemen dalam D2 akan (hampir pasti) diulang, harus ada beberapa instance dalam dataset asli yang belum dipilih: kita akan menggunakan ini sebagai instance uji.
Apa kemungkinan bahwa contoh tertentu tidak diambil untuk D2 ? Probabilitas dijemput pada setiap take adalah 1 / n jadi sebaliknya adalah (1 - 1 / n) .
Ketika kita mengalikan probabilitas ini bersama-sama, itu adalah (1 - 1 / n) ^ n yaitu e ^ -1 yaitu sekitar 0,3. Ini berarti set tes kami sekitar 1/3 dan set pelatihan sekitar 2/3.
Saya kira ini adalah alasan mengapa disarankan untuk menggunakan 1/3: 2/3 split: rasio ini diambil dari metode estimasi bootstrap.
Membungkusnya.
Saya ingin mengakhiri dengan kutipan dari buku data mining (yang saya tidak bisa membuktikan tetapi menganggap benar) di mana mereka umumnya merekomendasikan untuk lebih memilih 10 kali lipat cross-validasi:
Prosedur bootstrap mungkin merupakan cara terbaik untuk memperkirakan kesalahan untuk dataset yang sangat kecil. Namun, seperti validasi silang satu-keluar, ini memiliki kelemahan yang dapat diilustrasikan dengan mempertimbangkan situasi khusus, buatan [...] dataset acak lengkap dengan dua kelas. Tingkat kesalahan sebenarnya adalah 50% untuk setiap aturan prediksi. Tetapi skema yang hafal set pelatihan akan memberikan skor penggantian sempurna 100% sehingga contoh turunan = 0, dan bootstrap 0,632 akan mencampur ini dengan bobot 0,368 hingga memberikan tingkat kesalahan keseluruhan hanya 31,6% (0,632 ¥ 50% + 0,368 ¥ 0%), yang optimistis menyesatkan.