Validasi silang dan optimasi parameter

14

Saya punya pertanyaan tentang optimasi parameter ketika saya menggunakan validasi silang 10 kali lipat.

Saya ingin bertanya apakah parameter harus diperbaiki atau tidak selama pelatihan model setiap lipatan, yaitu (1) pilih satu set parameter yang dioptimalkan untuk akurasi rata-rata setiap lipatan.

atau

(2) Saya harus menemukan parameter yang dioptimalkan untuk setiap lipatan dan kemudian setiap lipatan menggunakan parameter yang dioptimalkan berbeda untuk melatih modelnya kemudian menguji masing-masing data uji lipatan, dan akhirnya rata-rata akurasi setiap lipatan sebagai hasilnya?

Yang mana adalah metode yang benar untuk validasi silang? Terima kasih banyak.

Kevin
sumber
Pertanyaan ini: stats.stackexchange.com/questions/1826/… memiliki dua jawaban bagus (skor tertinggi), saya pikir mereka dapat membantu Anda dalam pertanyaan Anda. Yang kedua adalah persis apa yang Anda inginkan. OBS .: Saya ingin menulis ini sebagai komentar, tetapi saya tidak bisa melakukannya, jadi saya sudah menjawabnya.
Augusto

Jawaban:

11

Pertama-tama mari kita bedakan antara dua set parameter: parameter model (misalnya bobot untuk fitur dalam regresi), dan parameter untuk algoritma pembelajaran (dan hiperparameter). Tujuan validasi silang adalah untuk mengidentifikasi parameter pembelajaran yang menggeneralisasi dengan baik di seluruh sampel populasi yang kita pelajari dari setiap lipatan.

Lebih khusus: Kami mencari secara global ruang lebih dari parameter pembelajaran, tetapi dalam setiap flip, kami memperbaiki parameter pembelajaran dan mempelajari parameter model. Hasilnya harus menjadi parameter pembelajaran yang menghasilkan rata-rata kinerja terbaik di semua lipatan. Kami kemudian dapat menggunakan ini untuk melatih model pada seluruh dataset.

Joel
sumber
Maaf, jenis parameter yang saya tanyakan adalah hiperparameter seperti yang Anda katakan.
Kevin
Seperti parameter c dan g di libSVM. Jadi, saya harus menggunakan c dan g yang sama untuk melatih setiap model lipatan seperti metode (2) yang saya sebutkan di atas lalu pilih yang terbaik? Terima kasih banyak.
Kevin
2
(1) dan (2) di atas tidak jelas bagi saya jadi saya tidak merujuk mereka secara eksplisit. Anda harus mencari ruang c & g yang memaksimalkan metrik tugas Anda ketika dirata-rata di seluruh lipatan. Jadi, Anda mengatur nilai c & g pada beberapa nilai, menjalankan prosedur pelatihan dan pengujian pada semua lipatan, rata-rata, simpan skor itu, modifikasi c atau g, dan ulangi. Pada akhirnya, Anda menemukan c & g terbaik, dan Anda dapat melatih model akhir pada semua data Anda.
Joel
Terima kasih banyak. Saya mencoba merangkum jawabannya. Data dibagi menjadi 10 kali lipat: lipat-1: (train1, test1) ... lipat-10: (train10, test10) Kemudian gunakan a (c1, g1) untuk melatih dan uji pada flip-1 hingga lipat-10, akurasi rata-rata semua lipatan. Coba yang lain (c2, g2) untuk melakukan proses yang sama ... ulangi sampai saya menemukan yang terbaik (c, g). Dan akurasi rata-rata (c, g) terbaik akan menjadi hasil dari validasi silang 10 kali lipat saya.
Kevin
1
Kedengarannya benar ...
Joel
16

Saya pikir jawaban yang diterima saat ini tidak lengkap dengan cara yang tidak menguntungkan. Saya tidak setuju dengan kalimat itu

Tujuan validasi silang adalah untuk mengidentifikasi parameter pembelajaran yang menggeneralisasi dengan baik di seluruh sampel populasi yang kita pelajari dari setiap lipatan.

Ini memang satu aplikasi yang sangat penting dari validasi silang, tetapi bukan satu-satunya. Biasanya, Anda ingin melakukan dua hal:

  1. Bangun model terbaik yang Anda bisa
  2. Dapatkan kesan akurat tentang seberapa baik kinerjanya

Sekarang, untuk menyelesaikan tujuan 1 tergantung pada algoritma Anda, Anda mungkin perlu menyetel beberapa hiperparameter dan ini memang sering dilakukan dengan validasi silang. Tetapi ini belum membantu Anda dengan tujuan 2. Untuk ini, pada dasarnya Anda perlu membuat validasi silang, seperti ini:

  • Pisahkan seluruh data menjadi n lipatan
  • Untuk masing-masing, lipat terpisah data pelatihan lagi menjadi subfold
  • Gunakan validasi silang pada subfold untuk mempelajari hiperparameter yang baik
  • Dengan hyperparameter ini membangun model pada data pelatihan lipatan itu
  • Uji model pada data uji
  • Ulangi pada lipatan berikutnya

Untuk membangun model yang baik, Anda hanya perlu validasi salib batin. Anda masih perlu melakukannya untuk mendapatkan model yang bagus. Tetapi untuk mendapatkan perkiraan yang baik dari kinerja model Anda, Anda perlu melakukan seluruh proses pembangunan model di dalam skema validasi silang. Ini juga termasuk langkah-langkah seperti imputasi, dll.

Erik
sumber
1
Erik, bisakah Anda memberikan referensi tentang bagaimana melakukan proses ini?
chao
Hai @ Erik, demikian juga urutan analisis umumnya adalah (1) Temukan parameter penyetelan optimal dengan cross-validation, (2) Retrain model (dengan parameter penyetelan yang didapat) pada seluruh dataset pelatihan untuk mendapatkan parameter model, dan (3) ) Lihat perkiraan kinerja keseluruhan metode ini dengan menggunakan validasi silang bersarang? Yang saya bingung adalah bahwa hiperparameter yang berbeda dapat dipilih dalam proses nester CV, sehingga CV bersarang tidak akan secara khusus menyelidiki kinerja keseluruhan dari parameter hyperparameter / model yang kami peroleh di atas?
Michelle
1
Saya agak terlambat ke percakapan, tetapi saya ingin menunjukkan metode ini juga disebut "bersarang" atau "validasi silang ganda" dan inilah penjelasan yang bagus oleh Tom Fearn dan contoh dengan kode di scikit- belajar dokumentasi
MD004