Saya bertanya-tanya apakah ada yang tahu tentang ringkasan teknik validasi silang dengan diskusi tentang perbedaan antara mereka dan panduan tentang kapan harus menggunakan masing-masing. Wikipedia memiliki daftar teknik yang paling umum, tetapi saya ingin tahu apakah ada teknik lain, dan jika ada taksonomi untuk mereka.
Sebagai contoh, saya hanya bertemu dengan perpustakaan yang memungkinkan saya untuk memilih salah satu dari strategi berikut:
- Tahan
- Bootstrap
- K Validasi silang
- Tinggalkan satu
- Validasi Lintas Stratified
- Validasi Lintas Stratifikasi Seimbang
- Bertahan Bertahan
- Bootstrap bertingkat
dan saya mencoba untuk memahami apa artinya bertingkat dan seimbang dalam bootstrap, bertahan atau CV.
Kami juga dapat mengubah pos ini menjadi wiki komunitas jika orang mau, dan mengumpulkan diskusi tentang teknik atau taksonomi di sini.
cross-validation
user815423426
sumber
sumber
Jawaban:
Anda dapat menambahkan ke daftar itu:
Saya benar-benar tidak punya banyak nasihat sejauh bagaimana menggunakan teknik ini atau kapan menggunakannya. Anda dapat menggunakan paket tanda sisipan di R untuk membandingkan CV, Boot, Boot632, cuti-keluar-keluar, cuti-keluar-kelompok, dan validasi silang out-of-bag.
Secara umum, saya biasanya menggunakan boostrap karena kurang intensif secara komputasi daripada CV k-fold berulang, atau CV satu-keluar-keluar. Boot632 adalah algoritme pilihan saya karena tidak memerlukan lebih banyak perhitungan daripada bootstrap, dan telah terbukti lebih baik daripada cross-validation atau bootstap dasar dalam situasi tertentu.
Saya hampir selalu menggunakan perkiraan kesalahan out-of-bag untuk hutan acak, daripada validasi silang. Kesalahan out-of-bag umumnya tidak bias, dan hutan acak membutuhkan waktu yang cukup lama untuk dihitung.
sumber
K-fold cross-validation (CV) secara acak memecah data Anda menjadi partisi K, dan Anda pada gilirannya memegang salah satu bagian K tersebut sebagai kasus uji, dan menyatukan bagian K-1 lainnya sebagai data pelatihan Anda. Leave One Out (LOO) adalah kasus khusus di mana Anda mengambil item data N Anda dan melakukan N-lipat CV. Dalam beberapa hal, Tahan adalah kasus khusus lain, di mana Anda hanya memilih salah satu lipatan K Anda sebagai tes dan tidak memutar semua lipatan K.
Sejauh yang saya tahu, CV 10 kali lipat adalah de rigueur, karena menggunakan data Anda secara efisien dan juga membantu menghindari pilihan partisi yang tidak beruntung. Hold Out tidak memanfaatkan data Anda secara efisien, dan LOO tidak sekuat (atau sesuatu seperti itu), tetapi 10-ish-fold tepat.
Jika Anda tahu bahwa data Anda mengandung lebih dari satu kategori, dan satu atau lebih kategori jauh lebih kecil daripada yang lain, beberapa partisi K acak Anda mungkin bahkan tidak mengandung kategori kecil sama sekali, yang akan menjadi buruk. Untuk memastikan setiap partisi cukup representatif, Anda menggunakan stratifikasi: pisahkan data Anda ke dalam kategori dan kemudian buat partisi acak dengan memilih secara acak dan proporsional dari setiap kategori.
Semua variasi ini pada K-fold CV pilih dari data Anda tanpa penggantian. Bootstrap memilih data dengan penggantian, sehingga datum yang sama dapat dimasukkan beberapa kali dan beberapa data mungkin tidak disertakan sama sekali. (Setiap "partisi" juga akan memiliki item N, tidak seperti K-fold, di mana setiap partisi akan memiliki item N / K.)
(Saya harus mengakui bahwa saya tidak tahu persis bagaimana bootstrap akan digunakan dalam CV. Namun, prinsip pengujian dan CV adalah memastikan Anda tidak menguji data yang Anda latih, sehingga Anda mendapatkan ide yang lebih realistis tentang bagaimana teknik + koefisien Anda dapat bekerja di dunia nyata.)
EDIT: Mengganti "Tahan tidak efisien" dengan "Tahan tidak membuat penggunaan data Anda efisien" untuk membantu memperjelas, sesuai komentar.
sumber
Saya menemukan salah satu referensi yang ditautkan dalam artikel Wikipedia cukup berguna
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.48.529&rep=rep1&type=pdf
"Studi validasi silang dan bootstrap untuk estimasi akurasi dan pemilihan model", Ron Kohavi, IJCAI95
Ini berisi perbandingan empiris untuk subset teknik CV. Versi tl; dr pada dasarnya adalah "gunakan CV 10 kali lipat".
sumber
Sayangnya masalah itu lebih sulit daripada mendapat kredit. Setidaknya ada 2 kegunaan utama cross-validation: memilih model, dan mengevaluasi kinerja model.
Secara kasar, jika Anda menggunakan varian CV yang membagi data menggunakan rasio train-to-test yang tinggi, ini bisa lebih baik untuk evaluasi. Menggunakan set pelatihan yang lebih besar akan lebih akurat meniru kinerja fit model pada dataset lengkap.
Tetapi rasio kereta-ke-tes yang tinggi bisa lebih buruk untuk pemilihan. Bayangkan benar-benar ada model "terbaik" yang Anda "harus" pilih, tetapi dataset Anda cukup besar. Kemudian, model terlalu besar yang mengenakan sedikit akan memiliki kinerja CV yang hampir sama dengan model "terbaik" (karena Anda akan berhasil memperkirakan parameter palsu mereka menjadi diabaikan). Keacakan dalam data dan prosedur pemisahan / CV akan sering menyebabkan Anda memilih model overfitting alih-alih model yang benar-benar "terbaik".
Lihat Shao (1993), "Pemilihan Model Linier dengan Validasi Lintas" untuk teori asimptotik yang lebih tua dalam kasus regresi linier. Yang (2007), "Konsistensi Validasi Lintas untuk Membandingkan Prosedur Regresi" dan Yang (2006), "Membandingkan Metode Pembelajaran untuk Klasifikasi" memberikan teori asimptotik untuk masalah regresi dan klasifikasi yang lebih umum. Tetapi saran sampel terbatas yang ketat sulit didapat.
sumber