Pencarian kotak pada validasi silang k-fold


16

Saya memiliki dataset 120 sampel dalam pengaturan validasi silang 10 kali lipat. Saat ini, saya memilih data pelatihan dari ketidaksepakatan pertama dan melakukan validasi silang 5 kali lipat untuk memilih nilai-nilai gamma dan C dengan pencarian kotak. Saya menggunakan SVM dengan kernel RBF. Karena saya sedang melakukan 10 10 validasi silang untuk melaporkan ketepatan, ingat, apakah saya melakukan pencarian kisi-kisi ini dalam data pelatihan setiap ketidaksepakatan (ada 10 penundaan, masing-masing memiliki 10% tes dan 90% data pelatihan)? Bukankah itu terlalu memakan waktu?

Jika saya menggunakan gamma dan C dari holdout pertama dan menggunakannya untuk sisa 9 holdouts dari validasi silang k-fold, apakah itu pelanggaran karena saya akan menggunakan data kereta untuk mendapatkan gamma dan C dan lagi menggunakan bagian dari data kereta sebagai ujian dalam ketidaksepakatan kedua?


Pertanyaan ini membutuhkan informasi lebih lanjut. Model apa yang Anda pas? Apa itu gamma dan C dalam model ini? Selanjutnya, dapatkah Anda memberikan informasi ini dengan mengedit pertanyaan, dan tidak dengan komentar.
probabilityislogic

Jawaban:


14

Ya, ini akan menjadi pelanggaran karena data uji untuk lipatan 2-10 dari validasi silang luar akan menjadi bagian dari data pelatihan untuk lipatan 1 yang digunakan untuk menentukan nilai-nilai kernel dan parameter regularisasi. Ini berarti bahwa beberapa informasi tentang data uji berpotensi bocor ke dalam desain model, yang berpotensi memberikan bias optimis terhadap evaluasi kinerja, yang paling optimis untuk model yang sangat sensitif terhadap pengaturan parameter-hiper (yaitu itu paling tegas mendukung model dengan fitur yang tidak diinginkan).

Bias ini cenderung paling kuat untuk dataset kecil, seperti yang ini, karena varian dari kriteria pemilihan model adalah terbesar untuk dataset kecil, yang mendorong over-fitting kriteria pemilihan model, yang berarti lebih banyak informasi tentang data uji dapat bocor melalui.

Saya menulis makalah tentang ini satu atau dua tahun yang lalu karena saya agak terkejut dengan besarnya bias penyimpangan dari validasi silang bersarang penuh yang dapat diperkenalkan, yang dapat dengan mudah membanjiri perbedaan kinerja antara sistem pengklasifikasi. Makalah ini "Pada Over-fitting dalam Pemilihan Model dan Seleksi selanjutnya Bias dalam Evaluasi Kinerja" Gavin C. Cawley, Nicola LC Talbot; JMLR 11 (Jul): 2079−2107, 2010.

Pada dasarnya menyetel parameter-hiper harus dianggap sebagai bagian integral dari pemasangan model, jadi setiap kali Anda melatih SVM pada sampel data baru, pisahkan parameter-hiper untuk sampel tersebut secara independen. Jika Anda mengikuti aturan itu, Anda mungkin tidak bisa salah. Sebaiknya biaya komputasi untuk mendapatkan estimasi kinerja yang tidak memihak, karena jika tidak, Anda berisiko mengambil kesimpulan yang salah dari eksperimen Anda.


1
Pengalaman pribadi saya membuat saya juga sangat berhati-hati tentang sumber overfitting.
cbeleites mendukung Monica

6

Setelah melakukan pencarian kisi-kisi untuk setiap model pengganti, Anda dapat dan harus memeriksa beberapa hal:

  • variasi parameter yang dioptimalkan (di sini dan C ). Apakah parameter optimal stabil? Jika tidak, kemungkinan besar Anda dalam masalah.γC
  • Bandingkan kinerja laporan validasi lintas dalam dan luar yang dilaporkan.
    Jika validasi silang bagian dalam (yaitu penyetelan) terlihat jauh lebih baik daripada bagian luar (validasi model akhir), maka Anda juga berada dalam masalah: Anda overfitting. Ada risiko besar, bahwa parameter yang disetel tidak optimal sama sekali. Namun, jika validasi silang luar dilakukan dengan benar (semua set tes benar-benar independen dari masing-masing model pengganti), maka setidaknya Anda masih memiliki perkiraan kinerja model yang tidak bias (!). Tetapi Anda tidak dapat memastikan bahwa itu optimal.
  • Seberapa jelas optimalnya? Apakah kinerja menurun dengan cepat untuk parameter suboptimal? Seberapa baik kinerja yang optimal?

