Jumlah lipatan optimal dalam validasi silang lipat: apakah CV cuti-keluar selalu merupakan pilihan terbaik?

47

Selain pertimbangan daya komputasi, adakah alasan untuk meyakini bahwa meningkatkan jumlah lipatan dalam validasi silang mengarah pada pemilihan model yang lebih baik / validasi (yaitu bahwa semakin tinggi jumlah lipatan semakin baik)?

Mengambil argumen ke ekstrem, apakah validasi silang meninggalkan-satu-keluar harus mengarah ke model yang lebih baik daripada lipat lintas-validasi?K

Beberapa latar belakang pada pertanyaan ini: Saya sedang mengerjakan masalah dengan sangat sedikit contoh (misalnya 10 positif dan 10 negatif), dan saya khawatir bahwa model saya mungkin tidak menggeneralisasi dengan baik / akan memakai terlalu sedikit data.

Amelio Vazquez-Reina
sumber
1
Thread terkait sebelumnya: Pilihan K dalam validasi silang K-fold .
Amoeba berkata Reinstate Monica
Pertanyaan ini bukan duplikat karena membatasi ke dataset kecil dan "Mengesampingkan pertimbangan daya". Ini adalah batasan yang parah, membuat pertanyaan tidak dapat diterapkan pada mereka yang memiliki dataset besar dan algoritma pelatihan dengan kompleksitas komputasi setidaknya linear dalam jumlah instance (atau prediksi setidaknya dalam akar kuadrat dari jumlah instance).
Serge Rogatch

Jawaban:

46

Validasi silang Leave-one-out umumnya tidak mengarah pada kinerja yang lebih baik daripada K-fold, dan lebih cenderung menjadi lebih buruk , karena memiliki varians yang relatif tinggi (yaitu nilainya berubah lebih banyak untuk sampel data yang berbeda daripada nilai untuk k-fold cross-validation). Ini buruk dalam kriteria pemilihan model karena itu berarti kriteria pemilihan model dapat dioptimalkan dengan cara-cara yang hanya mengeksploitasi variasi acak dalam sampel data tertentu, daripada membuat peningkatan kinerja yang murni, yaitu Anda lebih cenderung over-fit kriteria pemilihan model. Alasan validasi silang keluar satu kali digunakan dalam praktik adalah bahwa untuk banyak model dapat dievaluasi dengan sangat murah sebagai produk sampingan dari pemasangan model.

Jika biaya komputasi bukan merupakan masalah utama, pendekatan yang lebih baik adalah melakukan validasi silang k-fold berulang, di mana prosedur validasi silang k-fold diulangi dengan partisi acak yang berbeda ke dalam himpunan bagian yang terpisah setiap kali. Ini mengurangi varians.

Jika Anda hanya memiliki 20 pola, kemungkinan besar Anda akan mengalami over-fitting kriteria pemilihan model, yang merupakan perangkap yang banyak diabaikan dalam statistik dan pembelajaran mesin (plug shameless: lihat makalah saya tentang topik). Anda mungkin lebih baik memilih model yang relatif sederhana dan mencoba untuk tidak mengoptimalkannya dengan sangat agresif, atau mengadopsi pendekatan Bayesian dan rata-rata atas semua pilihan model, tertimbang oleh masuk akal mereka. Optimalisasi IMHO adalah akar dari semua kejahatan dalam statistik, jadi lebih baik tidak mengoptimalkan jika Anda tidak perlu, dan mengoptimalkan dengan hati-hati setiap kali Anda melakukannya.

Perhatikan juga jika Anda akan melakukan pemilihan model, Anda perlu menggunakan sesuatu seperti validasi silang bersarang jika Anda juga memerlukan perkiraan kinerja (yaitu, Anda perlu mempertimbangkan pemilihan model sebagai bagian integral dari prosedur pemasangan model dan melakukan validasi silang yang demikian juga).

Dikran Marsupial
sumber
8
+1. Saya menyukai pesan "optimisasi adalah akar dari semua kejahatan dalam statistik" ...
S. Kolassa - Reinstate Monica
5
Terima kasih @DikranMarsupial. Saya tidak begitu mengikuti. Mengapa model yang dipelajari dengan leave-one-out memiliki varian yang lebih tinggi daripada dengan validasi k-fold cross? Intuisi saya memberi tahu saya bahwa, karena lintas lipatan kami hanya menggeser satu titik data, pelatihan mengatur lipatan saling tumpang tindih, jadi saya berharap melihat sedikit perbedaan di antara model. Atau pergi ke arah lain, dalam K-fold, jika K rendah, set pelatihan untuk setiap lipatan akan sangat berbeda dan model yang dihasilkan lebih mungkin berbeda. Apakah aku salah?
Amelio Vazquez-Reina
Itu pertanyaan yang sangat bagus, jadi saya sarankan Anda mengajukannya sebagai pertanyaan baru, dan saya akan memikirkan bagaimana menjawabnya!
Dikran Marsupial
Terima kasih @DikranMarsupial. Saya mengikuti saran Anda dan memulai pertanyaan terpisah di sini .
Amelio Vazquez-Reina
1
@DikranMarsupial Saya pikir saya akan menyebutkan di sini bahwa saya telah memulai satu utas lagi yang diilhami oleh komentar "optimasi dalam statistik" Anda dalam jawaban ini. Komentar Anda membuat saya melihat overfitting dari sudut pandang yang lebih luas yang saya terbiasa.
Amelio Vazquez-Reina
8

