Validasi Silang (generalisasi kesalahan) setelah pemilihan model

21

Catatan: Kasing adalah n >> p

Saya membaca Elemen Pembelajaran Statistik dan ada berbagai menyebutkan tentang cara "benar" untuk melakukan validasi silang (misalnya halaman 60, halaman 245). Secara khusus, pertanyaan saya adalah bagaimana mengevaluasi model akhir (tanpa set tes terpisah) menggunakan k-fold CV atau bootstrap ketika telah ada pencarian model? Tampaknya dalam sebagian besar kasus (algoritme ML tanpa pemilihan fitur yang disematkan) akan ada

  1. Langkah pemilihan fitur
  2. Langkah pemilihan parameter meta (misalnya parameter biaya dalam SVM).

Pertanyaan saya:

  1. Saya telah melihat bahwa langkah pemilihan fitur dapat dilakukan di mana pemilihan fitur dilakukan pada seluruh pelatihan dan disisihkan. Kemudian, menggunakan k-fold CV, algoritma pemilihan fitur digunakan di setiap flip (mendapatkan fitur yang berbeda mungkin dipilih setiap kali) dan kesalahan rata-rata. Kemudian, Anda akan menggunakan fitur yang dipilih menggunakan semua data (yang disisihkan) untuk melatih mode terakhir, tetapi gunakan kesalahan dari validasi silang sebagai perkiraan kinerja model di masa mendatang. APAKAH INI BENAR?
  2. Ketika Anda menggunakan validasi silang untuk memilih parameter model, lalu bagaimana cara memperkirakan kinerja model sesudahnya? APAKAH PROSES YANG SAMA SESUAI DENGAN # 1 DI ATAS ATAU HARUS ANDA MENGGUNAKAN CV YANG SESUAI TAMPILKAN PADA HALAMAN 54 ( pdf ) ATAU SESUATU YANG LAIN?
  3. Ketika Anda melakukan kedua langkah (pengaturan fitur dan parameter) ..... lalu apa yang Anda lakukan? loop bersarang kompleks?
  4. Jika Anda memiliki sampel penahan terpisah, apakah masalah itu hilang dan Anda dapat menggunakan validasi silang untuk memilih fitur dan parameter (tanpa khawatir karena perkiraan kinerja Anda akan berasal dari set penahan)?
B_Miner
sumber
@ user2040 (+1) Pertanyaan-pertanyaan itu memang sangat bagus! Pertanyaan yang agak terkait dapat ditemukan di sini: Pemilihan fitur untuk model "final" saat melakukan cross-validasi dalam pembelajaran mesin .
chl
@chi Terima kasih, saya telah melihat posting itu. Apakah Anda pikir saya berada di jalur yang benar dengan proses pemikiran saya setidaknya? Tampaknya satu set tes independen memungkinkan kita untuk lebih liberal dalam menggunakan CV untuk pemilihan fitur dan penyetelan / pemilihan model. Jika tidak, loop bersarang tampaknya diperlukan untuk melatih, menyetel, dan memperkirakan generalisasi kesalahan, semua menggunakan data pelatihan yang sama.
B_Miner

Jawaban:

18

Hal utama yang perlu diingat adalah bahwa untuk validasi silang untuk memberikan (hampir) estimasi kinerja yang tidak bias setiap langkah yang terlibat dalam pemasangan model juga harus dilakukan secara independen di setiap lipatan prosedur validasi silang. Hal terbaik untuk dilakukan adalah melihat pemilihan fitur, pengaturan meta / hyper-parameter dan mengoptimalkan parameter sebagai bagian integral dari pemasangan model dan tidak pernah melakukan salah satu dari langkah-langkah ini tanpa melakukan dua lainnya.

Bias optimis yang dapat diperkenalkan dengan keluar dari resep itu bisa sangat besar, seperti yang ditunjukkan oleh Cawley dan Talbot , di mana bias yang diperkenalkan oleh keberangkatan yang tampaknya jinak lebih besar daripada perbedaan kinerja antara pengklasifikasi yang bersaing. Protokol yang lebih buruk masih lebih menyukai model buruk, karena mereka lebih sensitif terhadap penyetelan parameter-hiper dan karenanya lebih rentan terhadap kriteria pemilihan model yang terlalu pas!

Jawaban untuk pertanyaan spesifik:

Prosedur dalam langkah 1 ini valid karena pemilihan fitur dilakukan secara terpisah di setiap lipatan, jadi yang Anda validasi silang adalah seluruh prosedur yang digunakan agar sesuai dengan model akhir. Perkiraan cross-validasi akan memiliki sedikit bias pesimis karena dataset untuk setiap flip sedikit lebih kecil dari seluruh dataset yang digunakan untuk model akhir.

Untuk 2, karena validasi silang digunakan untuk memilih parameter model maka Anda perlu mengulangi prosedur itu secara independen di setiap lipatan validasi silang yang digunakan untuk estimasi kinerja, Anda berakhir dengan validasi silang bersarang.

Untuk 3, pada dasarnya, ya Anda perlu melakukan validasi silang bersarang-bersarang. Pada dasarnya Anda perlu mengulangi di setiap lipatan validasi silang terluar (digunakan untuk estimasi kinerja) semua yang ingin Anda lakukan agar sesuai dengan model akhir.

Untuk 4 - ya, jika Anda memiliki set hold-out yang terpisah, maka itu akan memberikan estimasi kinerja yang tidak bias tanpa perlu validasi silang tambahan.