Ada banyak hal untuk dikatakan tentang overfitting dengan pemilihan model. Namun, perlu diingat bahwa varians dan bias optimis dapat benar-benar menyakitkan

  • varians berarti bahwa Anda mungkin secara tidak sengaja berakhir cukup jauh dari parameter hiper yang benar-benar optimal.
  • tetapi juga bias bisa menyakitkan: jika Anda overfitting, Anda dapat mengalami situasi di mana banyak model terlihat sempurna untuk validasi salib batin (tetapi mereka tidak benar-benar). Dalam hal ini, penyetelan bisa tersesat karena tidak mengenali perbedaan antara model.
  • Jika bias tergantung pada parameter-hiper, Anda berada dalam masalah besar.

Jika Anda tertarik pada sebuah contoh dan Anda dapat membaca bahasa Jerman, saya dapat membuat tesis Diplom saya online.

Dalam pengalaman saya, menyetel hyperparameters adalah ide yang sangat efektif untuk overfitting ...

Sekarang, jika Anda menyadari bahwa Anda overfitting, Anda memiliki dua pilihan:

  • melaporkan bahwa pengoptimalan memiliki masalah dengan overfitting tetapi Anda melakukan validasi luar yang tepat yang menghasilkan ... (hasil validasi lintas silang).
  • membatasi kerumitan model. Salah satu cara melakukannya adalah memperbaiki parameter-hiper:

Sebagai alternatif untuk menyetel hiper-parameter untuk setiap set pelatihan, Anda bisa menentukan sebelumnya (hiper) parameter (yaitu memperbaikinya sebelumnya). Saya melakukan itu sebanyak mungkin untuk model saya karena saya biasanya memiliki kasus lebih sedikit daripada yang Anda miliki, lihat di bawah.
Namun, perbaikan ini harus benar-benar dan jujur ​​dilakukan sebelumnya: misalnya saya bertanya kepada rekan kerja untuk parameter yang dioptimalkan pada kumpulan data yang serupa (percobaan independen) atau melakukan pra-percobaan, termasuk pencarian grid pada parameter. Eksperimen pertama itu kemudian digunakan untuk memperbaiki beberapa parameter eksperimental serta parameter model untuk eksperimen nyata dan analisis data. Lihat di bawah untuk penjelasan lebih lanjut.

Tentu saja dimungkinkan untuk melakukan pengujian yang tepat pada model yang dioptimalkan secara otomatis (validasi ganda atau bertumpuk), tetapi ukuran sampel Anda mungkin tidak memungkinkan pemisahan data dua kali .
Dalam situasi itu, IMHO jauh lebih baik untuk melaporkan perkiraan jujur ​​untuk model yang dibangun menggunakan pengalaman profesional tentang cara memilih parameter pemodelan daripada melaporkan perkiraan terlalu optimistik pada beberapa jenis model yang dioptimalkan secara otomatis.
Pandangan lain tentang situasi ini adalah Anda harus menukar

  • kinerja yang lebih buruk karena mengesampingkan sekelompok kasus lain untuk optimasi parameter (ukuran sampel pelatihan lebih kecil => model yang lebih buruk, tetapi parameter "optimal")
  • kinerja yang lebih buruk karena perbaikan parameter suboptimal oleh ahli (tetapi pada data pelatihan yang lebih besar).

Beberapa pemikiran serupa tentang pertanyaan serupa: /stats//a/27761/4598


Tentang memperbaiki parameter dan komentar Dikran Marsupial

Saya menggunakan istilah hyper-parameter seperti Dikran Marsupial menggunakannya dalam makalahnya (tautan dalam jawabannya)

