Saya telah menggunakan ganda lintas validasi beberapa kali sekarang untuk mengevaluasi kinerja beberapa algoritma belajar, tapi aku selalu bingung bagaimana aku harus memilih nilai .
Saya sering melihat dan menggunakan nilai , tetapi ini tampaknya benar-benar sewenang-wenang bagi saya, dan sekarang saya hanya menggunakan dengan kebiasaan daripada memikirkannya. Bagi saya tampaknya Anda mendapatkan rincian yang lebih baik karena Anda meningkatkan nilai , jadi idealnya Anda harus membuat Anda sangat besar, tetapi ada juga risiko yang bias.
Saya ingin tahu apa nilai harus bergantung pada, dan bagaimana saya harus berpikir tentang ini ketika saya mengevaluasi algoritma saya. Apakah itu mengubah sesuatu jika saya menggunakan versi stratifikasi validasi silang atau tidak?
sumber
Jawaban:
Pilihan agak arbitrer. Inilah cara saya memutuskan k :k = 10 k
pertama-tama, untuk menurunkan varian hasil CV, Anda dapat dan harus mengulangi / mengulangi CV dengan pemisahan acak baru.k
Ini membuat argumen => lebih banyak waktu komputasi sebagian besar tidak relevan, karena Anda ingin menghitung banyak model. Saya cenderung berpikir terutama tentang jumlah total model yang dihitung (dalam analogi dengan bootstrap). Jadi saya dapat memutuskan untuk CV 100 x 10 kali lipat atau CV 200 x 5 kali lipat.
@ogrisel sudah menjelaskan bahwa biasanya besar berarti lebih sedikit bias (pesimistis). (Beberapa pengecualian dikenal khususnya untuk k = n , yaitu biarkan-satu-keluar).k k = n
Jika memungkinkan, saya menggunakan yang merupakan pembagi ukuran sampel, atau ukuran kelompok dalam sampel yang harus bertingkat.k
Terlalu besar berarti hanya jumlah kombinasi sampel yang rendah yang dimungkinkan, sehingga membatasi jumlah iterasi yang berbeda.k
Pikiran ini memiliki bobot lebih dengan ukuran sampel kecil. Dengan lebih banyak sampel, tidak masalah. Kemungkinan jumlah kombinasi segera menjadi cukup besar sehingga (katakanlah) 100 iterasi CV 10 kali lipat tidak berisiko besar menjadi duplikat. Selain itu, lebih banyak sampel pelatihan biasanya berarti Anda berada pada bagian yang lebih rata dari kurva pembelajaran, sehingga perbedaan antara model pengganti dan model "nyata" yang dilatih pada semua sampel menjadi dapat diabaikan.nk n
sumber
Lebih besar K berarti lebih sedikit bias terhadap perkiraan kesalahan yang sebenarnya diharapkan (karena lipatan pelatihan akan lebih dekat dengan total dataset) tetapi varians yang lebih tinggi dan waktu berjalan yang lebih tinggi (karena Anda semakin mendekati kasus batas: CV Leave-One-Out).
Jika kemiringan kurva pembelajaran cukup datar di training_size = 90% dari total dataset, maka bias dapat diabaikan dan K = 10 masuk akal.
K yang lebih tinggi juga memberi Anda lebih banyak sampel untuk memperkirakan interval kepercayaan yang lebih akurat pada perkiraan Anda (menggunakan kesalahan standar parametrik dengan asumsi normalitas distribusi kesalahan pengujian CV atau bootstrap non parametrik CI yang hanya membuat asumsi id yang sebenarnya tidak terlalu benar. karena lipatan CV tidak independen satu sama lain).
Sunting: meremehkan => melebih-lebihkan kesalahan yang sebenarnya diharapkan
Sunting: bagian dari balasan ini tentang varian yang lebih tinggi untuk K atau LOOCV besar mungkin salah (tidak selalu benar). Lebih detail dengan simulasi dalam jawaban ini: Bias dan varians dalam validasi lintas-keluar-keluar vs K-lipat (terima kasih Xavier Bourret Sicotte untuk pekerjaan ini).
sumber
Saya tidak tahu bagaimana
K
memengaruhi keakuratan dan generalisasi, dan ini mungkin tergantung pada algoritma pembelajaran, tetapi ini pasti memengaruhi kompleksitas komputasi hampir secara linear (asimptotik, linear) untuk pelatihan algoritma dengan kompleksitas algoritme linear dalam jumlah contoh pelatihan. Waktu komputasi untuk pelatihan meningkatK-1
kali jika waktu pelatihan linier dalam jumlah instance pelatihan. Jadi untuk set pelatihan kecil saya akan mempertimbangkan aspek akurasi dan generalisasi, terutama mengingat bahwa kita perlu mendapatkan hasil maksimal dari sejumlah contoh pelatihan yang terbatas.Namun, untuk set pelatihan besar dan algoritma pembelajaran dengan pertumbuhan kompleksitas komutasional asimptotikal yang tinggi dalam jumlah instance pelatihan (setidaknya linear), saya hanya memilih
K=2
sehingga tidak ada peningkatan waktu komputasi untuk algoritma pelatihan dengan kompleksitas linear asimtotik dalam jumlah contoh pelatihan.sumber
Larutan:
Komentar: Kami juga dapat memilih 20% daripada 30%, tergantung pada ukuran yang ingin Anda pilih sebagai set tes Anda.
Contoh:
Jika ukuran kumpulan data: N = 1500; K = 1500/1500 * 0,30 = 3,33; Kita dapat memilih nilai K sebagai 3 atau 4
catatan:
Nilai K yang besar dalam cuti satu validasi silang akan menghasilkan pemasangan berlebihan. Nilai K yang kecil dalam cuti satu validasi silang akan menghasilkan kurang pas.
Pendekatan mungkin naif, tetapi masih lebih baik daripada memilih k = 10 untuk kumpulan data dengan ukuran yang berbeda.
sumber