Pilihan K dalam validasi silang K-fold

136

Saya telah menggunakan K ganda lintas validasi beberapa kali sekarang untuk mengevaluasi kinerja beberapa algoritma belajar, tapi aku selalu bingung bagaimana aku harus memilih nilai .K

Saya sering melihat dan menggunakan nilai K=10 , tetapi ini tampaknya benar-benar sewenang-wenang bagi saya, dan sekarang saya hanya menggunakan 10 dengan kebiasaan daripada memikirkannya. Bagi saya tampaknya Anda mendapatkan rincian yang lebih baik karena Anda meningkatkan nilai K , jadi idealnya Anda harus membuat Anda Ksangat besar, tetapi ada juga risiko yang bias.

Saya ingin tahu apa nilai K 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?

Charles Menguy
sumber

Jawaban:

69

Pilihan agak arbitrer. Inilah cara saya memutuskan k :k=10k

  • pertama-tama, untuk menurunkan varian hasil CV, Anda dapat dan harus mengulangi / mengulangi CV dengan pemisahan acak baru.
    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.k

  • @ogrisel sudah menjelaskan bahwa biasanya besar berarti lebih sedikit bias (pesimistis). (Beberapa pengecualian dikenal khususnya untuk k = n , yaitu biarkan-satu-keluar).kk=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

    • Untuk cuti satu: kombinasi model / sampel uji yang berbeda dimungkinkan. Iterasi sama sekali tidak masuk akal.(n1)=n=k
    • Misalnya dan : ada kombinasi model / sampel uji yang berbeda. Anda dapat mempertimbangkan untuk melakukan semua kombinasi yang mungkin di sini karena 19 iterasi dari -fold CV atau total 190 model tidak terlalu banyak.n=20( n = 20k=10(n=202)=190=19kk
  • 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.nkn

cbeleites
sumber
6
(+1) untuk elaborasi, tetapi (-1) untuk jumlah pengulangan CV. Memang benar, bahwa risiko membuat duplikat yang tepat (melihat id pengamatan) kecil (diberikan data yang cukup dll.), Tetapi risiko membuat duplikat pola / struktur data sangat tinggi. Saya tidak akan mengulangi CV lebih dari 10 kali, tidak peduli apa k ... hanya untuk menghindari meremehkan varians.
steffen
3
@steffen, bukankah itu yang ditunjukkan ogrisel: bahwa model (pengganti) tidak benar-benar independen? Saya sepenuhnya setuju bahwa ini adalah masalahnya. Sebenarnya, saya mencoba untuk memperhitungkan ini dengan menafsirkan hasil dalam hal stabilitas model (pengganti). bertukar sampel "beberapa" (yang saya tidak ingin uraikan di sini - tetapi lihat misalnya stats.stackexchange.com/a/26548/4598 ). Dan saya tidak menghitung kesalahan standar melainkan melaporkan mis. Median dan hingga persentil dari kesalahan yang diamati atas iterasi. Saya akan memposting pertanyaan terpisah tentang itu. 95 t h5th95th
cbeleites
2
Saya melihat. Saya setuju bahwa pendekatan ini valid untuk memperkirakan stabilitas ibu pengganti. Apa yang saya pikirkan adalah tes statistik tindak lanjut untuk memutuskan apakah satu model mengungguli yang lain. Mengulangi cara cv terlalu sering meningkatkan kemungkinan kesalahan alpha tidak dapat diprediksi. Jadi saya membingungkan batin dengan validasi luar (seperti yang dikran taruh di sini ).
steffen
2
@cbeleites: Saya setuju dengan Anda. Varians karena ukuran sampel yang terbatas biasanya mendominasi ketidakpastian model.
jpcgandre
2
@ jpcgandre: Setidaknya untuk kesalahan klasifikasi seperti sensitivitas, spesifisitas, dll., ketidakpastian karena jumlah total kasus yang diuji dapat dihitung. Walaupun benar bahwa ini hanya bagian dari varian total, paling tidak dalam situasi yang saya temui dalam pekerjaan saya, ketidakpastian ini seringkali sangat besar sehingga bahkan perkiraan kasar cukup untuk menjelaskan bahwa kesimpulan sangat terbatas. Dan batasan ini tetap, tidak akan hilang dengan menggunakan 50x 8 kali lipat atau 80x 5 kali lipat alih-alih 40x10 kali lipat validasi silang.
cbeleites
37

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).

ogrisel
sumber
1
knknk
6
Dengan varian I berarti varian dari perkiraan kesalahan tes yang diharapkan diperoleh dengan mengambil median atau rata-rata dari kesalahan lipatan CV wrt "distribusi benar", bukan di seluruh lipatan CV. Ketika k adalah besar Anda lebih dekat ke LOO-CV yang sangat tergantung pada set pelatihan tertentu yang Anda miliki: jika jumlah sampel kecil, itu tidak bisa jadi mewakili distribusi yang sebenarnya maka varians. Ketika k adalah besar, CV k-fold dapat mensimulasikan sampel keras yang tidak pasti dari set pelatihan.
ogrisel
8
Sebagai tambahan: Kohavi mempelajari bias-varians-tradeoff dalam validasi di bab 3 dari tesis Phd-nya . Saya sangat merekomendasikannya.
steffen
3
KKKK
Ya saya pikir ini adalah intuisi yang benar.
ogrisel
0

Saya tidak tahu bagaimana Kmemengaruhi 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 meningkat K-1kali 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=2sehingga tidak ada peningkatan waktu komputasi untuk algoritma pelatihan dengan kompleksitas linear asimtotik dalam jumlah contoh pelatihan.

Serge Rogatch
sumber
-6

Larutan:

K = N/N*0.30
  • N = Ukuran kumpulan data
  • K = Lipat

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.

Subhash Rajagopal
sumber
4
NN0,3=10,33.33=cHainst.
K = N / N * 0,3 = 10/3 yang merupakan konstanta. Jadi tidak logis menggunakan nilai itu untuk setiap kondisi.
Kamal Thapa