Saya bekerja dengan data spektroskopi. Ini adalah semacam pengukuran di mana analisis dan pemodelan data sering kali mencakup sedikit pra-pemrosesan. Ini dapat dilihat sebagai parameter-hiper (misalnya urutan polinomial apa yang harus digunakan untuk garis dasar? Saluran pengukuran apa yang harus dimasukkan?). Ada keputusan lain yang lebih dekat dengan parameter svm Anda, misalnya berapa banyak komponen utama yang akan digunakan jika PCA dilakukan untuk pengurangan dimensi sebelum model "nyata" dilatih? Dan terkadang saya juga menggunakan klasifikasi SVM, jadi saya harus memutuskan parameter SVM.

Sekarang, IMHO cara terbaik untuk memperbaiki hiper-parameter adalah jika Anda memiliki alasan yang berasal dari aplikasi. Misalnya saya biasanya memutuskan jenis baseline apa yang akan digunakan oleh alasan fisik / kimia / biologis (yaitu pengetahuan tentang spesimen dan perilaku spektroskopi yang mengikuti dari itu). Namun, saya tidak mengetahui argumentasi seperti itu yang membantu dengan parameter SVM ...

Kasus pra-percobaan yang saya sebutkan di atas terlihat sebagai berikut:

  • kami mengambil data sekelompok sel (ingin membedakan garis sel yang berbeda).
  • Spektrum dianalisis, iterasi ulang lintas ganda validasi SVM dijalankan (menghabiskan satu atau dua malam di server komputasi).

    • γC
    • Saya juga mengamati overfitting tertentu: validasi lintas luar tidak sebagus hasil tuning. Seperti yang diharapkan.
    • Meski demikian, ada perbedaan kinerja pada rentang tala parameter-hiper, dan kinerja pada tala kisi terlihat cukup mulus. Baik.
  • Kesimpulan saya adalah: sementara saya tidak dapat memastikan bahwa parameter hiper optimal, validasi lintas luar memberi saya perkiraan yang tepat dari kinerja model pengganti.

  • Selama bagian eksperimental, kami memutuskan beberapa perubahan dalam set-up eksperimental (hal-hal yang tidak mempengaruhi sinyal ke kebisingan data, tetapi itu selangkah lebih maju dalam otomatisasi instrumen)

  • Kami meningkatkan pengaturan eksperimental dan memperoleh spektrum baru. Seperti sel, mereka harus tumbuh segar. Yaitu set data baru bahkan batch budaya independen.

Sekarang saya menghadapi keputusan: Haruskah saya "melewatkan" validasi salib batin dan hanya pergi dengan parameter-hyper yang saya tentukan dengan data lama?

  • Seperti yang disebutkan di atas, saya menghadapi risiko bahwa parameter yang ditentukan sebelumnya ini tidak optimal.
  • Tetapi saya juga tidak bisa memastikan untuk mendapatkan hiper-parameter yang benar-benar optimal dengan melakukan validasi silang internal (penyetelan).
  • Namun, penyetelan pada data lama stabil.
  • Dengan melakukan optimasi, saya akan melatih lebih sedikit sampel: Karena saya memiliki terlalu sedikit Sampel (TM) Saya harus berharap untuk mendapatkan model yang lebih buruk jika saya menyisihkan lebih banyak sampel untuk validasi silang putaran kedua.

Jadi dalam hal itu, saya memutuskan untuk menggunakan parameter tetap (dengan pengalaman pada data yang sama dan mengetahui bahwa di masa depan kita harus melakukan "pekerjaan rumah" kita termasuk antara lain memeriksa ulang keputusan ini dengan data besar).

Perhatikan bahwa yang penting adalah bahwa saya melewatkan bagian dalam ( validasi tala lintas), bukan bagian luar. Dengan parameter-tetap hiper saya mendapatkan estimasi yang tidak bias dari kinerja model yang mungkin suboptimal. Memang benar bahwa perkiraan ini tunduk pada varians tinggi, tetapi varians ini pada dasarnya sama apakah saya melakukan penyetelan dalam atau tidak.
Melewati vaidasi lintas luar Saya akan mendapatkan estimasi bias yang optimis dari model yang dicari - yang tergantung pada aplikasi dan data dapat menjadi tidak berharga (jika sangat optimis) dan bias optimis mungkin tidak dapat diterima.


