Kompendium teknik cross-validasi

43

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.

user815423426
sumber
Pertanyaan yang hebat ini akan lebih membantu jika kita dapat menghubungkan ke penjelasan masing-masing metode.
mkt - Reinstate Monica

Jawaban:

16

Anda dapat menambahkan ke daftar itu:

  • Validasi lintas berulang
  • Validasi silang keluar-grup-keluar
  • Out-of-bag (untuk hutan acak dan model kantong lainnya)
  • The 632+ bootstrap

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.

Zach
sumber
3
Adakah saran mengenai kapan harus menggunakan masing-masing ini?
whuber
16

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.

Wayne
sumber
1
Ketika Anda mengatakan bahwa "Tahan tidak efisien", saya tidak yakin saya mengikuti. Apa yang Anda maksud dengan efisiensi di sini? Berbeda dengan N-fold biasa, Hold Out tidak berputar melalui lipatan, sehingga harus lebih cepat. Apakah yang Anda maksudkan adalah bahwa lebih buruk dalam memerangi overfitting daripada N-fold CV biasa?
Amelio Vazquez-Reina
2
Dengan "efisien" Maksud saya tidak menggunakan data Anda secara efisien. Keindahan dari K-fold CV adalah 100% data Anda digunakan untuk pelatihan dan 100% data Anda digunakan untuk pengujian, yang membuat penggunaan data Anda lebih efisien. Kuncinya adalah, tentu saja, bahwa semua data Anda tidak digunakan untuk pengujian dan pelatihan pada saat yang sama, yang akan menghasilkan hasil tes cara-optimis (overfitting). Dengan membuat pembagian statis, Hold Out mengatakan bahwa, katakanlah, 1/3 dari data Anda tidak akan pernah digunakan untuk pelatihan, dan 2/3 dari data Anda tidak akan pernah digunakan untuk pengujian, membuang banyak informasi dalam data Anda.
Wayne
@Wayne Bukankah penaksir masalah tidak memiliki asimtotik ? Juga, CV k-fold sederhana lebih rentan terhadap kesalahan tipe II daripada CV k-fold berulang.
chl
@ chl: Saya yakin Anda benar dalam kedua hal. Saya belum pernah menggunakan K-fold CV berulang, tetapi seharusnya memiliki varian yang lebih rendah, yang akan membantu.
Wayne
1

... dan panduan kapan menggunakannya masing-masing ...

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.

civilstat
sumber