Memilih angka K terlipat dengan mempertimbangkan kurva belajar

Saya ingin berdebat bahwa memilih jumlah lipatan tepat sangat tergantung pada bentuk dan posisi kurva pembelajaran, sebagian besar karena dampaknya pada bias . Argumen ini, yang meluas hingga meninggalkan-keluar-CV, sebagian besar diambil dari buku "Elemen Pembelajaran Statistik" bab 7.10, halaman 243.K

Untuk diskusi tentang dampak pada varian lihat di siniK

Singkatnya, jika kurva pembelajaran memiliki kemiringan yang cukup besar pada ukuran set pelatihan yang diberikan, validasi silang lima atau sepuluh kali lipat akan melebih-lebihkan kesalahan prediksi sebenarnya. Apakah bias ini merupakan kelemahan dalam praktik tergantung pada tujuannya. Di sisi lain, validasi silang leave-one-out memiliki bias yang rendah tetapi dapat memiliki varian yang tinggi.

Visualisasi intuitif menggunakan contoh mainan

Untuk memahami argumen ini secara visual, pertimbangkan contoh mainan berikut ini di mana kami memasang polinomial derajat 4 dengan kurva sinus berisik:

masukkan deskripsi gambar di sini

Secara intuitif dan visual, kami berharap model ini tidak sesuai untuk dataset kecil karena overfitting. Perilaku ini tercermin dalam kurva belajar di mana kami merencanakan Mean Square Error vs Ukuran pelatihan bersama dengan 1 standar deviasi. Perhatikan bahwa saya memilih untuk merencanakan 1 - MSE di sini untuk mereproduksi ilustrasi yang digunakan dalam ESL halaman 2431±

masukkan deskripsi gambar di sini

Membahas argumennya

Kinerja model meningkat secara signifikan karena ukuran pelatihan meningkat menjadi 50 pengamatan. Meningkatkan jumlah lebih lanjut menjadi 200 misalnya hanya membawa manfaat kecil. Pertimbangkan dua kasus berikut:

  1. Jika rangkaian pelatihan kami memiliki 200 pengamatan, validasi silang kali lipat akan memperkirakan kinerja di atas ukuran pelatihan 160 yang hampir sama dengan kinerja untuk pelatihan yang ditetapkan ukuran 200. Dengan demikian, validasi silang tidak akan mengalami banyak bias dan meningkatkan ke. nilai yang lebih besar tidak akan membawa banyak manfaat ( plot sebelah kiri )5K

  2. Namun jika set pelatihan memiliki pengamatan, validasi silang kali lipat akan memperkirakan kinerja model dibandingkan set pelatihan ukuran 40, dan dari kurva pembelajaran ini akan mengarah pada hasil yang bias. Karenanya peningkatan dalam hal ini akan cenderung mengurangi bias. ( plot kanan ).505K

masukkan deskripsi gambar di sini

[Perbarui] - Komentar pada metodologi

Anda dapat menemukan kode untuk simulasi ini di sini . Pendekatannya adalah sebagai berikut:

  1. Hasilkan 50.000 poin dari distribusi mana varian sebenarnya dari dikenalsin(x)+ϵϵ
  2. Iterasi kali (mis. 100 atau 200 kali). Pada setiap iterasi, ubah dataset dengan resampling poin dari distribusi asliiN
  3. Untuk setiap set data : i
    • Lakukan validasi silang K-fold untuk satu nilaiK
    • Menyimpan rata-rata Mean Square Error (MSE) di seluruh lipatan K
  4. Setelah loop over selesai, hitung mean dan standar deviasi MSE di seluruh dataset untuk nilaiiiK
  5. Ulangi langkah-langkah di atas untuk semua dalam rentang hingga LOOCVK{5,...,N}

Pendekatan alternatif adalah dengan tidak mengubah sampel set data baru di setiap iterasi dan sebagai gantinya perombakan set data yang sama setiap kali. Ini sepertinya memberikan hasil yang serupa.

Xavier Bourret Sicotte
sumber
Mari kita lanjutkan diskusi ini dalam obrolan .
Xavier Bourret Sicotte
@ Terima kasih atas kodenya! Saya telah menjalankan kode tetapi saya tidak mengerti bagaimana Anda mengetahui ( dalam kode Anda). Saya juga berpikir kode Anda akan lebih kompak jika Anda mendefinisikan dua fungsi satu untuk sampel bootstrap (Shuffle = False), satu untuk KFold (Shuffle = True) :)1MSE1112
meTchaikovsky
@me_Tchaikovsky Ingatlah bahwa MSE dari prediktor dapat didekomposisi sebagai dan dengan asumsi tidak ada bias ketika model cocok dengan fungsi mendasar yang sebenarnya maka kita dibiarkan dengan varian dari istilah kesalahan . Varian seragam rv adalah jadi dalam kasus iniMSE=Var+Bias2ϵU(.5,.5)1/12(ba)21/12
Xavier Bourret Sicotte