Dikran Marsupial
sumber
kembali jawaban Anda ke Q1. Itu masalahnya bukan? Sangat sering kita berpikir kita memvalidasi silang model, padahal sebenarnya kita memvalidasi silang prosedur pemodelan. Perbedaannya mungkin filosofis, karena ketika Anda menuliskan matematika, f dapat berarti model atau prosedur pemodelan. Tapi kemudian orang bisa bertanya, apakah prosedur yang kita inginkan validasi silang, atau validasi silang model. Apa yang kamu pikirkan?
qoheleth
Anda tidak dapat memvalidasi silang model karena model bergantung pada sampel data yang dilatihnya, segera setelah Anda memasangkannya ke sampel data yang berbeda, model tersebut berbeda. Poin saya benar-benar membuat ada adalah bahwa jika Anda menyesuaikan model dengan cara apa pun pada seluruh sampel data (misalnya dengan melakukan pemilihan fitur), validasi silang akan memberikan perkiraan optimis generalisasi karena partisi uji telah digunakan untuk menyetel aspek model (yaitu set fitur yang digunakan). HTH.
Dikran Marsupial
Saya tidak tahu apakah boleh melanjutkan diskusi kami di bagian komentar, tetapi sampai seseorang mengatakan sebaliknya ... Ya, saya mengerti maksud Anda tentang CV perlu dilakukan pada tingkat terluar dan saya tidak keberatan. Bahkan, saya baru saja memberikan saran yang sama kepada rekan saya kemarin. Saya hanya menunjukkan bahwa kita sering tidak yakin apa yang kita validasi silang. Pada saat yang sama saya bertanya-tanya apakah mendapatkan evaluasi pada model, daripada prosedur pemodelan, adalah apa yang sebenarnya kita inginkan. Obat mungkin salah satu yang bisa berpikir bahwa ia menggunakan kesalahan prosedur untuk memperkirakan kesalahan model. Mungkin ini berhasil.
qoheleth
Kami tidak bisa mendapatkan perkiraan langsung kinerja model tertentu tanpa memiliki set uji eksternal. Namun, kinerja metode untuk menghasilkan model merupakan proksi yang masuk akal untuk kinerja model itu sendiri, asalkan keseluruhan metode yang divalidasi silang. Dengan kata lain, saya setuju dengan ringkasan dalam kalimat terakhir Anda!
Dikran Marsupial
5

Saya telah melakukan analisis validasi silang yang luas pada set data yang membutuhkan biaya jutaan, dan tidak ada set validasi eksternal yang tersedia. Dalam hal ini, saya melakukan validasi silang bersarang yang luas untuk memastikan validitas. Saya memilih fitur dan parameter yang dioptimalkan hanya dari set pelatihan masing-masing. Ini mahal secara komputasi untuk set data besar, tetapi itulah yang harus saya lakukan untuk mempertahankan validitas. Namun, ada komplikasi yang menyertainya ... misalnya, fitur yang berbeda dipilih di setiap set pelatihan.

Jadi jawaban saya adalah bahwa dalam kasus di mana Anda tidak memiliki akses yang layak ke set data eksternal, ini adalah cara yang masuk akal untuk pergi. Ketika Anda memang memiliki set data eksternal, Anda dapat pergi ke kota dengan cara yang Anda inginkan pada set data utama dan kemudian menguji sekali pada set data eksternal.

pengguna2643
sumber
@ user2643: Apakah Anda memiliki referensi untuk dibagikan tentang cara Anda membuat CV bersarang? Apakah itu sejalan dengan pdf yang saya tautkan dalam pertanyaan saya? Juga ..... apakah ini data pemasaran data secara kebetulan?
B_Miner
@ user2643 Masalah dengan pendekatan itu (yang benar) adalah bahwa itu hanya menghasilkan kriteria tunggal untuk akurasi (klasifikasi) atau presisi (regresi); Anda tidak akan bisa mengatakan "itu adalah fitur yang paling menarik" karena mereka bervariasi dari satu lipatan ke lipatan lainnya, seperti yang Anda katakan. Saya telah bekerja dengan data genetik (600k variabel) di mana kami menggunakan 10 kali lipat CV dengan pemilihan fitur tertanam, di bawah skema permutasi (k = 1000, untuk merasa nyaman pada level 5%) untuk menilai keandalan temuan. Dengan cara ini, kita dapat mengatakan: "model kita digeneralisasikan dengan baik atau tidak", tidak lebih.
chl
2
Jika fitur bervariasi dari lipatan ke lipatan itu berarti bahwa tidak ada informasi yang cukup untuk dengan percaya diri mengidentifikasi fitur-fitur yang berguna, jadi saya akan melihat bahwa sebagai keuntungan dari validasi silang (hanya dengan melihat hasil dari model tunggal kemungkinan akan memiliki kriteria pemilihan fitur yang terlalu sesuai dan karenanya menyesatkan). Untuk masalah dengan banyak fitur dan beberapa pengamatan, regresi ridge sering memberikan kinerja yang lebih baik, jadi kecuali mengidentifikasi fitur adalah tujuan utama, seringkali lebih baik untuk tidak melakukan pemilihan fitur.
Dikran Marsupial
np
@ user2040: Maaf atas jawaban yang terlambat. Saya membuat implementasi perangkat lunak saya sendiri dari pendekatan CV bersarang. Karena penelitian saya terkait dengan bioinformatika, saya berencana untuk segera mengirimkan deskripsi perangkat lunak ke jurnal bioinformatika. Tetapi dapat digunakan dalam domain penelitian apa pun. Jika Anda tertarik untuk mencobanya, beri tahu saya. goldfish1434 di yahoo dot com
user2643