Validasi silang: K-fold vs Sub-sampling acak berulang

10

Saya ingin tahu jenis model cross-validasi mana yang akan dipilih untuk masalah klasifikasi: K-fold atau sub-sampling acak (bootstrap sampling)?

Tebakan terbaik saya adalah menggunakan 2/3 dari kumpulan data (yaitu ~ 1000 item) untuk pelatihan dan 1/3 untuk validasi.

Dalam hal ini K-fold hanya memberikan tiga iterasi (lipatan), yang tidak cukup untuk melihat kesalahan rata-rata yang stabil.

Di sisi lain saya tidak suka fitur pengambilan sampel acak: bahwa beberapa item tidak akan pernah dipilih untuk pelatihan / validasi, dan beberapa akan digunakan lebih dari satu kali.

Algoritma klasifikasi yang digunakan: regresi hutan & logistik acak.

IharS
sumber
1
Saya kira pertanyaan sebelumnya adalah: tidakkah pemilihan ini tergantung pada algoritma (terutama perilakunya) yang dievaluasi?
Rubens
1
@ Ruben, saya telah memperbarui pertanyaan: Saya
tertarik dengan

Jawaban:

7

Jika Anda memiliki jumlah sampel yang memadai dan ingin menggunakan semua data, maka validasi silang k-fold adalah caranya. Memiliki ~ 1.500 sepertinya banyak tetapi apakah cukup untuk validasi silang k-fold juga tergantung pada dimensi data (jumlah atribut dan jumlah nilai atribut). Misalnya, jika setiap pengamatan memiliki 100 atribut, maka 1.500 pengamatan rendah.

Kelemahan potensial lain untuk validasi silang k-fold adalah kemungkinan outlier ekstrem tunggal yang mengacaukan hasilnya. Sebagai contoh, jika Anda memiliki satu pencilan ekstrim yang dapat sangat bias mengklasifikasikan Anda, maka dalam validasi silang 10 kali lipat, 9 dari 10 partisi akan terpengaruh (meskipun untuk hutan acak, saya tidak berpikir Anda akan memiliki masalah itu). ).

Subsampling acak (mis., Bootstrap sampling) lebih disukai ketika Anda undersampled atau ketika Anda memiliki situasi di atas, di mana Anda tidak ingin setiap pengamatan muncul dalam lipatan k-1.

bogatron
sumber
4

Saya kira Anda mengatakan bahwa Anda ingin menggunakan validasi silang 3 kali lipat karena Anda tahu sesuatu tentang data Anda (bahwa menggunakan k = 10 akan menyebabkan overfitting? Saya ingin tahu alasan Anda). Saya tidak yakin Anda tahu ini, jika tidak maka Anda bisa menggunakan k yang lebih besar.

Jika Anda masih berpikir bahwa Anda tidak dapat menggunakan validasi silang k-fold standar, maka Anda dapat memodifikasi sedikit algoritme: katakan bahwa Anda membagi data menjadi 30 lipatan dan setiap kali menggunakan 20 untuk pelatihan dan 10 untuk evaluasi (dan kemudian bergeser ke atas satu lipat dan gunakan yang pertama dan yang terakhir sebagai evaluasi dan sisanya sebagai pelatihan). Ini berarti Anda dapat menggunakan semua data Anda.

Ketika saya menggunakan k-fold cross-validation, saya biasanya menjalankan proses beberapa kali dengan pengacakan yang berbeda untuk memastikan bahwa saya memiliki data yang cukup, jika Anda tidak, Anda akan melihat kinerja yang berbeda tergantung pada pengacakan. Dalam kasus seperti itu saya akan menyarankan pengambilan sampel. Triknya adalah cukup sering melakukannya.

Rhand
sumber