maaf harus membatalkan jawaban ini, tetapi menggunakan nilai yang ditentukan sebelumnya untuk parameter-hiper tidak praktik yang baik karena generalisasi optimal tergantung pada pengaturan yang sesuai untuk parameter ini, yang akan bervariasi dari dataset ke datset (dan untuk masalah akan sedikit data dari sampel untuk sampel). Pencarian kisi-kisi pra-eksperimen bahkan lebih buruk karena menghasilkan bentuk bias yang persis sama yang dibahas dalam makalah saya. Untuk SVM masalah pemisahan data dua kali tidak berlaku karena Anda dapat menggunakan validasi silang virtual keluar-keluar sebagai kriteria pemilihan model di CV bagian dalam, hampir gratis.
Dikran Marsupial

Namun memeriksa variasi dalam parameter yang dioptimalkan adalah saran yang sangat baik. Jika Anda memiliki cukup data sehingga parameter dan hiper-parameter dapat diperkirakan dengan andal dari data, maka jenis bias yang saya sebutkan di makalah saya mungkin tidak akan terlalu menjadi masalah. Namun, jika ada banyak variabilitas dalam nilai-nilai hiper-parameter yang dioptimalkan, karena dataset kecil, itu adalah semacam situasi di mana validasi silang bersarang dan pendekatan ketat lainnya sangat diperlukan untuk menghindari bias substansial dalam estimasi kinerja.
Dikran Marsupial

@DikranMarsupial: Saya menjelaskan latar belakang saya sedikit lebih jelas, lihatlah. Juga, saya membaca makalah Anda lebih teliti. Saya pikir poin kami tidak terlalu jauh. Jika Anda suka, mari kita bertemu dalam obrolan - Saya punya banyak pertanyaan tentang makalah Anda ...
cbeleites mendukung Monica

@DikranMarsupial: (sayangnya, untuk sebagian besar data saya, saya tidak dapat menggunakan satu analitis meninggalkan karena saya memiliki bersarang / struktur data hierarkhi). Juga, saya telah bertemu beberapa kejutan jelek dengan cuti-jadi-jadi saya lakukan validasi k-fold atau out-of-bootstrap. Namun, itu di luar topik untuk pertanyaan ini.
cbeleites mendukung Monica

@DikranMarsupial: Jika parameter yang dioptimalkan tidak stabil, saya bermasalah. Tentu saja, maka saya tidak dapat menyimpulkan bahwa saya dapat menggunakan parameter ini untuk data baru. Tetapi juga, saya tidak akan memanggil mereka (yang mana dari banyak set parameter?) Yang optimal untuk model akhir ... Saya telah melihat optimasi berjalan sangat liar tapi itu selalu datang bersama dengan hasil yang sangat optimistik dari validasi batin (penyetelan) . Dan itu bisa saya ukur dengan membandingkan validasi lintas luar dengan estimasi validasi salib dalam dari model optimal. Diperbarui jawabannya sesuai.
cbeleites mendukung Monica

5

γCkterr(γ,C)γCγ,C{2nl,2nl+1,,2nu}γ

Kuncinya saya pikir adalah mencari beberapa kehalusan di permukaan sekitar minimum lokal (atau setiap proyeksi 1-redup) dan tidak hanya mengambil minimum global.

γ(pσ)1pγCC


Jadi, katakanlah saya memiliki dataset dengan 120 sampel. Haruskah saya menemukan gamma dan C awalnya menggunakan 120 sampel. Lalu lakukan validasi silang 10 kali lipat menggunakan gamma dan C yang sama untuk k holdout saat menggunakan 90% data untuk melatih dan 10% data untuk diuji? Bukankah itu berarti saya menggunakan set pelatihan yang sama untuk mendapatkan gamma dan C dan sebagian sampel juga pada set tes?
user13420

Saya tidak mengerti apa yang Anda maksud dengan menemukan gamma dan C, ini adalah parameter tuning. Dengan Gaussian kernel SVM yang perlu Anda tentukanγC

(γ,C)(γ,C)(γ,C)

2
λβ

2
λβλββ(λ)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.